前言

java有8种基本类型,分别有

基本数据类型

基本数据类型

byte

char

short

float

int

double

long

boolean

在java程序中,不同的类型需要进行转换。而转换有两种方式:自动转换强制转换

1. 自动类型的转换

java中所有数值类型都可以互相转换,如下图所示:

如果把某种基本类型的值直接赋给另一种基本类型的变量时,则这种方式称为自动类型转换。因为把一个数值范围小的变量直接赋值给一个数值范围大的变量时,虚拟机可以进行自动转换;就好比有两瓶水,当我们把小瓶里的水倒入大瓶中时不会造成任何溢出,这当然没有任何问题了。

下面程序演示了自动类型转换

public static void main(String[] args) {

        char ch = 'a';
        // char可以直接转换成int
        int cha = ch;
        // 输出97
        System.out.println(cha);

        int a = 2;
        // int类型可以直接转换为float
        float b = a;
        // 输出6.0
        System.out.println(b);

        byte byt = 9;
        // byt不能转换成char,下面代码将报错
        //char ch = byt;

        // byte可以直接转换成double
        double dd = byt;
        // 下面将输出9.0
        System.out.println(dd);
    }

当任何基本类型与字符串值进行连接运算时,基本类型将自动转换成字符串类型。所以当我们希望把基本类型转换成对应的字符串时,可以把基本数据类型与空字符串进行连接。

public static void main(String[] args) {

        String str = 3.5f + "";
        // 下面将输出3.5
        System.out.println(str);

        // 下面将输出7hello
        System.out.println(3 + 4 + "hello");
        // 下面将输出hello34
        System.out.println("hello" + 3 + 4);

    }

对于表达式3 + 4 + "hello",会先执行3+4的运算,然后再进行7+hello的运算。而对于"hello" + 3 + 4,会先执行hello+3运算,此时hello3是字符串,再和4进行连接运算,4也被认为是字符串进行处理了。

2. 强制类型转换

如果希望把上图中箭头右边的类型转换为箭头左边的类型,这就必须进行强制类型的转换了。就好比把大瓶子里的水倒入小瓶子中,就可能会造成溢出!

public static void main(String[] args) {

        float f = 5.0f;
        // 浮点型强制转换为整型
        int a = (int)f;
        // 下面将输出5
        System.out.println(a);
        int aa = 255;
        // 整型强制转换为字节
        byte b = (byte)aa;
        // 下面将输出-1
        System.out.println(b);
    }

可以看到,将aa强制转换成byte类型时,造成了溢出。因为int类型是32位的,而byte是8位的,所以只保留了int类型的前8位,溢出部分则没有了