04
数据类型扩展及面试题
package com.kuang.base;
public class Demo03 {
public static void main(String[] args){
//整数拓展 :进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x10;//十六进制0x 0~9 A~F 16
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("========================");
//=============================================
//浮点数拓展? 银行业务怎么表示?钱
//用BigDecimal 是一个数学工具类
//=============================================
//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
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//=============================================
//字符拓展?
//=============================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换,输出97
System.out.println(c2);
System.out.println((int)c2);//强制转换,输出20013
//所有的字符本质还是数字
//编码 Unicode 2字节 65536
//U0000~UFFFF
char c3 = '\u0061';
System.out.println(c3);//a
//转义字符(还有很多)
//\t 制表符
//\n 换行
System.out.println("Hello\tWorld");
System.out.println("Hello\tWorld");
//常见面试题
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
//对象 从内存分析
//如果比较的对象是基本数据类型,则比较数值是否一致;如果比较的是引用数据类型,则比较的是对象的地址值是否一致。(弹幕)
//第一个是堆内存地址不一样,第二个是同一个常量池(弹幕)
//new一个内存就会创建一个空间(不管内容是否相同)(弹幕)
//第一个分配的堆内存中,第二个是常量池中(弹幕)
//布尔值扩展
boolean flag = true;
if (flag==true){}//新手程序员
if (flag){}
//上面两行代码完全一致
//方法写布尔类型的返回值经常这么写(弹幕)
}
}