由于java是强类型语言,所以要进行有些运算的时候,需要类型转换


从左到右是自动类型转换,从右到左是强制类型转换。
public static void main(String[] args) {
int i = 128;
byte x = (byte) i; //内存溢出 x=-128 强制转换
//强制转换 (类型)变量名 高--低
//自动转换 低--高
double y = i; //自动转换
System.out.println((int)23.56); //23
System.out.println((int)-45.34); //-45 精度损失
}
注意点:
1.不能对布尔型进行转换
2.不能把对象类型转换成不相干的类型,
3.再把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
计算溢出解决方法
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用_(下划线)来分割
int x = 10_0000_0000;
int y = 20;
int totla = x*y; //-1474836480 计算的时候溢出了
long totla2 = x*y; //-1474836480 默认是int 转换之前就出现了问题了
//解决方法
long totla3 = x*((long)y); //20000000000 先把一个数转换为long
}
传递
- 值传递:基本数据类型的赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的备份,值传递后,实参传递给形参的值,形参发生改变不影响实参。
- 引用传递:引用传递传递的是地址,形参改变会改变实参变量的值。
网友评论