一、整数拓展:
public class Demo {
public static void main(String[] args) {
//整数拓展: 进展 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i1 = 010; // 八进制
int i2 = 0x10; //十六进制0x 0~9 A~F
int i3 = 0x11;
System.out.println(i); //10
System.out.println(i1); //8
System.out.println(i2); //16
System.out.println(i3); //17
}
}
二、浮点数拓展
银行业务怎么表示? 银行业务:钱 你不能用错了(float 、double 是有问题的)
public class Demo {
public static void main(String[] args) {
//==================================
// 浮点数拓展 银行业务怎么表示? 钱
//==================================
//float
//double
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); // false
System.out.println(f); //0.1
System.out.println(d); //0.1
}
}
debug 调试:通过小蟑螂键 进行调试
【小蟑螂键 也可以启动咱们的程序,好处是 他会有一些调试的窗口】
【为什么他们都是 0.1 输出的 确实是false 不相等?】
public class Demo {
public static void main(String[] args) {
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1 == d2); //true
}
}
通过这 2个例子,可以看出 这个 浮点数 存在一些问题。
背后的原因:
float 是 有限 离散 舍入误差 大约 接近但不等于
注意: 银行业务 不用浮点数表示;用Java 写好的 数学工具类 BigDecimal 类 表示
总结:
少用 浮点数 去 比较
如果 要去 进行 计算 并且 不能 有误差 就用Java 写好的 BigDecimal 就可以了
三、字符拓展
public class Demo {
public static void main(String[] args) {
//=====================================
// 字符拓展
// 字符 转化为 数字 相当于 把字符串 强制转化 为int 类型
//======================================
char c1 = 'a';
char c2 = '中';
char c3 = 'A';
System.out.println(c1); // a
System.out.println((int)c1); //强制转换 97
System.out.println(c2); // 中
System.out.println((int)c2); //强制转换 20013
System.out.println(c3); // A
System.out.println((int)c3); // 65
// 所有的字符本质还是数字
// 编码 Unicode 表:(97 = a 65 = A)
// 2字节 0-65536 Excel 2^16 = 65536
// 区间范围 : U0000 - UFFFF
char c4 = '\u0061';
System.out.println(c4); // a
}
}
转义字符:
\t 制表符,通常用于创建一个水平制表(相当于几个空格)
public class Demo {
public static void main(String[] args) {
//转义字符
// \t 制表符
System.out.println("Hello\tWorld");//Hello World
}
}
\n 换行符,将光标移动到下一行的开头。
public class Demo {
public static void main(String[] args) {
//转义字符
// \n 换行
System.out.println("Hello\nWorld"); //Hello
//World
}
}
常用转义字符:
- \\ 反斜杠本身,因为反斜杠在转义序列中用作前缀,所以需要用两个反斜杠来表示一个字面上的反斜杠。
- \' 单引号,用于在字符串中包含单引号。
- \" 双引号,用于在字符串中包含双引号。
- \\b 退格符,向后移动光标一个字符位置。
- \\f 换页符,将光标移动到下一页的开头。
- \\r 回车符,将光标移动到当前行的开头。
- \\v 垂直制表符,用于创建一个垂直制表(在某些环境中)。
- \\a 响铃符,用于发出警告声(在某些终端中)。
- \\0 空字符,表示一个字节的空值。
- \\xHH 以十六进制表示的字符,其中 HH 是十六进制数。
- \\uHHHH 以四位十六进制数表示的Unicode字符。
- \\UHHHHHHHH 以八位十六进制数表示的Unicode字符。
经典面试题:
public class Demo {
public static void main(String[] args) {
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
}
}
四、布尔值扩展
public class Demo {
public static void main(String[] args) {
//布尔值扩展
boolean flag = true;
if(flag==true){} //新手
if(flag){} // 老手
//Less is More! 代码要精简易读
}
}