整形细节
1.java个整数类型有固定的范围和字段长度,不受具体OS【操作系统】的影响,以保证java程序的移植性
2.java的整型常量默认为int型,声明long型常量须在后面加'l'或者'L'
int n1 = 1;//4个字节
//int n2 = 1L;//不对
long n3 = 1L; //对
3.Java程序中变量常声明为int型,除非不足以表示大数,才使用long
4.bit:计算机的最小存储单位。byte:计算机中基本存储单元,1byte=8bit。
浮点字节
1.java的浮点型常量默认为double型,声明float型常量,需加上’F‘或者’f‘
2.浮点型常量有两种形式:
1.十进制数形式:如:5.12 512.0f .512(如果是像0.512零开头,可以省略零)
2.科学计数法形式:如:5.12e2 5.12E-2
//十进制数形式:如:5.12 512.0f .512(必须有小数点)
double num5 = .512; //等价于0.512
3.数值2.7与8.1/3比较
//8.1/3会无限接近2.7,可以通过Math中abs来解决
double num1 = 2.7;
double num2 = 8.1 / 3;
if(Math.abs(num1-num2)<0.000001){System.out.println("相等");
}
System.out.println(Math.abs(num1 - num2));
4.通常情况下,应该使用double型,因为它比float更精准。
double num9 = 2.1234567851;
float num9 = 2.1234567851f;
字符细节
1.用单引号'
2.允许使用转义符,如:char c = '\n',\转义与n组成字符
3.char本质是整数
自动类型转换注意和细节
1.有多种类型的数据混合运算时,系统首先自动将所有数据据转换成容量最大的那种数据类型,然后在进行计算。
2.当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换
3.(byte、short)和char之间不能互相自动转换。
//当把具体数据给byte时,(1)先判断该数是否在byte范围内,如果是就可以byte b1 = 10; //对,-128 - 127short b = 10;
// int n2 = 1; //n2 是int
// byte b2 = n2; //错误,原因:如果是变量赋值,判断类型// char c1 = b1; //错误,原因:byte不能转换成charchar c1 = b; //错误,原因:short不能转换成char
4.byte,short,char他们三者之间可以计算,但在计算时首先转化为int类型
byte b2 = 2;
byte b3 =1;
short s1 = 1;
short s2 = b2 + s1; //错,b2+s1 => int
byte b4 = b2 + b3; //错,只要出现上面三个首先转换为int
5.boolean不能参与转换
6.自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
强转类型转换
1.当进行数据的大小从大到小,就需要使用到强制转换
2.强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
//int x = (int)10*3.5+6*1.5;//编译错误:double->int
int y = (int)(10*3.5+6*1.5);
System.out.println(y);
3.char类型可以保存int的常量值,但不能保存int的变量值,需要强转
char c1 = 100;
int m = 100;
char c2 = m ;//错,char类型不能保存int的变量值
System.out.println(c2);
4.byte和short类型在进行运算时,当做int类型处理
byte b2 = 2;
byte b3 =1;
short s1 = 1;
short s2 = b2 + s1; //错,b2+s1 => int
byte b4 = b2 + b3; //错,只要出现上面三个首先转换为int