Java学习记录3

Java学习记录3,第1张

Java学习记录3 数据类型 整数拓展:

进制
int i=0b10 // 二进制 0b
int i0=010 //八进制 0
int i1=10 //十进制
int i2=0x10 //十六进制 0x

浮点拓展:

银行业务用什么表示?有关于钱的问题
//采用BIgDecimal类,(数学工具类)
float //有限 离散 舍入误差 大约 接近但不等于
double //最好完全使用浮点数进行比较

public class Q {
    public static void main(String arg[]){
        float i1=0.1f;
        double i2=1.0/10;
        System.out.println(i1==i2);//false
    }
}

通过上面的小测试显示结果是false。

public class Q {
    public static void main(String arg[]){
        float i1=0.1f;
        double i2=1.0/10;
        System.out.println(i1==i2);//false
        float i3=1234549674865341f;
        float i4=i3+1;
        System.out.println(i3==i4);//ture
    }
}

加入另一个小测试结果页同样令人出乎意料,两个明明看似相等的数,在电脑上运行得到的结果确是不相等,而两个明显不相等的数在电脑上运行结果确是相等的。其原因就是float的数据大小有限,且运算带有舍入误差和接近但不等于。

字符拓展:
package Text;

public class Q {
    public static void main(String arg[]){
        float i1=0.1f;
        double i2=1.0/10;
        System.out.println(i1==i2);//false
        float i3=1234549674865341f;
        float i4=i3+1;
        System.out.println(i3==i4);//ture
        char s1='A';
        char s2='加';
        System.out.println(s1);
        System.out.println((int)s1);//强制转换  输出结果为65
        System.out.println(s2);
        System.out.println((int)s2);//强制转换  输出结果为21152
    }
}

//所以字符的本质还是数字。编码 Unicode表(A=65,a=97) 2 字节 0~2的16次方=65536。

char s3 = 'u0067';

试试看此条代码所输出的是哪个字符。

转义字符

u 4位十六进制数据所表示的字符,如u0014
t 水平制表符
v 垂直制表符
r 回车
n 换行

public class Q {
    public static void main(String arg[]){
        float i1=0.1f;
        double i2=1.0/10;
        System.out.println(i1==i2);//false
        float i3=1234549674865341f;
        float i4=i3+1;
        System.out.println(i3==i4);//ture
        char s1='A';
        char s2='加';
        System.out.println(s1);
        System.out.println((int)s1);//强制转换  输出结果为65
        System.out.println(s2);
        System.out.println((int)s2);//强制转换  输出结果为21152
        char s3 = 'u0067';
        System.out.println(s3);
        System.out.println("==============================");
        String ra = new String("Hello word");
        String rb = new String("Hello word");
        System.out.println(ra == rb);//false
    }
}

这里的ra rb内容明明是同样的,但为什么不相等呢?
String类型new的是一个新的对象,在面向对象的过程中,sa和sb是两个不同的对象,储存地址不同,所以不等。

布尔值扩展
boolean flag = true;
if(flag==ture){}   //新手
if(flag){}  //老手

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存