Day06:一些拓展
二进制0b 十进制 八进制0 十六进制0x
例如:
int i = 10;
int i1 = 010;//八进制0
int i2 = 0x10;//十六进制0x 0~9 A~F 16
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
浮点数扩展
//浮点数扩展
面试题: 银行业务怎么表示?钱 不能用float去比较
用 BigDecimal 数学工具类
//===========================================================================
//float 有限的 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
float f = 0.1f;//0.1
double d =1.0/10;//0.1
System.out.println(f==d);//false
float d1 = 233333333333f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
运行结果:false true
因为float是有限的 离散 舍入误差 大约 接近但不等于,这就表明了它会存在一些问题,用二进制存,但是没有那么正好等于这个数的,所以对一些较大的,或者难存储的二进制会用一些相近的数存储同一个数
简单来说,d1数字太大了不能精确比较,太大的数+1基本没什么区别,所以就会判断相等,类型转换了,精度丢失。
字符拓展
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字节 65536 最早的Excel 最长只有2的16次方即65536那么长 0-65535
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);//a
转义字符
System.out.println("Hello\tWorld");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
运行结果:false true
new出来的是对象,会开辟一块新的内存地址 地址不同
sc和sd在内存常量区 内容相同 sc在初始化的时候就已经在常量池中了,sd会判断常量池中是否存在sc的内容
布尔值扩展
boolean flag = true;
if(flag){}
if(flag==true){}
含义一样,都是判断是否flag等于true
less is more! 代码要精简易读
调试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人