Java类型转换

本文详细介绍了Java中基本数据类型的自动转换和强制转换规则,包括转换顺序、转换时的溢出处理以及不同类型之间的运算。同时,讲解了String与基本类型间的转换方法,强调了在转换过程中的注意事项和潜在问题。
摘要由CSDN通过智能技术生成

基本数据类型转换

参考内容: 韩顺平自动类型转换

  • 自动类型转换
char -> int -> long -> float -> double  //箭头表示可以自动转换,亦可表示容量大小
byte ->short ->int -> long -> float -> double
  1. 有多种类型的数据混合运算时,系统自动将所有数据转换为容量最大的那种数据类型
int a =1 ;
double b =1.1;
float c = 2.2;
byte d = 5;
short e = 8;
double f = a + b + c + d + e;//这样是没问题的,看右边结果类型是double
  1. 当我们把容量大的赋值给容量小的,会报错,需要显性转换
int a;
double b = 1.1;
a = b;//会报错     a = (int ) b;
  1. (byte,short) 与 char 之间不会相互自动转换

(1) 将具体数赋值给byte 时 ,先判断数值大小范围是否在byte范围内,可以没问题(虽然没问题,但对编译器来说,我们正在将大物体装进小容器中,所以有溢位的可能),反之,则报错
(2)如果是变量赋值需要判断类型,如果是容量大的赋值给byte ,需要强转

byte a = 10;// ok 没问题
int b = 1;
byte c =a;//no no no ,此时需要强转
byte d = (byte ) a;//yes
  1. byte short char 他们三者计算,但计算时首先转换为int 类型(同种类型也是如此)
int a =1;
byte b =2,c =3; 
char d= 'a';
int e = a+b+c;   //看等式右边,结果为int;
byte f= b+ c ;    //错误 ,尽管都是byte类型
int  g = b+c ;     //ok
  1. boolean 不参与转换
  2. 自动提升原则,表达式结果类型自动提升操作数中最大的类型
  • 强制类型转换细节
  1. 当进行数据的大小从 大 到小 ,需要强制转换
  2. 强转符号只针对最近的操作数有效
 int x = (int )10*3.5+6*1.5;   //系统报错,此处将10强转为int 类型  结果是double类型
 int y = (int )(10*3.5+6*1.5);  //y= 40;
  1. char 类型可以保存int 值,但不保存 int 的变量值,需要强转 (仔细看看会发现神奇的现象)
char c1 = 97;
char c2= 'a'; 
char c3 ='a' +10;                // 右边确实为int类型,但是左边为char
                                 //会发现不需要强转,它自动类型转换
                                 
System.out.println((int)c1);     // 97
System.out.println(c1);          //a
System.out.println((int)c2);     //97
System.out.println(c2);          //a
System.out.println('a'+10);      // 107   'a'+10  为int 类型  
System.out.println(c3);          // k
  1. byte short char 在进行运算时当作int 类处理
  2. 整数值转化为char型时会舍弃一个字节
byte b = (byte) '\uFFF4';    //已经舍弃一个字节,因为byte只有一个字节,
                             //所以b 为 -12;但原本数值为 65512
int c = '\uFFF4';
System.out.println(b);
System.out.println(c);
-12
65524

String 和基本类型转换

  1. 基本数据类型转换为String 类
int a = 10;
short b= 2;
double c = 3.3;
String s1 = a +  " ";
String s2 = b +  " ";
String s3 = c +  " ";   
  1. String 转换 为 基本数据类型
String s = "123" ;
int num1 = Integer.parseInt(s);                  //123
short num2 = Short. parseShort(s);               //123
double num3 = Double.parseDouble(s);             //123.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值