整数扩展
package DAY01;
public class demo03 {
public static void main(String[] args) {
//整数扩展 进制 二进制 ob 十进制 八进制 0 十六进制 0x
int i = 10; //十进制
int i2 = 010; //八进制
int i3 = 0x10; //十六进制 0~9 A~F F代表16
int i4 = 0b10; //二进制
System.out.println(i);
System.out.println(i2);//输出i2
System.out.println(i3);
System.out.println(i4);
System.out.println("==================");
}
输出结果如上图所示
浮点数扩展
public class demo03 {
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); //表示f和d是否一样?true or false?【False】
System.out.println(f);
System.out.println(d);
}
}
输出结果如上图所示
思考:为啥 f 和 d 都表示0.1,但是,为什么 f 和 d 不相等呢?
public class demo03 {
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); //表示f和d是否一样?true or false?【False】
float d1 = 23232123131f;
float d2 = d1 + 1;
System.out.println(d1==d2);//输出为【True】
/*
可以明显的看到d1是不等于d2的,但是程序居然认为d1==d2.
因为float浮点数,是有限的、离散的,舍入误差的、大约,接近但不等于
最好避免完全使用浮点数进行比较
可以用 Big Decimal[类]
*/
}
}
字符扩展
所有的字符本质上还是数字
//字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
//强制转换:可以把字符转换成数字
//所有的字符本质还是数字
//编码 Unicode表:(97=a 65=A) 2字节 2^16==65536
//该表是从:U0000--UFFFF
char c3 = '\u0061';
System.out.println(c3); //输出为【a】 因为:6x16+1=97
//转义字符
// 【\t】 制表符 类似于空格
// 【\n】 换行
System.out.println("Hello\nWorld");
输出结果:
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】
//对象 从内存分析
为什么sa和sb不相等,而sc和sd是一样的,相等的?
答:第一个值一样但是储存地址不一样【比较的是地址值】,第二个比较的是内容。
【==】:如果比较的对象是基本数据类型,则比较的是数值是否一致;如果比较的是引用数据类型,则比较的是对象的地址是否一致。
整个代码
public class demo03 {
public static void main(String[] args) {
//整数扩展 进制 二进制 ob 十进制 八进制 0 十六进制 0x
int i = 10; //十进制
int i2 = 010; //八进制
int i3 = 0x10; //十六进制 0~9 A~F 16
int i4 = 0b10; //二进制
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println("==================");
//浮点数扩展? 银行业务怎么表示?【钱】
// 【float】
// 【double】
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //表示f和d是否一样?true or false?【False】
float d1 = 23232123131f;
float d2 = d1 + 1;
System.out.println(d1==d2);//【True】
/*
可以明显的看到d1是不等于d2的,但是程序居然认为d1==d2.
因为float浮点数,是有限的、离散的,舍入误差的、大约,接近但不等于
最好避免完全使用浮点数进行比较
可以用 Big Decimal[类]
*/
//字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
//强制转换:可以把字符转换成数字
//所有的字符本质还是数字
//编码 Unicode表:(97=a 65=A) 2字节 2^16==65536
//该表是从:U0000--UFFFF
char c3 = '\u0061';
System.out.println(c3); //输出为【a】 因为:6x16+1=97
//转义字符
// 【\t】 制表符 类似于空格
// 【\n】 换行
System.out.println("Hello\nWorld");
System.out.println("=======================");
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】
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if (flag==true){} //新手
if (flag){} //老手
//Less is More! 代码要精简易读!
}
}