1.7—Java基本类型转化及常见错误和问题

数据类型的转换 

自动类型转换

自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。在图1所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会精度的损失。



图1 自动类型转换

可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

【示例1】自动类型转换特例

short  b = 12;        //合法

short  b = 1234567;    //非法

强制类型转换

强制类型转换(Cast),又被称为造型,用于显式的转换一个数值的类型。 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

语法格式:

         (type)var

运算符“()”中的type表示将值var想要转换成的目标数据类型。

【示例2】强制类型转

double x  = 3.14;

int nx = (int)x;   //值为3

char c = ‘a‘;

int d = c+1;

System.out.println(nx);

System.out.println(d);

System.out.println((char)d);


示例2 运行效果图

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

【示例3】强制类型转换特例

int x = 300; 
byte bx = (byte)x;    //值为44

新手雷区
 
 不能在布尔类型和任何数值类型之间做强制类型转换

基本类型转化时常见错误和问题

操作比较大的数时,要留意是否溢出,尤其是整数操作时。

【示例4】常见问题一

int money = 1000000000;      //10亿

int years = 20;

int total = money*years;    //返回的是负数

long totall = money*years;  //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失

long total2 = money*((long)years);   //先将一个因子变成long,整个表达式发生提升。全部用long来计算。

L和l 的问题:

不要命名名字为l的变量,l容易和1混淆。

long类型使用大写L不要用小写。

【示例5】常见问题二

int l = 2;

long a = 23451l;

System.out.println(l+1);

简单的键盘输入和输出

【示例6】使用键盘获取输入

import java.util.Scanner;

public class  Welcome{

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

//将输入的一行付给string1

String string1 = scanner.nextLine();

//将输入单词到第一个空白符为止的字符串付给string2

String string2 = scanner.next(); 

//将输入的数字赋值给变量

int a = scanner.nextInt(); 

System.out.println("-----录入的信息如下-------");

System.out.println(string1);

System.out.println(string2);

System.out.println(a*10);

}

};


示例6 运行效果图



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

时间: 2024-10-13 23:27:12

1.7—Java基本类型转化及常见错误和问题的相关文章

初识JAVA(二)(送给Java和安卓初学者)----常见错误

博主接着上篇的来讲哦,以后的更新中,博主会出一些练习题,有兴趣的可以做做然后吧代码粘贴到下面,大家可以一起研究学习,一起进步,本篇文章主要讲的是: 一.常见错误 二.连接上篇一起的训练 无论是什么方向的语言,甚至无论是什么行业的人,都会犯错,只要你有生命,你就会犯错,马云大哥这么牛,他也是一步步犯错,一步步改,才走到现在是吧,同样来说,你无论是大神,还是大侠甚至是某个语言的教父级人物,写代码也有出错的时候,有时候是不知道何时为何出的错,有时候是故意制造的错误(大家注意,以后在java开发中啊,编

java中类型转化及例题

1.自动转换类型:容量小的数据类型与容量大的数据类型做运算,容量小的会自动转换为容量大的数据类型. 2.自动转换:char,byte,short=>int=>long=>float=>double.Char,byte,short之间做运算默认的是int类型. 3.强制类型转换:容量大的转换为容量小的,要使用强制类型转换符:(),可能导致精度损失. 例:long l1=121345; Int m1=(int)l1; System.out.println(ml) 4.字符串(strin

java基本类型与Hadoop常见基本类型的对照

Long LongWritable Integer IntWritable Boolean BooleanWritable String Text 1.java类型转化为hadoop基本类型 调用hadoop类型的构造方法,或者调用set()方法. new LongWritable(123L); 2.hadoop基本类型转化为java类型? 对于Text,需要调用toString()方法,其他类型调用get()方法.

从0开始学java——Tomcat的安装及其常见错误排查(zz)

来源: <http://www.cnblogs.com/xdp-gacl/p/3729033.html> 学习web开发,为什么必须要先装一个WEB服务器? 在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了.这说明什么问题? 1.不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者. 2.WEB服务器就是

java.sql.ResultSet.next() 光标常见错误总结分析

java.sql.ResultSet.next() Moves the cursor forward one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to the method next makes the first row the current row; the second call makes the se

C#编程的五个常见错误

[转自e良师益友网]尽管本文讨论的大多数错误是针对 C# 的,有些错误与其他以 CLR 为目标的语言,或者用到了 Framework Class Library (FCL) 的语言也相关.下面描述的五个常见错误: 常见错误1: 把引用当做值来用,或者反过来 C++ 和其他很多语言的程序员,习惯了给变量赋值的时候,要么赋单纯的值,要么是现有对象的引用.然而,在C# 中,是值还是引用,是由写这个对象的程序员决定的,而不是实例化对象并赋值的程序员决定的.这往往会坑到 C# 的新手程序员. 如果你不知道

java对byte,short,char,int,long运算时自动类型转化情况说明

大家都知道,在进行运算时,java会隐式的自动进行类型转化,那么有哪些情况会进行转化呢?总结如下: 一.算术运算符 单目运算符:+(取正)-(取负) ++(自增1) --(自减1) 1.1 +(取正)-(取负) 当操作数是byte,short,char时,会自动转化为int类型:返回结果为int. 当操作数是int,long时,不转化,原来是啥类型,还是啥类型. 1.2 ++(自增1) --(自减1) 不管操作数是啥类型,不转化. 双目运算符:+ - * / %(取余) 1.3 + - * /

Java中byte、short、char、int、long运算时自动类型转化问题

-------------------------------------------------------------------------------------------------- ★★自动(隐式.默认)类型转换与强制(显式)类型转换★★ 1) boolean类型不参与转换 2) 默认转换 A:从小到大 B:byte,short,char --? int --? long --? float --? double C:byte,short,char之间不相互转换,直接转成int类

java基本类型与引用类型

目录java基本类型与引用类型目录一基本数据类型二引用类型三基本类型与引用类型的区别默认值内存分配自动装箱自动拆箱自动装箱拆箱带来的问题程序的性能空指针异常对象相等比较时一.基本数据类型java中一共分为8种基本数据类型:byte.short.int.long.float.double.char.boolean,其中byte.short.int.long是整型.float.double是浮点型,char是字符型,boolean是布尔型. 二.引用类型java为每种基本类型都提供了对应的封装类型,