1.Java的数据类型包含基本数据类型和引用类型。
(1)基本数据类型
①整数类型: byte (8位),short(16位), int (32位) ,long(64位)
②浮点类型: float, double
③字符类型: char (16位, 使用Unicode字符集)
④布尔类型: boolean
(2)引用类型
①class(类)
②interface (接口)
③数组
2.Java基本数据类型转换包含自动类型转换和强制类型转换。
(1)自动类型转换
byte、 short、 char类型被提升到int类型。整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。
Type methodA(byte x,double y){
return (short)x/y*2;
} /*Type的类型将为double*/
(2)强制类型转换
高级数据要转换成低级数据,需用到强制类型转换,否则发生type mismatch编译错误。
int i;
byte b=(byte)i; /*把int型变量i强制转换为byte型*/
3.引入包装类的目的(以int和Integer为例)
(1)基本数据类型不是对象,在一些场合不能直接使用(例如某些类方法参数必须是对象类型),需要转化为对应的包装类对象才能继续使用。
(2)包装类的一些静态方法可实现不同数据类型的转化,如将字符串类型的数字“123”转为整数类型,可以通过int a=Integer.parselnt(“123”)完成,而将整数转为字符串使用,则要通过String c= String. valueOf(123)来完成。
(3)包装类的静态属性中含有相应数据类型的范围,如Integer.MIN_VALUE(int的最小值),Integer. MAX_ VALUE(int 的最大值),Double. NaN(非数类型)、Double.NEGATIVE INFiNITY(负无穷)、Double. POSITIVE INFINITY(正无穷)。
4.(1)int与integer的区别
①int是一种基本数据类型,Integer是int的包装类。
②integer变量必须实例化后才能使用,int可以直接使用。
③Integer的默认值是null,int默认值是0。
④Integer变量实际上是对象的引用,指向new的Integer对象,int是 直接存储数据。
(2)int与integer之间的转化方法
①基本数据类型转化为包装类对象通过构造方法来完成。如Integer vari = new Integer(5)。
②从包装类对象那里得到其代表的基本数据值需要调用该对象的相应方法,如上面的vari可以通过调用intValue()方法得到一个int 类型的值。
5.(1)逻辑运算符&与&&的区别
“&”在执行操作时,运算符左右两边的表达式首先被执行,再对结果进行与、或运算。而利用“&&”执行操作时,如果从左边的表达式中得到操作数能确定运算结果,则不再对右边的表达式进行运算。
class TestLogicSymbole{
public static void main(String[] args){
int out=10;
boolean bl=false;
if((bl==true)&&(out+=10)==20){
System.out.println("相等,out="+out);
}
else{
System.out.println("不等,out="+out);
}
}
}/*输出结果为“不等,out=20”*/
若改成“if((bl==true)&(out+=10)==20)”,结果为“相等,out=20”
(2)逻辑运算符&与位运算符&的区别
逻辑运算符&两边的表达式在任何情况下都会被计算,当全部为真时结果为true,位运算符&是按位与,两者都为1时结果为1。
class Test1{
public static void main(String[] args){
int a=2; /*2的二进制为10*/
int b=3;/*3的二进制为11*/
System.out.println("out="+(a&b));
}
}/*输出结果为“out=5”*/
分析:10和11进行按位与计算,得到101,结果为5
6.Java可以采用break语句和continue语句跳出多重循环。
①break test可以直接跳出多重循环(test为用户定义的标号)
class Test2{
public static void main(String[] args){
int a,b;
for(a=0;a<2;a++){
for(b=0;b<3;b++){
if(b>0){
break test;
}
System.out.println("ok");
}
}
}
}/*输出结果为“ok”*/
②continue test可以跳出一层多重循环(test为用户定义的标号)
class Test3{
public static void main(String[] args){
int a,b;
for(a=0;a<2;a++){
for(b=0;b<3;b++){
if(b>0){
continue test;
}
System.out.println("ok");
}
}
}
}/*输出结果为“ok
ok”*/