小白Java笔记——基本类型的类型转换和表达式类型的自动提升
2017-12-04 16:07
483 查看
前言:Java语言提供的7种数值类型转换有两种方式:自动类型转换和强制类型转换。
一、自动类型转换
表数范围小的可以直接自动转换成表数范围大的
具体例子不祥写了,唯独需要注意的是:把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串,就像上一篇里面的例子,boolean值转换成字符串
方法就是把基本类型的值和空字符串用+进行连接即可
http://blog.csdn.net/lunatic_fei/article/details/78657767
结果:
解释:第一个会执行3+4,两个整数之间的加法运算,最后变成7+”Hello!“,这是由于后面跟了字符串,所以加号在这里充当连接的作用,把7转换成了字符串;
至于第二个,因为第一个就是字符串”Hello!“,那么紧挨着的加号就又充当了连接的作用,所以后面的3就转换成了字符串形式,即Hello!3,那么同理,在其后面紧挨的加号又是连接的作用,所以4也被当成字符串。
二、强制类型的转换
如果要把上面的图片中,箭头右边要转换成左边的类型,就需要强制转换。通俗的说就是大瓶子的水倒在小瓶子里;
缩小转换(Narrow Conversion):如果大瓶子里的水很多,那么倒在小瓶子里就会溢出,引起数据丢失。
以及经常出错的代码:
经常见到的“随机生成六个字母验证码”例子:
值得提的是,字符串类型转换成基本类型的情况,不能直接转换——而是通过基本类型对应的包装类(后面会详细介绍,这里简单一提)
三、表达式类型的自动提升
一个算数表达式有多个基本数据类型时,会发生数据类型自动提升,规则如下:
1.所有的byte、char和short类型自动提升为int类型;
2.整个表达式的数据类型自动提升到最高级操作数同样的类型,操作数等级排列如图(从左到右等级一次增加):
举个例子;
一、自动类型转换
表数范围小的可以直接自动转换成表数范围大的
具体例子不祥写了,唯独需要注意的是:把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串,就像上一篇里面的例子,boolean值转换成字符串
方法就是把基本类型的值和空字符串用+进行连接即可
http://blog.csdn.net/lunatic_fei/article/details/78657767
System.out.println(3+4+"Hello!"); System.out.println("Hello!"+3+4);
结果:
7Hello! Hello!34
解释:第一个会执行3+4,两个整数之间的加法运算,最后变成7+”Hello!“,这是由于后面跟了字符串,所以加号在这里充当连接的作用,把7转换成了字符串;
至于第二个,因为第一个就是字符串”Hello!“,那么紧挨着的加号就又充当了连接的作用,所以后面的3就转换成了字符串形式,即Hello!3,那么同理,在其后面紧挨的加号又是连接的作用,所以4也被当成字符串。
二、强制类型的转换
如果要把上面的图片中,箭头右边要转换成左边的类型,就需要强制转换。通俗的说就是大瓶子的水倒在小瓶子里;
缩小转换(Narrow Conversion):如果大瓶子里的水很多,那么倒在小瓶子里就会溢出,引起数据丢失。
//强制转换的规范定义 int iValue = 233; byte bValue = (byte)iValue;
以及经常出错的代码:
//因为默认5.6是double类型,所以会出错 float a = 5.6; //正确的改法之方法一: float a = (float)5.6; //方法二: float a = 5.6f;
经常见到的“随机生成六个字母验证码”例子:
//实现这个功能的代码有很多种,初学就挑最简单的先理解,后续继续补充 public class RandomStr{ public static void main(String[] args){ String result = ""; for(int i=0 ;i<6;i++){ //Math.random()方法是随机生成0~26之间的小数,也就是0.**~25.**再加上97得到97.**~112.**的数,也就是ASCII对应的小写字母(大写65-96),最后通过强制转换成int类型,就变成了97~112的整数; int intval = (int)(Math.random()*26+97); //通过强制类型转换成char字符,结果就会输出对应的小写字符;如果不强制,只会输出ASCII的数值,通过与空字符连接转换字符串输出。 result = result+(char)intval; } System.out.println(result); } }
值得提的是,字符串类型转换成基本类型的情况,不能直接转换——而是通过基本类型对应的包装类(后面会详细介绍,这里简单一提)
String a = "45"; int intval = Integer.parseInt(a);
三、表达式类型的自动提升
一个算数表达式有多个基本数据类型时,会发生数据类型自动提升,规则如下:
1.所有的byte、char和short类型自动提升为int类型;
2.整个表达式的数据类型自动提升到最高级操作数同样的类型,操作数等级排列如图(从左到右等级一次增加):
举个例子;
byte b = 40; char c = 'a'; int i = 23; double d = .314; //右边最高级别是double,所以自动提升为double double result = b+c+i*d; System.out.println(result);
相关文章推荐
- java学习个人笔记---表达式类型的自动提升
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- JAVA学习笔记22——基本数据类型包装类+自动装、拆箱+初识Date类
- Java -- 表达式类型的自动提升
- AVA学习笔记之变量类型转换和类型自动提升
- java表达式类型的自动提升
- Java复习笔记(四)——Java基本类型的类型转换
- 黑马程序员—Java基础学习笔记之数据类型转换(自动转换和强制转换)
- Java表达式类型自动提升
- java表达式中类型的自动提升
- JAVA——基本数据类型之间的自动转换
- 《黑马程序员》java笔记->基本数据类型包装类及自动拆箱装箱原理,数组排序练习字符串切割
- 【慕课笔记】第三章 JAVA中必须了解的常用类 第2节 JAVA中基本类型和包装类之间的转换
- 马士兵Java课堂笔记-2-基本数据类型转换问题
- java表达式类型的自动提升
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- java 基本数据类型及自动类型提升
- (1)、JAVA 学习点滴、复合语句、表达式中的自动类型提升
- Core Java 学习笔记——2.基本数据类型&类型转换
- java表达式类型的自动提升