进制的表示方法
public class Demo{
public static void main(String[] args){
//整数扩展 进制 二进制0b 十进制 八进制0 十六进制0X
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println("i = " + i);//输出为 i = 10
System.out.println("i2 = " + i2);//输出为 i2 = 8
System.out.println("i3 = " + i3);//输出为 i3 = 16
}
}
浮点数的比较
public class Demo{
public static void main(String[] args){
float f = 50.1f;
double D = 50.1;
System.out.println("f = " + f);//输出为 f = 50.1
System.out.println("D = " + D);//输出为 D = 50.1
System.out.println("f == D = " + (f == D));//输出为 f == D = false
float f2 = 314512544;
float f3 = f2 + 1;
System.out.println("f2 = " + f2);//输出为 f2 = 3.14512544E8
System.out.println("f3 = " + f3);//输出为 f3 = 3.14512544E8
System.out.println("f2 == f3 : " + (f2 == f3));//输出为 f2 == f3 : true
}
}
总结:
float浮点数类型表现的字长是有限的,浮点数有舍入误差
舍入误差来源于四舍五入,很多数字没有办法能精确的表示,结果个只能是个大约数,他只是接近,但不等于
float数并不精确,最好完全使用浮点数进行比较少用浮点数进行比较,如果实在需要比较使用BigDecimal(数学工具类)
解决方式:
BigDecimal 数学工具类
字符char的强制转换以及Unicode编码相关
public class Demo{
public static void main(String[] args){
char c1 = 'a';
char c1 = 'a';
char c2 = '中';
System.out.println("c1 = " + c1);
System.out.println("强制转换c1: " + ((int)c1));
System.out.println("c2 = " + c2);
System.out.println("强制转换c2: " + ((int)c2));
char c3 = '\u0061';
System.out.println("c3 = " + c3);//输出为 c3 = a
}
}
总结:
所以字符本质还是数字,char出现之始就是为了使用Unicode编码而创造的**(可以理解为占据的两个字节对应了x,y坐标轴 !!!个人理解,因为没百度到本质所以做出了猜想)**
最早的Excel表格只有2的16次方(65536)的长度,Unicode编码就是制作了这样的一个表格,将对应位置放上对应内容,在需要使用的时候使用Unicode提供的编码在前面加上\**(转义符号)**来转换成对应的字符从u0000开始到uffff结束编码内都放置了相应的内容
部分转义字符的说明
\t 制表符 输出制表符,实现对齐功能
String str1 = "Hello\tworld!";
String str2 = "Helllo\tword!";
System.out.println("str1 = " + str1);
/*
输出为
str1 = Hello world!
str2 = Helllo word!
*/
\n 换行符 输出换行符,实现换行,在无法使用回车换行的文本中使用
String str3 = "Helllo\nword!";
System.out.println("str3 = " + str3);
/*
输出为
str3 = Helllo
word!
*/
\r 回车 回车和换行符不同,控制台中出现回车会将输出光标移动至该行最前方重新开始输出
String str4 = "Hello\rWorld!";
System.out.println("str4 = " + str4);
/*
输出为
World!
*/
//本来我以为从头开始会把\n之前的内容也输出,也就是输出:Hello World! ,实际输出是跳过了之前的内容只输出了World!
代码里特殊符号都有他的用途,但你又实在想输出一个只显示该符号不使用其特殊用途的符号,可以在前面加上一个 \ ,想输出一个 \ 符号,可以在 \ 前面再加一个 \ ,例 : \\ ( 实际上在MD里输入我在这个地方输入了四个\ )
new关键字创建的对象以及基本数据的比较
String sa = new String("Hello World!");
String sk = new String("Hello World!");
System.out.println("sa == sk : " + (sa == sk));//输出为 false
String sc = "Hello World!";
String sd = "Hello World!";
System.out.println("sc == sd : " + (sc == sd));//输出为 true
凡是用new关键字创建的内容都是对象,会开辟新内存在存储数据
sa和sk做比较返回的是之所以为false是因为他们创建的是两个不同的对象**(初学者把这里的对象直接理解成 东西 就行,这就是俩不同的东西)**,虽然存储的数据一样,但是存储的位置不同,这里默认比较的是存储的位置,所以会返回false.
sc和sd作比较返回的之所以是true是因为他们都是基本数据,比较的时候也是默认直接对比的他们储存的数据,而不是比较的储存地址,所以返回的是true.
布尔值的使用场景
boolean flag = true;
if(flag == true){}//新手操作
if(flag){}//老司机行为
//Less is More代码要精简易读