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);

Day06:一些拓展

浮点数扩展

//浮点数扩展             
面试题: 银行业务怎么表示?钱     不能用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);//强制类型转换

运行结果:

Day06:一些拓展


//所有的字符本质还是数字
//编码   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! 代码要精简易读

调试

Day06:一些拓展

 

上一篇:编写光晕着色器


下一篇:TensorFlow.NET机器学习入门【1】开发环境与类型简介