java number类型转换_JAVA数据类型转换

一、数据的类型转换

因程序的需求,数据类型是可以相互转换的,数据类型转换分为两种,第一是隐式转换,第二是显式转换;

1、隐式转换

转换条件

转换场景:在赋值与运算的时候

转换条件:右侧的值必须小于声明变量的范围

参考 右边的值的类型范围小于声明变量类型的范围 如 long num1 = 80;

特点:隐式转换自动完成

//声明一个类名称

public class Demon3Var{

//声明一个公开的构造方法

public static void main(String[] args){

//证明long类型不需要加L 隐式转换

//为int类型 向 long 类型转换

long num1 = 100;

System.out.println(num1);

//右侧是float类型 左侧是long类型 符合从小到大,发生隐式转换

float num4 = 30L;

System.out.println(num4);

//如果右侧值类型范围比声明数据类型要小(其实不用)

Byte num5 = 1000;

System.out.println(num5);

}

}

2.关于数据类型和变量与值的辩证

数据类型对变量和常量进行生效,我们定义的常量默认的与被允许指定的共有 int long double float 其它无法指定

我们需要通过将常量赋值给指定的变量类型,使其发生隐式转换~

声明的常量类型是否需要加L F D等等 不同类型的区间值是有交集的,值在交集部分中时不需要声明类型的,而超过所定义的最大区间则需要指明类型

2.显式转换

转换语法:

特点: 代码需要进行特殊的格式处理,不能自动完成

格式: 范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据;

注意事项:

强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出问题。在浮点型向number转换就会丢失精度,在大的值向小范围区间类型变量赋值就会出现数据溢出;

byte/short/char 三种是可以发生数学运算的

Byte/short/char 三种类型晕眩的时候,都会被提升成为int类型,然后在进行计算

boolean类型 不能发生数据类型转换

public class Demon4Var{

public static void main(String[] args){

//将int类型转换为byte类型

//左侧为int变量范围小 右侧范围long大 但是100也是int中交集可以转换

int num1 = (int) 100L;

System.out.println(num1);

//如果将long的60亿转换成int类型会有数据丢失,因为int类型最大支持20多个亿

int num2 = (int) 6000000000L;

System.out.println(num2);//结果为1705032704 数据丢失

//如果将浮点型转换成整型 会丢失精度

int num3 = (int) 3.14;

System.out.println(num3);//结果为3 精度丢失

//byte/short/char 都是可以进行计算,char字符会被转成ASCLL表中的值

int num4 = 'A' + 1;

System.out.println(num4);//结果为66

//byte/short/char 在进行计算的时候 都会被隐式转换成int类型

byte num5 = 20;

short num6 = 20;

char num7 = 'A';

int result = num5+num6+num7;//在进行计算的时候 都被转换成int类型 所以接受变量类型用int

System.out.println(result);

}

}

二、ASCLL 编码表

上面所知道字符也是可以进行计算的,计算机一切数据底层都是二进制,我们的字符在运算的时候会用底层数据,而这个对应规则为计算机的ASCLL编码表以及unicode编码表;

ASCLL 美国信息交换标准代码,他包含了英文大小写字符、特殊符号等信息与二进制文件映射关系

unicode 码表: 万国码 也是数字和符号的对照关系 0-127和ASCII完全一样,但是从之后包含更多字符汉子,以及表情符号

public class Demon5Var{

public static void main(String[] args){

//在进行运算的时候,是字符所对应底层的数字用于参与计算

char str = 'A';

System.out.println(str+0);//结果为65

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值