java代码基础文档 java的基础代码( 七 )


其他类型转换为double类型:byte、char、short、int、long、float–double
1
2
强制类型转换
强制类型转换也叫显示类型转换,指的是两种数据类型之间的转换需要进行显示地声明 。当两种类型彼此不兼容 , 或者目标类型取值范围小于源类型,自动类型转换无法进行,这时就需要进行强制类型转换 。
int a=4;byte b=(byte)a;
一个字节的变量b无法存储四个字节的变量a,在这种情况下就需要进行强制类型转换 。
但强制类型转换极容易造成 数据精度的丢失 。
int a=298;byte b=(byte)a;
System.out.println("a="+a);
System.out.println("b="+b);
输出结果为
a=298b=42
变量a的值本来为298 , 然而在赋值给变量b之后 , 其值为42,明显丢失了精读 。
因为a是int类型,在内存中占用4个字节 , byte类型的数据在内存中占用1个字节 。当将变量b的类型强转为byte类型之后 , 前面3个高位字节的数据丢失,数值发生改变 。
int00000000 00000000 00000001 00101010byte00101010
表达式类型自动提升
表达式是指由变量和运算符组成的一个算式 。变量在表达式中进行运算时 , 也可能发生自动类型转换,这就是表达式数据类型的自动提升,如一个byte型的变量在运算期间类型会自动提升为int型 。
byte b1=3;byte b2=4;byte b3=b1+b2;
System.out.println("b3="+b3);
运行时会报错 , 因为表达式b1+b2运算期间,变量b1和b2都会被自动提升为int型,表达式的运算结果也就变成了int型,这时如果将结果赋给byte型的变量就会报错,需要进行强制类型转换 。
byte b3=(byte)b1+b2;
1
1
2
3
4
1
2
1
2
1
2
3
4
1
2
变量的作用域
变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域 。
在程序中,变量一定会被定义在某一对大括号中 , 该大括号所包含的代码区域便是这个变量的作用域 。
Java中的运算符
算数运算符
运算符
运算
范例
结果
+正号+33
-负号b=4;-b;-4
+加5+510
-减6-42
*乘3*412
/除5/51
%取模(即算数中的求余数)7%52
++自增(前)a=2;b=++a;a=3;b=3
++自增(后)a=2;b=a++;a=3;b=2
–自增(前)a=2;b=–a;a=1;b=1
–自增(后)a=2;b=a–;a=1;b=2
在进行自增++和自增–的运算时,如果运算符++或–放在操作数的前面则是先进行自增或自减运算,再进行其他运算 。反之 , 如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算 。
在进行除法运算时 , 当除数和被除数都为整数时,得到的结果也是一个整数 。如果除法运算有小数参与,得到的结果会是一个小数 。
在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号 , 与模数(%右边的数)的符号无关 。
赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量 。
运算符
运算
范例
结果
=赋值a=3;b=2;a=3;b=2;
+=加等于a=3;b=2;a+=b;a=5;b=2;
-=减等于a=3;b=2;a-=b;a=1;b=2;
*=乘等于a=3;b=2;a*=b;a=6;b=2;
/=除等于a=3;b=2;a/=b;a=1;b=2;
%=模等于a=3;b=2;a%=b;a=1;b=2;
在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量 。
x+=3;就相当于x=x+3;
将一个int类型的值赋给一个short类型的变量 , 需要显示地进行强制类型转换 。然而在使用+=,-+,*=,/=,%=运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显式子地声明 。

推荐阅读