一、关于基本类型
1.long类型和float类型赋值时建议使用大写字母的后缀,即long a=100L,float b=0.1F。
2.对float和double类型的数值进行运算会出现精度丢失问题,比如 double result=1.0-0.9,它的结果并不是0.1而是0.09999999999999998,所以建议涉及到浮点数运算时使用BigDecimal类。
3.boolean类型是不能整型值之间做转换的。
4.char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以char型变量中可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
二、数值类型之间的转换。
int a=1;
a++;//效果等同于++a
System.out.println(a);
2>如果和和别的操作共同进行时有区别的,如:int b=1;
int c=b++;//先把值赋给c再进行b的自增运算
int d=++b;//先进行b的自增运算再把值赋给d
System.out.println(c);//结果是1
System.out.println(d);//结果是3,因为刚才b自增了两次
4.关于&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。
5.关于基本类型的自动类型转换(不包括boolean类型)
byte、char、short类型之间在做运算时会转为int类型,所以运算的结果要赋给int类型。
short s1=1;
byte b1=2;
char c1=3;
//short s2=s1+b1+c1;//编译错误 ,三个数做运算是int类型的值不能赋给short类型的变量
int i1=s1+b1+c1;
System.out.println("i1 = " + i1);//6
6.关于取模运算,结果的正负取决于被模数 int i1=12%5;//2
int i2=-12%5;//-2
int i3=12%(-5);//2
int i4=-12%(-5);//-2
三、关于数组的初始化