基本类型的类型转换

  Java所提供的7种数值类型之间可以进行相互转换,有两种类型转换方式:自动类型转换和强制类型转换。
自动类型转换
  如果系统支持把某种基本类型的值直接赋予给另一种基本类型的变量,这种方式称为自动类型转换。当把表示范围小的数值或变量直接赋给另一个表数范围较大的变量的时候,系统将可以进行自动类型转换,否则就需要强制转换。

byte
short
char
int
long
float
double

  当把任何基本类型的值和字符串值进行连接操作的时候,基本类型的值将会自动转换为字符串类型。
  实例代码如下:

package Chapter03;

public class PrimitiveAndString {
    public static void main(String[] args) {
        String str2=3.6f+"";
        System.out.println(str2);
        System.out.println(3+4+"Hello! ");
        System.out.println("Hello! "+3+4);
    }
}

//运行结果
//3.6
//7Hello! 
//Hello! 34

强制类型转换
  如果是把下面的这个图反过来转换,那就必须进行强制转换。

byte
short
char
int
long
float
double

  强制转换的语言是(targetType)value,强制转换的运算符是()。实例:

package Chapter03;

public class NarrowConversion {
    public static void main(String[] args) {
        int iValue=233;
        byte bValue=(byte)iValue;
        System.out.println(bValue);
        double dValue=3.98;
        int tol=(int)dValue;
        System.out.println(tol);
    }
}
//输出
//-23
//3

  那么int类型的数据是如何转换到byte的数据并得到-23的?我们知道,int类型数据在Java中以32位进行存储,而byte数据以8位进行存储。所以转换关系如下图,计算机中以补码形式处理和存储数据,所以得转换为原码
在这里插入图片描述
  在Java中有一行容易出错的代码:

float a = 5.6;

  其中,5.6默认为double类型的数据,所以将5.6赋予给float类型将发生错误,必须使用强制转换类型。
  通常情况下,字符串不能转换为基本类型,但是通过基本类型对应的包装类可以实现把字符串转换为基本类型。

String a = "45;
int iValue = Integer.parseInt(a);

表达式类型的自动提升
  当一个算术表达式中包含多个基本类型的时候,整个算术表达式将会发生自动提升。

  • 所有byte类型、short类型和char类型将被提升到int类型
  • 整个算术表达式将自动提升到与表达式最高等级操作数同样的类型。

  下面展示一些典型的错误:

short value = 5;
value = value -2;

  以上代码错误,因为value -2将自动转换到int类型,所以将int类型赋值给short类型将发生错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值