- 0-转换原则
- 1-int类型不能显示强转为boolean
- 2-高向低转换必须强转且会丢失精度
- 3-涉及bytecharshort的运算均强转为int格式
- 4-Math类中的roundceilfloor
- 5-汉子2个字节英文1个字节resourceBundle处理国际化
- 6-数组的初始化
0-转换原则
- 基本类型有以下四种:
- int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
- float长度数据类型有:单精度(32bits float)、双精度(64bits double)
- boolean类型变量的取值有:ture、false
- char数据类型有:unicode字符,16位
对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
- 转换原则
- 从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换 - 基本类型向类类型转换
- 正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2); - 反向转换:通过类包装器来转换
int b=a.intValue();
- 类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()
1-int类型不能显示强转为boolean
int i=1;
if(i)
cout<<"true";
else
cout<<"false";
报运行时错误。int类型不能显示强转为boolean
1)boolean a=true;//这个a在JVM中占4个字节即:32位。
2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。
int x=3;
int y=1;
if(x=y)
system.out.println(“Not equal”);
else
system.out.println(“Equal”);
}
以上语句C中正常、java编译报错
我来解析下:
其实这个是由于java和C语言的不同处理机制导致的:
C语言中
当if语句中的条件为赋值语句时,实际上是将赋值后的结果与0进行比较【左值】
if(1) 由于1>0 所以认为是true
java语言中,虽然也用了左值,但是不再与0比较,而是直接将1放入if()中
但是int类型,不能转换为boolean,所以会报错:“Type mismatch: cannot convert from int to boolean”
2-高向低转换,必须强转,且会丢失精度
short a=128;
byte b=(byte)a;
a为2个字节:00000000 100000000
b为1个字节,支持【-128,127】:取底位一个字节100000000 ————>128溢出为-128
3-涉及byte,char,short的运算均强转为int格式
short s1=1;
s1=s1+1;//报错,s1+1返回为int型,不能直接赋值给short变量
short s1=1;
s1=(short)s1+1;//正确
但+=运算符不会产生类型转换,如:
short s=1;s+=1;正确
4-Math类中的round、ceil、floor
floor 返回不大于的最大整数,向下取整
round则是4舍5入的计算,入的时候是到大于它的整数,也就是+0.5后floor
ceil 则是不小于他的最小整数,向上取整。正入,负舍。
Math.floor Math.round Math.ceil
1.4 1 1 2
1.5 1 2 2
1.6 1 2 2
-1.4 -2 -1 -1
-1.5 -2 -1 -1
-1.6 -2 -2 -1
5-汉子2个字节,英文1个字节,resourceBundle处理国际化
hello 5个字节
你好 4个字节
6-数组的初始化
声明过程中不加numsize: int a[5] 错误
这点与C不一样,c语言不允许声明空数组
- 一维数组的声明:int a[]——–int [] a
- int [] a=new int(5);——- int a[]=new int(5);
- int [] a={1,2,3,4,5};——– int a[]={1,2,3,4,5};
- int [] a; a=new int(5);
- int [] a; a=new int[]{1,2,3,4,5};
- 二维数组的声明:int a[][]——int [][] a——int[] a []
- int [][] a={{1,2},{3,4,5}}//第二维长度可以不一样
- int [][]a=new int[2][]; a[0]=new int[]{1,2};a[1]=new int{3,4,5};