数据类型
java是强类型语言
-
所有变量都要严格符合规定
-
所有变量都要先定义后使用
-
相对安全性高同时速度慢
java数据类型分为基本类型和引用类型
基本类型
数据类型拓展与面试题
整数拓展
我们知道常用的进制有:
-
十进制
-
二进制0b开头
-
八进制(定义时为0开头)
-
十六进制(定义时候为0x开头)
public class jinzhi { public static void main(String[] args) { //整数拓展: 进制 二进制0b开头 十进制 八进制0开头 十六进制0x开头 int i1 =10; int i2 =0b10; int i3 =0x10; int i4 =010; System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println(i4); System.out.println("==================================================="); } }
运行结果为:
浮点数拓展
首先为了大家更好的理解我们要引入一个问题,银行存储钱的变量用什么数据类型?
float?
还是double?
我们先写一个程序
float a1 =0.1f; double a2 =1.0/10; System.out.println(a1==a2);
按常理来说 输出的结果应该是true因为在我们看来0.1和0.1没有什么不同
再看另外一个更奇怪的现象
float b1=2245255655655454554f; float b2=b1+1; System.out.println(b1==b2);
这个程序的输出结果是true。
我们很好奇到底是为什么呢?
现在我们引入float的特点:
-
离散
-
有限
-
有舍入误差
-
大约
-
接近但不等于
所以我们一定要避免使用float类型的数据进行比较
书接上文银行业务怎么表示?
我们有一个数学公式类
叫做Bigdecimal
字符拓展
话不多说咱们先上代码
char c1 = '中'; char c2 ='a'; System.out.println(c1); System.out.println(c2); System.out.println((int)c2); System.out.println((int)c1); 输出结果: 中 a 97 20013
是不是出现了很奇怪的现象就是为啥'中'和a都成了数字
因为本质上面他们都是使用的unicode编码
都是一个有2的十六次方规则的密码本
他的范围是U0000~uffff
转义字符
这个就是有些字符有着别的意思
比如
System.out.println("hello\nworld");//换行 System.out.println("hello\tworld");//制表符 结果: hello world hello world
最后我们再引入一段代码
String n1 =new String("a"); String n2 =new String("a"); String n3 ="a"; System.out.println(n1==n3); 结果 false
这个问题我们留一个悬念,他们不同我们之后学了关于内存的知识再做解释