Java基本变量自动转换_java--基本数据类型的转换(自动转换)

概念:Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。

首先,来了解下数据类型的基本理解:数据是用来描述数据的种类,包括其值和基于其值基础上的可进行的操作集合。

Java中数据类型主要分为两大类:基本数据类型和引用数据类型。

基本数据类型共有8种,分别是:布尔型boolean, 字符型char和数值型byte/short/int/long/float/double。由于字符型char所表示的单个字符与Ascii码中相应整形对应,因此,有时也将其划分到数值型中。引用类型具体可分为:数组、类和接口。因此,本文中Java类型转换的总结也将分为基本数据类型和引用数据类型两个方面展开。

自动转换

大小排列:byte----->shorrt----->int----->long----->float----->double类型依次从小到大排列

整形,实形,字符类型数据可以混合运算,运算中,不同类型的数据先转化为同类型,然后进行运算,转换从低级到高级,转换前于转换后的数据类型如下

795a52dd4e8de9c42192ce9e85fb6c40.png

我们来做一个自动转换的案列

char类型能不能转换为int类型呢?

1 packagepkg1;2

3 public classTest1{4 public static voidmain(String args[]){5 //定义一个char类型,字符和int类型可以自动转换

6 char c = 'a';7 int i =c ;8

9 System.out.println(i);10

11 }12 }

边缘看运行效果:

59fdb260cc95017892c25b14c7f015cf.png

可以看到char是可以自当转换成int类型的,但是输出的结果却是97,其实字符和整数有一种对应关系那就是ASCII表

a094c6c5207ae8db0866d57639795118.png

看看刚刚我们得出的小a对应的数字就是97.

如果两个int类型计算会不会自动提升类型。

1 packagepkg1;2

3 public classTest1{4 public static voidmain(String args[]){5

6 //如果两个int类型计算会不会自动提升类型

7 int a = 2147483647;8 int b = 12;9

10

11 int d = a +b;12 System.out.println(d);13 }14 }

可以看到编译不报错,但是结果,是为负数,这表示数字已经超过了int类型的长度,但并不会自动转换

0bcfe93709561296ee248d52d92fcb72.png

总结:int,long,float,double自身来计算的时候没有类型的提升,如果超出范围了就会出现精度的损失 。

int类型和float类型的计算转换成float

1 packagepkg1;2

3 public classTest1{4 public static voidmain(String args[]){5

6 //int类型和float类型的计算转换成float

7 float f = 1.4f;8 int y = 1;9 int f1 = f +y ;10

11 System.out.println(f1);12

13 }14 }

最后用int类型接收,编译是不成功的 ,在转换时一定要向大的类型转换才可以。所以一定要是float类型

feaf4234ffc768b718ca99053d783808.png

45e4abb4bfbf168a0fad9ad37cbd1127.png

问题一:

6069e8fcf4c107c21aebbc61ad1141f0.png

是可以的,因为小数的常量默认值是double类型的

问题二:

549e7e4fbee7312d48e8abb3de12072c.png

可以,为什么呢?

12.5f是表示float类型的常量,它是占4个字节,double类型占8个, 就好比大鱼吃小鱼一样,可以将小的吃掉。这个类型也是一样的。

总结:小的表数范围是常量或者变量可以自动的向大的表数范围的类型转换,包括int类型向double类型转换一样。大的表述范围的值不能自动的赋值小的表述范围的变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值