【JAVA】Java中的类型转换

目录

1.自动类型转换(隐式转换,小类型转换为大类型)

2.强制类型转换(显示转换,大类型转换为小类型)

3.小于4字节的类型转换问题

3.1 byte<->int

3.2 char<->int

3.3 String<->int


Java作为一个强类型的编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验。在Java中,当参与运算不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式)强制类型转换(显示)

Java数据类型的数据范围:

补充:计算机存储数据都是二进制的01整型,float和double不是按照二进制计算的,而是按照科学计数法来模拟存储数据的。

  • float转换为二进制,大概是2^128数量级的数字
  • double转换为二进制,大概是2^300数量级的数字

注意:只有有关系的类型之间才能转换,毫无关系的类型不能转换

boolean<->int毫无关系,不能发送互相转换

1.自动类型转换(隐式转换,小类型转换为大类型)

自动类型转换:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理

特点:数据范围小的转为数据范围大的时会自动进行

两种情况:

a.不参与运算时,直接赋值

        int a=3;
        long b=a;//int->long

b.小类型与大类型共同参与运算时,小类型先提升为大类型然后参与运算

int a=10;
double b=2.0;
double result=a/b;//int->double然后再double/double

2.强制类型转换(显示转换,大类型转换为小类型)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大->数据范围小(可能出现精度丢失,丢掉小数点或者数据溢出)

//示例1
long a=10;
int b=(int)a;//long->int需要强制转换

//示例2
long a=100;
float b=a;//这个属于小类型转换为大类型的隐式提升

3.小于4字节的类型转换问题

3.1 byte<->int

1.直接赋值

若整型字面量在byte数值的保存范围内,可以直接赋值给byte不需要转换

byte a=120;//可以直接赋值,不需要强转

若整型字面量在byte数值的保存范围之外,需要强制类型转换

byte b=(byte)130;//130超出了byte的保存范围,需要强制类型转换

若拿整型变量给byte赋值,无论这个变量保存的数值在不在byte的范围之内,都需要强转

int a=10;
byte c=(byte)a;//a是int变量,编译器编译时无法确定数值,因此都需要强转

2.byte变量的运算

CPU在内存进行读写时,都是按照4字节来进行读写,因此小于4字节的数据类型byte,char,short参与数学运算时,统一提升为int之后再参与运算。

byte a=10;
byte b=20;
byte c=a+b;//byte+byte=>int+int=int

final:声明常量。final修饰的变量成为常量,常量一旦赋值后,值不能改。

被final修饰的变量,除了值定义后不能改,存储在计算机内部时,类型也不能转换

此时a和b参与运算时,被final修饰,因此CPU读写时就是按照原来的byte类型进行读写。

final byte a=10;
final byte b=20;
byte c=a+b;//不再报错了

3.2 char<->int

计算机存储任何数据最终都是01二进制整数串,字符在存储时,就需要有规则将每个字符唯一的映射成一个整型数字。

这里介绍一个ASCII码编码规则:

ASCII 码规定使用一个字节来存储英文字符,最前面的一位统一规定为0,不同的字符由后面的7位确定, 所以ASCII码一共规定了128个字符的编码,其中包括:

  • 96个可打印字符
    • 大写英文字符和小写英文字符
    • 阿拉伯数字
    • 标点符号
    • 特殊符号
  • 32个不可打印的控制符号

 1.char->int按照编码规则自动转换

char a='a';
char b='A';
char c='铭';
int num1=a;
int num2=b;
int num3=c;

2. int->char 强制类型转换

int数值必须在char的范围内[2^15]的数字才能有对应的字符对应。

123456已经超过了char的范围,所以没有对应的字符。

 思考:编程实现小写字符转为大写字符

char a='a';
char b=(char)(a-32);//结果为A

3.3 String<->int

1.int->String

a.直接拼接

Java中任意类型只要和字符出对象+,统统都转为字符串拼接操作

 加上括号,先进行int+int=int操作,再进行拼接

 2.任意类型->String

使用String提供的方法valueOf方法

 3.String->int

调用Integer.parseInt(str);//将字符转str转为int

前提:这个str字符串变量必须由纯数字组成的,不能包含其它数据,字母都不行,否则会转换出错

不由纯数字组成时,会报错

 

 

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值