5.19
java是强类型语言,所有的变量都必须指定数据类型。
与此对应的是弱类型语言,比如javascript,可以将不同类型的变量进行组合。
java的八个基本数据类型:
整数:byte,short,int,long(变量名后加L标识这是一个long型数据)
浮点数:float(变量名后加F标识这是一个float型数据,因为浮点数的变量默认的是double类型,所以double类型不用在变量名后标注),double
字符:char(字符,必须是单个字符),String(注意String已经不是关键字了,在java中,String是一个类)
布尔:boolean
整数拓展:
int i =10;
10代表一个十进制的数字,
如果在10前面加0,就代表一个八进制的数字:010,逢8进1位,所以010代表数字8
如果在10前面加0b,就代表一个二进制的数字:0b10,逢2进1位,所以0b10代表数字2
如果在10前面加0x,就代表一个十六进制的数字,0x10,逢16进1位,所以0x10代表数字16
浮点数拓展:
问题:银行业务怎么表示钱
如果用浮点数,看下面这两个例子:
float f = 0.1f
double d = 1.0/10
Syste.out.println(f==d);
output:false
输出结果是false
float f1 = 23131313131313131313f;
float f2 = f1+1;
System.out.println(f1==f2);
output:false
输出结果竟然是true
通过这两个例子告诫我们,尽量避免使用浮点数作比较,而是使用BigDecimal类定义的数字。
字符拓展:
char c1 = 'a';
char c2 = '中';
char c3 = '\u0061'
System.out.println((int)c1);//强制转换
System.out.println((int)c2);//强制转换
System.out.println(c3);
output:97 20013
所有的字符本质还是数字,这涉及到编码问题,Unicode编码占两个2字节 可以表示65535个字符。
并不是所有的数据类型都可以转换为数字,'\u'是转义字符,将编号0061对应的字符赋值给c3。
字符串拓展;
String sa = new String ("hello world");
String sb = new String ("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
output:false true
原因:new一个对象就给它分配一个新的堆内存空间,sa和sb存储的是两个不同的String对象的地址,当然不相等,而sc和sd指向的都是"hello world"这个字符串在字符串常量池中的的地址,所以是相等的。
布尔值扩展:
boolean flag = true;
if (flag==true)
if (flag)
这是一个意思
查看1道真题和解析