Day05-Java

Java基础

数据类型扩展

public class Demo03 {
    public static void main(String[] args) {
        //整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x

        int i=10;
        int j=010;//八进制
        int k=0x10;//十六进制

        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
        System.out.println("==========================");
        //浮点数拓展       银行业务怎么表示钱
        //BigDecimal        数学工具类
        //flaot     有限    离散    舍入误差    接近但不等于
        //double
        //最好完全避免使用浮点数进行比较

        float f=0.1f;//0.1
        double d=1.0/10;//0.1
        System.out.println(f==d);//false

        float f1=1111111111111111111111111f;
        float f2=f1+1;
        System.out.println(f1==f2);//ture
        System.out.println("==========================");

        //字符拓展

        char c1='a';
        char c2='中';

        System.out.println(c1);
        System.out.println((int)c1);

        System.out.println(c2);
        System.out.println((int)c2);

        //所有的字符本质还是数字
        //编码 Unicode表 2字节 0-65536
        //u0000-uFFFF
        //Excel 2^16=65538

        char c3='\u0061';
        System.out.println(c3);//a
        System.out.println("==========================");

        //转义字符
        //\t        制表符
        //\n        换行
        // \\        输出一个反斜杠本身
        //\r        回车(回到本行开头)
        //\'        输出单引号
        //\"        输出双引号
        //\b       退格(删掉前一个字符)

        System.out.println("Hello\tWorld");
        System.out.println("==========================");
        //面向对象 从内存分析
        String sa="Hello World";
        String sb="Hello World";
        System.out.println(sa==sb);
        String sc=new String("Hello World");
        String sd=new String("Hello World");
        System.out.println(sa==sd);
    }
}

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换(小数的优先级大于整数)

  • 运算中,不同类型的数据先转换为同一类型,然后再运算

    public class Demo04 {
        public static void main(String[] args) {
            int i=128;
            byte b=(byte)i;//内存溢出
            double d=i;
    
            //强制转换        (类型)变量名        高--低
            //自动转换                低--高
    
            System.out.println(i);
            System.out.println(b);
            /**notice
             1.不能对布尔值进行转换
             2.不能把对象类型专为不相干的类型
             3.在把高容量转为低容量的时候,强制转换
             4.转换的时候可能存在内存溢出,或者精度问题
             */
            System.out.println("========================");
            System.out.println((int)23.7);//23
            System.out.println((int)-23.7f);//-23
            System.out.println("========================");
            char c='a';
            int e =c+1;
            System.out.println(e);
            System.out.println((char)e);
        }
    }
    
    public class Demo05 {
        public static void main(String[] args) {
            int money = 10_0000_0000;
            int years = 20;
            int total1 = (money*years);//-1474836480,计算的时候已经溢出了
            long total2 = (money*years);//默认是int,转换之前已经有问题了
            long total3 = (money*(long)years);//先把一个数转换为Long
            System.out.println(total1);
            System.out.println(total2);
            System.out.println(total3);
        }
    }
    
posted @ 2026-04-18 22:17  小空谜  阅读(13)  评论(0)    收藏  举报