Java基础05:类型转换

Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换;

低----------------------------------------------------高

byte,short,char-->int-->long-->float-->double (备注:浮点数的优先级大于整数 )

在Java的运算,不同类型的数据先转换为同一类型,然后进行运算;

强制类型转换:高容量数据类型转换为低容量数据类型时,需要进行强制转换;

自动类型转换:低容量数据类型转换成高容量数据类型时,可以自动类型转换;

类型转换举例1:强制类型转换、内存溢出问题

public class List07 {
    public static void main(String[] args) {
        int i = 128;

        byte b = (byte)i;
         //int是高容量的数据类型,转成byte低容量数据类型时需要进行强制转换

        System.out.println(i);//输出128

        System.out.println(b);//输出-128  高转低强制转换时注意内存溢出问题;
                 
       // (byte的支持1个字节,表示整数的范围:-128—127,不能表示128,所以内存溢出)
    }
}
强制转换方式  :  (byte)i;  在类型变量前加(),括号内写要转换的数据类型

注意:高转低强制转换时注意内存溢出问题

类型转换举例2:自动类型转换

package basic;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class List08 {
    public static void main(String[] args) {

        //从低到高,可以自动类型转换,不需要强制转换;
        int i = 128;
        double d = i;
        System.out.println(d); //输出  128.0
    }
}

类型转注意点:

  • 不能对布尔值进行转换;
  • 不能转换成不相干的类型;
  • 把高容量数据类型转换成低容量数据类型,需要强制转换;
  • 类型转换的时候可能存在内存溢出,或者精度问题;

类型转换举例3:精度问题

public class List09 {

    public static void main(String[] args) {

        System.out.println((int)23.7);  //输出23

        System.out.println((int)-56.34);  // 输出-56

        //强制转换为整数后精度变低
    }
}

类型转换举例4:字符类型(char)也可以自动转换为整数(int),整数(int)也能强制转换为字符(char)

public class List10 {
    public static void main(String[] args) {
        char c = 'a';
        int i = c +10; // 输出107 字符 c 被自动转换成了97。说明字符本质上也是数字
        System.out.println(i);
        System.out.println((char) i);//输出k
    }
}

类型转换举例5:操作比较大的数字时,注意溢出问题

public class List11 {
    public static void main(String[] args) {

        //操作比较大的数的时候,注意内存溢出问题
        //JDK7新特性,数字之间可以用下划线分割;

        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;  //int类型的范围为-2147483648 到 2147483647
                                  // total远远超出了int的表述范围,内存溢出
        System.out.println(total);  // 输出 -1474836480
        
        //若要计算正确可使用一下方式
        long total1 = money*(long)years;
        System.out.println(total1); //输出正确结果 200_0000_0000;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值