Java数据类型的转换

自动类型转换

        首先我们来看自动类型转换。自动类型转换有两个条件。

        (1)转换前后的数据类型兼容;

        (2)转换后的数据类型的范围大于转换前的数据类型。

        因此可以得到如下的自动转换图。

        

        现在我们看一个例子说明一下自动类型转换的应用。

public static void main(String[] args){
    int x=30;
    float y=22.19f;
    System.out.println("x/y= "+(x/y));
    System.out.println("10/3.5= "+(10/3.5));
    System.out.println("10/3= "+(10/3));
}

        代码中,第一行输出为int与float的变量运算,按照自动类型转换,int类型自动转换为float,所以最终的结果也是float类型。

        第二行输出为int与double的常量运算,按照自动类型转换,int类型自动转换为double,所以最终的结果也是double类型。

        第三行输出为两个int的常量运算,不需要做类型的转换,因此结果也是一个int常量。

        实测的输出如下,与我们的推断相同。

x/y= 1.3519603

10/3.5= 2.857142857142857

10/3= 3

强制类型转换

        对于强制类型转换,使用的格式如下:

        (要转换的数据类型)变量名称

        转化的方法则是舍弃掉小类型不存在的位数。这种强制类型的转换是在程序代码中完成的,因此称为显式转换。以下的程序说明了如何在整数与浮点数之间转换。

public static void main(String[] args){
    float f=30.3f;
    int x=(int)f;
    System.out.println("x= "+x);
    System.out.println("10/3= "+(10/3));
    System.out.println("(float)10/3= "+((float)10/3));
}

        其中x是将float型强制转换为int型,舍弃掉了小数部分,应该得到30.

        10/3是两个int类型相除,应该得到整数,而使用强制类型转换后将10转为float常量,那么结果就应该是float类型。

        结果如下:

x= 30

10/3=3

(float)10/3=3.3333333

String类型转换

        除了自动类型转换和强制类型转换还存在一种转换,即所有类型都向String类型转换。String是一个Java内置的字符串类,将一系列字符序列用双引号""引起来,用来表达一系列char类型的字符的序列。基本类型与String类用+连接就会自动转为String类。如下是字符串与基本类型用+连接的示例。

public static void main(String[] args){
    String str="hello java";
    int x=10,i=1,j=1;
    str =str+x;
    System.out.println("str= "+str);
    System.out.println("1+1= "+i+j);
}

        输出结果为:

str= hello java 10

1+1= 2

        我们可以看出,+可以连接两个字符串。而且,只要字符串与其他类型相加就会自动转化为字符串类型。例如int类型的10就会转为字符串"10",然后再和str相连接。下面的字符串常量也是同样的道理。我们可以使用一个空字符串+一个任意类型将它转换为字符串类型。

public static void main(String[] args){
    String str1=""+10;
    String str2=""+12.33f;
    String str3=""+23.57;
    String str4=""+true;
    System.out.println("str1= "+str1);
    System.out.println("str2= "+str2);
    System.out.println("str3= "+str3);
    System.out.println("str4= "+str4);
}

str1= 10

str2= 12.33

str3= 23.57

str4= true

        我们可以看到:这样就把其他基本类型转化为String类型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值