java中数据类型:基本数据类型和引用数据类型
基本数据类型:
数据值是存储在自己的空间(栈空间)中的,共分为4类8种
特点:赋值给其他变量,也是赋的真实值
引用数据类型:
数据值是存储在其他空间(如堆内存)中的,自己空间(栈空间)中存储的是地址值
特点:赋值给其他变量,赋的地址值
java变量中的一些小细节:
1.定义long类型的变量,必须要在数据值的后面添加一个L的后缀,否则报错(小写的l也可以,但容易和1弄混,不建议使用)
正确写法:
long l=9999999999L;
System.out.println(l);
2.定义float类型的变量,必须要在数据值后加一个F或者f的后缀,否则也会报错,double则不需要
正确写法:
float f=10.1f;
System.out.println(f);
3.取值范围大小关系:double > float > long > int > short > byte
4.字符串用双引号,不管引号里内容多少,哪怕是空,也是字符串
5.字符用单引号,不能用‘’存放字符串,否则报错
6.空值null不能直接打印,会报错,只能通过字符串形式"null"进行打印
7.制表符 \t的作用:
在打印的时候把前面字符串的长度补齐到8,或者8的整数倍。最少补1个空格,最多补8个空格(cmd中显示正常,idea中最多只能补4个空格,最少补1个空格)
System.out.println("name" + '\t' + "age");
System.out.println("tom" + '\t' + "23");
在IDEA中运行
在cmd中运行
8.二进制以0b开头,十进制不加任何前缀,八进制以0开头,十六进制以0x开头
System.out.println(17);//十进制
System.out.println(017);//八进制
System.out.println(0b100);//二进制
System.out.println(0x100f);//十六进制
运行结果:
9.注意:如果有小数参与计算,结果有可能不准确,如果需要精确计算,需要用到后续知识
System.out.println(1.1 + 1.1);//2.2
System.out.println(1.1 + 1.01);//2.1100000000000003
System.out.println(1.1 - 1.01);//0.09000000000000008
System.out.println(1.1 * 1.01);//1.1110000000000002
System.out.println(10.0 / 3);//3.3333333333333335
10.数据类型不一样时,不能进行计算,需要转成一样的才能进行计算(取值范围小的 会自动向 取值范围大的 进行转换。大小关系见第3点)
11.当byte、short、char三种类型在运算时,都会首先提升为int,然后在进行计算
byte b1=10;
byte b2=20;
int result = b1 + b2;
System.out.println(result);//所以这里的result是int类型的
12.+= -= *= /= %= 底层都隐藏了一个强制类型转换
short s=20;
// s += 1; 按理说等价于有s = s + 1;
//但是short类型在进行计算时,会自动提升为int型,
//左边是short类型,右边是int类型,这肯定是不对的
s+=1;
// += -= *= /= %= 底层都隐藏了一个强制类型转换-->s += 1; 等价于s = (short)(s+1);
System.out.println(s);
13.char + 数字 或者 char + char-->将char根据ASCII表转换为int型
14.char + 字符串-->只要有字符串参与,都视为字符串拼接
char c='a';
System.out.println(c+0);//97
System.out.println(c+"bc");//abc