首页 > 其他分享 >类型转换

类型转换

时间:2022-12-24 19:23:51浏览次数:22  
标签:类型转换 int System println public out

类型转换

  • 由于java是强类型语言,所以要进行有些运算的时候,要进行类型转换
  • 低----------------------------------------------------->高
  • byte,short,char---->int--->long--->float--->double
  • 小数的优先级大于整数
  • 运算中,不同类型的数据先转换为同一类型,然后在进行运算。

强制类型转换

(类型)变量名 高----->低

public class six {
    public static void main(String[] args) {
        int i = 128;
        byte a = (byte)i;//内存溢出
        System.out.println(a);
    }
}

输出结果为:-128

因为数据类型byte的长度是-128 ~ 127,超出范围就会出现内存溢出的问题

自动类型转换

低----->高 不需要在前面加类型

public class six {
    public static void main(String[] args) {
        int i = 111;
        double a = i;
        System.out.println(a);
    }
}

输出结果为:111

注意点

  1. 不能对布尔值进行转换
  2. 不能把对象(变量)类型转换为不相干的类型
  3. 在把高容量转换为低容量的时候,强制转换
  4. 转换的时候可能存在内存溢出,或者精度问题

数据类型转换例子

public class six {
    public static void main(String[] args) {
        System.out.println((int)23.7);
        System.out.println((int)-35.89);
    }
}

输出结果为:

23

-35

public class six {
    public static void main(String[] args) {
        char a = 'a';
        int x = a;
        System.out.println(x);
        System.out.println((char)x);
    }
}

输出结果为:

97
a

public class six {
    public static void main(String[] args) {
        int money = 20_0000_0000;
        int years = 20;
        int total = money * years;  //1345294336计算的时候溢出了
        long total2 = money * years;  //默认是int,转换之前已经存在了问题
        long total3 = money * (long)years;  //先把一个数转换为long
        System.out.println(total);
        System.out.println(total2);
        System.out.println(total3);
    }
}

输出结果为:

1345294336
1345294336
40000000000

标签:类型转换,int,System,println,public,out
From: https://www.cnblogs.com/wwzuiniu/p/17003235.html

相关文章

  • python:类型转换
      类型转换不是万能的,毕竟强扭的瓜不会甜,我们需要注意:1.任何类型,都可以通过str(),转换成字符串2.字符串内必须真的是数字,才可以将字符串转换为数字......
  • 整数范围与类型转换
    -2147483647-1== 2147483648U-2147483647-1<-2147483647-2147483647-1< 2147483647(unsigned)-2147483647-1< 2147483647上面四个表达式成立吗?为什么?并用C语......
  • 类型转换
    一、int转stringc++11标准增加的全局函数std::to_string(参数)。参数类型可以是:int、long、longlong、unsigned、unsignedlong、unsignedlonglong、float、double、l......
  • 整数范围与类型转换
    -2147483647-1==2147483648U-2147483647-1<-2147483647-2147483647-1<2147483647(unsigned)-2147483647-1<2147483647上面四个表达式成立吗?为什么?并用C语言......
  • 整数范围与类型转换
    -2147483647-1==2147483648U-2147483647-1<-2147483647-2147483647-1<2147483647(unsigned)-2147483647-1<2147483647上面四个表达式成立吗?为什么?并用C语言......
  • 整数范围与类型转换
    代码#defineINT_MAX2147483647#defineINT_MIN(-INT_MAX-1)#include<stdio.h>#include<string.h>intchecktruefalse(inta){if(a){pri......
  • 整数范围与类型转换
    -2147483647-1==2147483648U-2147483647-1<-2147483647-2147483647-1<2147483647(unsigned)-2147483647-1<2147483647上面四个表达式成立吗?为什么?并用C语言编程测......
  • 整数范围与类型转换
    -2147483647-1==2147483648U-2147483647-1<-2147483647-2147483647-1<2147483647(unsigned)-2147483647-1<2147483647上面四个表达式成立吗?为什么?并用C语......
  • 整数范围与类型转换
    代码截图:代码运行截图:int的范围是:-2147483648~2147483647,unsignedint的范围是:04294967295。但是由于人为规定的100000…000(31个0)为-2147483648,所以范围就变成了-2147......
  • 整数范围与类型转换
    整数范围与类型转换-2147483647-1==2147483648U-2147483647-1<-2147483647-2147483647-1<2147483647(unsigned)-2147483647-1<2147483647上面四个表达式成立......