数据类型扩展

类型转换

 

import com.sun.management.VMOption;

public class Demo03 {
    public static void main(String[] args) {
        // ①整数扩展:
        // 进制  二进制0b  十进制 八进制0 十六进制0x
        int i = 10;
        int i2 = 010;//八进制
        int i3 = 0x10;//十六进制   0-9  A-F 16
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("===========================================================");
        //②浮点数扩展:float+double
        //银行业务,钱的计算
        //BigDecimal 数学工具类
        float f = 0.1f;//0.1
        double d = 1.0/10;//0.1
        System.out.println(f == d); //false
        System.out.println(f);
        System.out.println(d);

        float d1 = 2333154545123454f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);//true
        //原因:
        //float 有限、离散、舍入误差、大约、接近但不等于
        //double
        //解决:最好完全使用浮点数进行计算!!!!!!!
        System.out.println("===========================================================");
        //③字符扩展:
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);//a
        System.out.println((int)c1);//97 强制转换
        System.out.println(c2);//
        System.out.println((int)c2);//20013 强制转换
        //所有字符的本质还是数字
        //编码  Unicode表:a = 97/A = 65  2字节 65536=2^16
        //U0000 - UFFFF
        char c3 = '\u0061';
        System.out.println(c3);//a
        //转义字符:
        //  \t:制表符
        System.out.println("hello\tyy");
        // \ n:换行
        System.out.println("hello\nyy");
        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
        //对象:从内存分析
        System.out.println("===========================================================");
        //④布尔值扩展 :
        boolean flag = true;
        if (flag == true){ }//新手
        if (flag){
            //老手
            //Less is More !代码要简洁易懂!
        }
    }
}

 

public class Demo04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte) i;//内存溢出
        double b1 = i;
        //强制转换: (类型)变量名 高--低
        //自动转换:低--高
        System.out.println(i);//128
        System.out.println(b);//-128
        System.out.println(b1);//128.0
        /*
        注意点:
        ①不能对布尔值进行转换
        ②不能把对象类型转换为不相干的类型
        ③高容量转换为低容量,强制转换
        ④转换的时候可能出现内存溢出或者精度问题!
         */
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f);//-45
        System.out.println("===========================================================");
        char c = 'a';
        int d = c + 1;
        System.out.println(d);//98
        System.out.println((char) d);//b
    }
}

 

public class Demo05 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性:数字之间可以用下滑线分割
        int money = 10_0000_0000;
        System.out.println(money);//1000000000
        int years = 20;
        int total = money * years;//计算的时候溢出了
        System.out.println(total);//-1474836480
        long total2 = money * years;
        System.out.println(total2);//-1474836480,还是溢出。
        //原因:默认是int,转换之前可以就已经存在问题了
        long total3 =money * (long)years;//先把一个数转换成long,整体格式会都转成long
        System.out.println(total3);//20000000000
        long total4 = (long)money * years;
        System.out.println(total4);//20000000000
    }
}

 

 

posted on 2022-06-28 17:01  一枚努力学习的小白  阅读(7)  评论(0编辑  收藏  举报