数据类型转换

进制,字符 布尔值拓展 ,转义字符

public class num4 {
    public static void main(String[] args) {
        //整数拓展   进制        二进制0b       十进制        八进制0         十六进制0x
        int c=10;
        int c1=010;
        int c2=0x10;
        System.out.println(c);//十进制
        System.out.println(c1);//八进制
        System.out.println(c2);//十六进制   //0~9 a~f
        //十六进制算法:首位*进制+尾数 a~f=10~15
        //=============================================
        //浮点整数拓展    银行业务怎么表示?钱
        //BigDecimal  数学工具类
        //fLoat 表示字长有限    离散    舍入误差    接近但不等于
        //double
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        System.out.println("=============================");
        float f=0.1F;
        double d=1.0/10;
        System.out.println(f==d);
        float a1=85885868768521231f;
        double a2=a1+1;
        System.out.println(a1==a2);
        System.out.println("=============================");
        //字符拓展
        char a4='b';
        char a5='我';
        System.out.println((int) a4);//加int强制转换
        System.out.println((int) a5);
        //所有字符的本质还是数字
        //编码 Unicode 表 2字节   0-65536 每个字符有对应的数字
        System.out.println("=============================");
        char a6='\u0061';
        System.out.println(a6);//a
        //转义字符
        // \t 制表符
        // \n 换行
        System.out.println("Hello,world");
        System.out.println("===============================");
        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);//从面向对象问题 从内存问题分析
        //布尔值扩展
        boolean flag = true;
        if (flag ==true);{}//新手
        if(flag);{}//老手
        //less is more 代码要精简易读

    }
}

类型转换

  1. 强制转换:由高到低
  2. 自动转换:由低到高
public class num5 {
    public static void main(String[] args) {
        //强制转换(类名)+变量名 高——低 避免超过转换范围导致内存溢出
        int a=128;
        byte b=(byte)a;
        System.out.println(a);
        System.out.println(b);//-128 高转低 内存溢出
        //自动转换  低——高 可以直接输出
      int d =128;
     long f=d;
        System.out.println(d);
        System.out.println(f);
        /*
        注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.由高到低强制转换时候可能存在内存溢出,精度丢失问题

         */
        System.out.println("==================");
        System.out.println(23.7);
        System.out.println((int) 23.7);//23
        System.out.println((int)45.89F);//45 高转低 精度丢失
        System.out.println("==================");
        char o='l';
        int p=o+1;
        System.out.println(p);
        System.out.println((char) p);
    }

}

数据溢出问题

public class num6 {
    public static void main(String[] args) {
        //操作数值比较大的时候注意溢出问题
        //数字间可以用下划线表示
        int money=10_0000_0000;
        int years=20;
        int ab=money*years;
        System.out.println(ab);//-1474836480 数值过大 内存溢出
       long lk =money*((long)years);
        System.out.println(lk);//默认是int 所得数值超过int范围 需要将其中一个数转换为更大范围的long类型

    }
}

posted @ 2022-07-02 10:00  坚持c  阅读(23)  评论(0)    收藏  举报