java类型转换
2016-04-17 22:42
344 查看
类型转换分为两种:隐式类型转换和显示类型转换
一、隐式类型转换
从取值范围小的–>取值范围大的,系统会自动执行
程序不会出错,输出为2147483653;
很好理解,此程序相当于把int转换为long,而int的范围被long包围,所以int类型也是long类型。int占四个字节,long占8个字节,在进行计算的时候将int前面加上四个字节,00000000 00000000 00000000 00000000
二、显式类型转换
范围大的–>范围小的,必须使用显式类型转换,如果将一中的代码修改如下,
输出结果为-2147483643,因为2147483648已经超出int范围,强行将long转为int就会出错
以下程序也是错误的
修改为
输出25 30
三、
java中数字默认是int型的,但第一行中并不会报错,是因为第一行的b是确定的,就等于5,java会计算出5并不会超出byte的范围,所以正确;第二行就会报错,因为b = b + 1中的第二个b是个变量,并不能确定具体数值,如果b=127,那么相加后所得到的变量b就会超出byte范围。
四、字符型的转换
输出结果为a 98
char类型占两个字节,97在char范围内,可以将其转换为char类型的字符,所以输出a
‘a’是97,向上转换为int,所以相加后是int类型,如果想显示字符类型,可以用强制类型转换,只要在char范围内
五、+=是赋值运算符
一、隐式类型转换
从取值范围小的–>取值范围大的,系统会自动执行
public static void main(String[] args) { int a = 5; long b = 2147483648L;// java默认整数类型为int超出int类型的数要在后面加L b = a + b; System.out.println(b); }
程序不会出错,输出为2147483653;
很好理解,此程序相当于把int转换为long,而int的范围被long包围,所以int类型也是long类型。int占四个字节,long占8个字节,在进行计算的时候将int前面加上四个字节,00000000 00000000 00000000 00000000
二、显式类型转换
范围大的–>范围小的,必须使用显式类型转换,如果将一中的代码修改如下,
public static void main(String[] args) { int a = 5; long b = 2147483648L;// java默认整数类型为int超出int类型的数要在后面加L a = a + (int) b; System.out.println(a); }
输出结果为-2147483643,因为2147483648已经超出int范围,强行将long转为int就会出错
以下程序也是错误的
public static void main(String[] args) { int a = 25.3; //出错 int b = 5; long c = 25; b = b + c; //出错 System.out.println(a + "" + b); }
修改为
public static void main(String[] args) { int a = (int) 25.3; int b = 5; long c = 25; b = b + (int) c; System.out.println(a + "" + b); }
输出25 30
三、
public static void main(String[] args) { byte b = 5; b = b + 1; //出错 System.out.println(b); }
java中数字默认是int型的,但第一行中并不会报错,是因为第一行的b是确定的,就等于5,java会计算出5并不会超出byte的范围,所以正确;第二行就会报错,因为b = b + 1中的第二个b是个变量,并不能确定具体数值,如果b=127,那么相加后所得到的变量b就会超出byte范围。
四、字符型的转换
public static void main(String[] args) { char ch = 97; System.out.println(ch); char ch2 = 'a'; System.out.println(ch2 + 1); }
输出结果为a 98
char类型占两个字节,97在char范围内,可以将其转换为char类型的字符,所以输出a
‘a’是97,向上转换为int,所以相加后是int类型,如果想显示字符类型,可以用强制类型转换,只要在char范围内
五、+=是赋值运算符
public static void main(String[] args) { short s = 4; s = s + 5;//编译失败 s += 5;//编译通过,会做自动转换,如short s = 4; }
相关文章推荐
- java可重入锁ReentrantLock原理
- JSR-303验证框架在Springmvc中的应用
- Java断言
- 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告
- 2.为什么在写了equals方法之后还要写hashcode方法
- java设计模式之观察者模式
- JAVA常见问题解决办法汇总
- 20145320 《Java程序设计》第七周学习总结
- 导入外部jar包的方法
- eclipse创建MAVEN仓库项目
- java学习笔记(2)基本数据类型对象包装类
- json中date类型数据为空造成转JAVA对象失败
- 20145127《java程序设计》第七周学习总结
- Spring-1 之入门
- 20145335郝昊《java程序设计》第7周学习总结
- Eclipse常用快捷键
- 20145310 《Java程序设计》第7周学习总结
- Java 继承与接口
- 20145118《Java程序设计》 第7周学习总结
- java 面向对象