数据类型的拓展
整数拓展
进制:二进制 八进制(数字前加o) 十进制 十六进制(数字前加ox)
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x11;//十六进制0x 0~9 A~F
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
浮点数拓展
float: 有限 离散 舍入误差 大约 接近但不等于
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
可用BigDecimal 数学工具类
float f = 0.1f;//0.1
double d = 1.0 / 10;//0.1
System.out.println(f == d);//false
System.out.println(f);
System.out.println(d);
float d1 = 2323232323232323232f;
float d2 = d1 + 1;
System.out.println(d1 == d2);//true
字符拓展
所有的字符本质还是数字
编码 Unicode表 2字节
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int) c1);//强制转换
System.out.println(c2);
System.out.println((int) c2);//强制转换
因为Unicode表是十六进制,所以0061表示a。
char c3 = '\u0061';
System.out.println(c3);//a
转义字符
几种编码语言的区别
由于ASCII编码方式包含的字符太少,基本只对英文字符进行了编码.
中国用GB2312等对简体汉字进行了编码.别的国家也有自己的编码方式.
为了方便交流,防止乱码,Unicode编码方式应运而生.
Unicode编码被称为万国码,单一码,统一码.它是为每种语言的每个字符都设定了统一的,唯一的二进制编码,以满足跨语言,跨平台进行文本交换和处理的需求,是计算机科学领域的一项业界标准.
Unicode编码用两个字节来存储一个字符,所以它最大可以对65536个字符(2的16次方)进行编码.它包含了世界上所有的字符,每个字符都是用独一无二的二进制表示.
●用Unicode对英文进行编码,相对于ASCII编码来说,会更占用空间.Unicode使用两个字节存储,英文存储只需要占用一个字节,用Unicode编码,就会在多出的一个字节上全部置零.这就造成了空间浪费.于是就有了UTF-8编码
UTF-8编码
(8-bit Unicode Transformation format)它是Unicode的实现方式,是一种可变字节的编码方式,用1-4个字节来表示一个字符.对英文就使用一个字节来表示.对汉字就使用两个字节来表示.有更复杂的字符就用3-4个字节来表示.
布尔值扩展
boolean flag = true;
if(flag==true){}//新手
if(flag)//老手
Less is More! 代码要精简易读
小思考
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd);//true