Java笔记整理 —— 数据类型转换(自动与强制) String的转换

自动数据类型转换

        当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这就是自动类型转换

1. 数据类型精度大小排序图

int a = 'c';//char类型自动转换为int型,正确
double b = 10;//int类型自动转换为double型,正确

 2. 自动类型转换细节

    1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成表达式中精度(容量)最大的那种数据类型,如果只有byte,short和char,那么所有值将被提升为int,然后再进行计算

    如果有一个操作数为long型,计算结果为long型。有一个操作数是float型,计算结果为float型。有一个操作数是double型,计算结果为double型。其余全为int型

float d1 = 10 + 1.1;//10是int类型,1.1是double类型(默认),因此右边是double类型

 正确写法:

float d1 = 10 + 1.1F;

2.当我们把精度大的数据类型赋值给精度小的数据类型时,会报错,反之进行自动类型转换。

int n2 = 1.1;//错误,double类型不能转换为int类型

  但是下面讨论一个问题——byte的赋值:

byte b1 = 10;

  这种写法是正确的,但是10不应该是int类型吗?实际上,当把具体数赋给byte时,首先判断该数是否在byte范围内,如果是就可以赋值,然后才看的数据类型

int n2 = 1;
byte b2 = n2;

  但是对于这种写法就会报错,因为n2是一个变量,已经分配了4字节的空间,无法转换为1字节的byte,如果是一个变量,则直接判断数据类型。

 3.byte和char之间,以及short和char之间不会相互自动转换。

byte b1 = 10;
char c1 = b1;//错误

 4.byte,short,char三者可以计算,在计算时首先转换为int类型。

  注意即使是byte+byte(char+char等同理)最后也是int类型。

        byte b1 = 10;
        short s1 = 20;
        char c1 = 30;
        int t1 = b1 + s1 +c1;//正确,结果为60
        byte b1 = 10;
        byte b2 = 20;
        byte b3 = b1 + b2;//错误,b1+b2的结果是int类型

5.boolean不参与转换。

        boolean pass = true;
        int num = pass;

 6.自动提升原则:表达式结果的类型自动提升为操作数中精度最大的类型。

        byte b1 = 1;
        short s1 = 2;
        int t1 = 3;
        char c1 = 20;
        double d1 = b1 + s1 + t1 +c1;//正确,结果为26.0(一定带小数点)

  7. 复合赋值运算符会进行类型转换

	    byte a = 3;
	    a += 6;//虽然6是int类型,但是使用 += 号会进行自动转换
	    System.out.println(a);//输出结果为9

	    byte a = 3;
	    a = a + 6;//这样就不能进行类型转换了
	    System.out.println(a);

强制数据类型转换

     自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),可能造成精度 降低或溢出

public static void main(String[] args){
        int i = (int)1.9;//精度降低
        int j = 2000;
        byte b1 = (byte)j;//精度溢出
        System.out.println(i);
        System.out.print(b1);
	}

强制类型转换细节

    1.强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级。

int x = (int)10*3.5 + 6*1.5;//错误,右边还是double类型
int y = (int)(10*3.5 + 6*1.5);//正确,右边先计算,再强转为int类型

    2.char类型可以保存int的常量值,但不能保存int的变量值,需要强转。

        char c1 = 100;//正确
        int n = 100;
        char c2 = n;//错误,n为int变量值
        char c3 = (char)n;//正确,n强转为char类型

 String类型转换

    1.基本类型转String类型

  语法:将基本类型的值 + "" 即可。

        int a = 100;
        String b = a + "";

    2.String类型转基本类型

  语法:通过基本类型的包装类调用parse方法即可。

        String a = "12345";
        int b = Integer.parseInt(a);
        double c = Double.parseDouble(a);

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值