在说JAVA的数据类型之前,我们来说一下关键字,标识符,变量,常量等常用术语。
标示符:就是名字或者代号,JAVA的标志符必须有字母, 下划线,$开头;其后可以跟上任意数量的字母,数字,下划线,$字符.
使用标志符必须的注意一下几点:
关键字:在程序里有特定的用途和特定的功能的字符,的所有关键字都是小写,TURE,FALSE,NULL都不是关键字以下是java的所有关键字总共48个(goto和const作为关键保留字也不能用):
变量:就是定义一个数值,可以变动.可以改变,可以是一个数字,字符,字符串
常量:就是 一旦定义,其值就不可以更改
Java语言的都是强制类型语言,所谓的强制性就是指必须的先声明后使用.(以后你们就会知道强制类型语言的好处)
Java变量按照位置可以分为局部变量(方法和语句块内部)和成员变量(方法的外部和类的内部)
局部变量(在作用域内不可以用相同的数据变量,在显示之前必须有程序员初始化) 它还可以细分为
1.方法的形参变量:方法()内的参数变量
2.方法体中的变量
3.代码块中的变量
好了,准备工作以作足,我们开始说数据类型:
JAVA的数据类型分为基本数据类型(Primary Type)和引用数据类型(Reference Type).
每种数据类型占用的字节
注意:
1.Char不管是一个字符还是一个中文都是两个字节,char是可以存中文的,因为java使用的是unicode编码,char是两个字节,16位 65565个字,能表示丰富的国际化文字.
2.定义整数的时候,系统默认的是int类型,如果要用long数据类型就必须得在数值的最面加一个L后缀.
3.定义浮点型时,系统默认的是双精度double,如果要用单精度float就得在数值后面加f后缀.
4.常量一般都是大写;并且不可改变.
宽转化时安全的自动的,就像把小桶的可乐倒在了大可乐桶里.
窄转化 相当于把大桶的可乐刀在拉小桶的可乐里,容易照成溢出(即精度缺失) 不安全不是自动的 需要程序员的强制转化.
当给char byte short是赋值时是直接赋值.但这三种类型在运算时也会转换成int 再计算,的防治宽转化和窄转化而产生精度损失.
针对数据类型常出现的面试题:
面试题1:Byte a = 127;a = a + 1;System.out.print(a);以上代码执行结果是什么?
答: 是报错:可能精度损失. 因为1是int , 在a +1 过程中,会将a 的值宽转化为int,得到的结果是int型,此时a还是byte型,这时就发生啦窄转化,因而发生精度损失.
面试题2:如何修改?
答: 如果a + 1的结果没有超过a的数据类型byte的范围,就可以使用强制类型转换进行更改, 即 a = (byte) a + 1;
面试题3:Short a = 2;a+=1;System.out.println(a);以上代码执行结果是什么?
答: 是3; 因为a+=1是相当于将1的值直接加到啦a上,a不再用经过窄转化和宽转化.
面试题4:
Byte a = 1;
Byte b = 1;
Byte c;
C = a + b;
System.out.print(c);
以上代码执行结果是什么?
答: 是报错:可能精度损失. 因为 a + b 过程中 ,会将a和b的value因宽转化为int类型,两个int类型相加得到的是int类型,但c是byte类型,这时就发生窄转化,因而发生精度损失.
面试题5:char类型能不能存在中文字符?
答:可以存在中文字符,只能是一个(字母也是),并且是两位,因为java使用的是unicode编码,这种编码能表示丰富的国际化字符.(不管是中文还是字母,都是两位)
面试题6:
Double b = 7/2;
System.out.print(b);以上代码执行结果是什么?
答:是3.0 因为7和2都是int类型,通过运算得到3.5继而窄转化为int类型的3(中间已经发生啦精度损失),3是int类型,然而b又是double类型,从而宽转化为3.0.
面试题7:long类型一定要加L后缀吗?
答:不一定,如果的事定义的数字没有超过int的数值范围,就不用加,当数值超过啦int的数值范围就得加L后缀.
顺带说一下常用的转义字符:
\r 回车 回到首字母并覆盖原来的数据
\n 换行
\r 相当于tab键
String API:charAt(int index) 第一位字符是从0开始