欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

3_(JAVA基础300集最全教程 学习)java 数据类型--一个类型强制转换的问题

程序员文章站 2022-04-18 13:37:10
...
1.运行以下代码会报:Type mismatch: cannot convert from int to byte

public static void main(String[] args) {
byte a=1;
byte b=2;
byte c=a+b;
System.out.println(c);
}


使用2目运算符的运算中,低于int型的都会转成int运算
高于int型的会转成最高的那个类型运算
使用3目运算符时,相对低级的数值会提升

所以应该修改为以下方式:
public static void main(String[] args) {
byte a=1;
byte b=2;
byte c=(byte)(a+b);
System.out.println(c);
}


2.计算时溢出问题:

public static void main(String[] args){
    long times=7000*60*24*365*70;
    System.out.println(times);
}


运行结果为:-154037760

看结果应该是溢出了。

public static void main(String[] args){
    long times=7000*60*24*365*70L;
    System.out.println(times);
}


运行结果为:-43103710720

最后已经转换为long类型了,问什么还是会溢出呢??

再把类型转换放在最前面:
public static void main(String[] args){
    long times=7000L*60*24*365*70;
    System.out.println(times);
}


运行结果为:257544000000

所以这里就要求我们在进行这类计算时,需要把类型转换放置到最前面,避免在计算中就已溢出。

3.类型的转换规则:
                  char
                   |
                   |
byte---->short---->int---------->long
                   |              |
                   |              |       
                  float--------->double

int--->double

int---->float丢失精度
long--->float丢失精度
long--->double丢失精度



4. swhitch 支持的类型为整型和枚举型(在JDK7中新增String类型),当出错时则会报:Only convertible int values or enum variables are permitted

根据基本类型的转换规则,所以此处所有会自动转换为int类型的类型就可以,所以包含的类型为:byte,short,char,int及enum

相关标签: java 类型转换