Day01 JAVA学习笔记 有关数据类型 和 数据类型转换

数据类型及其扩展知识

public class Demo1 {
    public static void main(String[] args) {
        //八大基本数据类型
        //易错点
        long num1 = 30L; //long类型要在数字后面加个L以辨别
        float num2 = 50.2F; //float类型要在数字后面加个F
        char code1 = 'A'; //char类型代表一个字符

        //字符串 String不是关键字,是一个类
        String name = "name";

        //布尔值
        boolean flag1 = true;
        boolean flag2 = false;

        //============================================
        //整数扩展: 进制
        /*
        二进制0b
        十进制
        八进制0
        十六进制0x
         */
        int i1 = 10;
        int i2 = 010; //八进制0
        int i3 = 0x10; //十六进制0x

//        System.out.println(i1);//10
//        System.out.println(i2);//8
//        System.out.println(i3);//16
        //============================================
        //浮点数扩展? 银行业务怎么表示?
        //不要使用浮点数型,使用BigDecimal 数学工具类
        //============================================
        //float double 是有限 离散的,会舍入误差,是个大约数,接近但不等于
        //最好完全避免使用浮点数比较
        //最好完全避免使用浮点数比较
        //最好完全避免使用浮点数比较
        float f = 0.1f; //0.1
        double d = 1.0/10; //0.1
        System.out.println(f==d);//false
//        System.out.println(f);//0.1
//        System.out.println(d);//0.1
        float d1 = 232323232f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);//true
        //============================================
        //字符扩展
        //============================================
        char c1 = 'a';
        char c2 = '中';
//        System.out.println(c1);
//        System.out.println((int)c1);//33 (int)是强制转换
//        System.out.println(c2);
//        System.out.println((int)c2);//20013

        //所有字符本质还是数字
        char c3 = '\u0061';
//        System.out.println(c3);//a
        //转义字符
        // \t 制表符
        // \n 换行 等等

        System.out.println("===================");
        String sa = new String("hello");
        String sb = new String("gello");
        System.out.println(sa==sb);//false
        String sc = "hello";
        String sd = "gello";
        System.out.println(sc==sd);//true
        //因为对象 和 内存 以后再去学具体原因

        //============================================
        //布尔值扩展
        //============================================
        boolean flag = true;
        if(flag == true){}
        if(flag){}//两者意义一致
        //Less is more!精简易读

    }
}

数据类型转换

 数据在运算的时候会依数据容量从低到高自动转换,如果是高容量类型转低容量类型就要使用强制转换函数。

public class Demo2 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//内存溢出

        System.out.println(i);//128
        System.out.println(b);//-128
    }
}

因为byte的表示范围是-128 到 127 ,所以把i的值赋给b的话会产生内存溢出的现象

强制转换的方法  (类型名)变量名

注意点:
1.不能对布尔值进行转换

2.不能把对象类型转换为不相干的类型

3.在把高容量转换到低容量的时候,强制转换

4.转换的时候可能存在内存溢出,或者精度问题!

        System.out.println((int)45.7);//45
        System.out.println((int)-39.87);//-39

如代码所示,浮点数转整型会损失精度。

        char c = 'a';
        int d = c+1;
        System.out.println(d);//98
        System.out.println((char)d);//b

如代码所示char与int的关系

其他内容扩展

        int money = 10_0000_0000;
        System.out.println(money);//1000000000

数字可以用_分割,输出的时候不会输出这个符号,用来处理大数字的时候特别方便

        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;
        System.out.println(total);

此时total输出-1474836480

此时计算溢出了

如果将total改成long类型呢

        int money = 10_0000_0000;
        int years = 20;
        long total = money*years;
        System.out.println(total);

也会得到一样的结果,因为money和years相乘之后得到的结果默认是int类型,相乘得到结果之后,才转换为long类型。

        int money = 10_0000_0000;
        int years = 20;
        long total = ((long)money)*years;
        System.out.println(total);

这样改就不会存在溢出问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值