java中变量赋值的理解

1.当赋值的值超出声明变量的范围时候,会报错!
byte a =200 //会报错,因超出范围。
byte a =(byte)200;//进行一个强制转换,就不会报错,不过会超出范围,超出部分会从头开始加,
由于byte的范围为-128~127,所以是-128+73为所得结果。
2.声明一个整数类型时候,默认都是int类型(4个8位);如果具体的数值比声明变量的取值范围小,则不报错。
例:short a =222;
3.long l = 88888888888l 很明显,这一长串数字是好超过int的取值范围的,所以会报错,但是因为不超过long的取值范围,
所以我们可以声明一个long变量来装它, 不过需要在后边加“l”(不区分大小写)。
4.声明一个float变量,如 float f = 12.555;因为声明一个小数默认的类型是double类型(8个八位), 所以;由高精度转换为低精度的float(4个8位)型时,会丢失精度报错,在后边加”f“就将其转换成float类型,就不会报错了。
5.char 用来声明一个字符,char c = 'e'; System.out.println(c);输出的是这个字符,不过进行运算时候
使用变量的ascll编码的位置。
char c2 = ' ';表示换行; 进行运算时候运算的也是其位置!
6.类型转换优先级:double float long int char short byte
7.short s = 133;
char c = 'a';
short s1 = s+c; 输出结果会报错,因为两个数相加,默认为int类型,用short来装它,会报损失精度的错误,
此时需要加上一个强制转换:short s1 = (short)(s+c);
8.隐式转换:由低精度自动转换为高精度;例:long l = 5834;默认数值类型都为int类型,但是,你既然
用long来声明,你的精度比我还高,那我就不说什么了,默默地转过去吧。
9.显示转换:也叫强制转换,一般由高精度转向低精度。比如short s1 = (short)(s+c);我本来比你精度高,我是
int,你却用低精度的short来装我,我肯定不同意(报错),说以,得强制转换,不同意也得同意。
10.+= 的赋值原理:byte b = 4;char c = 0.4;b += c;由于char优先级比byte要高,所以b = b+c,
是要报错的,不过b += c,却不报错,因为它先把c的值赋给b,赋值之后,b就成char
类型了,然后再加上b的值,char的优先级要高,所以不会报错。







原文地址:https://www.cnblogs.com/donghb/p/7162347.html