[后端]java基础(3.3)java基础进阶之数据基本类型的转换,前端和后端哪个好找工作

来源:未知 浏览 102次 时间 2021-06-17 15:08

在数据类型那章我们学习了java的八大基本类型我们发现。除了boolean类型其它的几种类型都是数(char类型也可以看成是数)。那么既然都是数SEO排名服务其它的几种类型都是数(char类型也可以看成是数)。那么既然都是数那么他们之间能不能相互转换呢?
基本类型之间的转换我们分为以下几种情况

小范围向大范围转换

[后端]java基础(3.3)java基础进阶之数据基本类型的转换

低精度向高精度转换

高精度向低精度转换

[后端]java基础(3.3)java基础进阶之数据基本类型的转换

基本类型向类类型转换

类类型向字符串转换

由于目前所学知识的限制我们今天只讲去前五种情况。
首先我们来看看第一种情况:小范围向大范围转换
这里的小范围和大范围指的是数据的范围都是相对的概念比如int相对于Long就是小范围相对于byte就是大范围。
现在我们有一个int类型的变量a给它 赋值为10然后我们再申明个long类型的变量b然后我们把a赋值给b我们输出一下b的值这就是第二种情况,大范围向小范围转换:

int a = 1;

long b = a;

System.out.println(b);

你会发现这跟普通的赋值好像没有什么区别。这是因为long类型的范围本来就比int大jvm虚拟机自动就处理了(神器的jvm)就好比把小盒子里的东西放到大盒子直接倒进去就行了。 如果我们反过来试一下会发现: a处报了错说明编译没通过鼠标放在a上立马显示了错误提示

Type mismatch: cannot convert from long to int

意思是不能将int类型转换为long类型并且给出了三个解决方案我们点一下“add cast to int这个”这个方案是讲a强转成int(另外两种大家可以自己试一试)于是代码变成了:

long a = 1l;

int b = (int) a;

System.out.println(b);

没错在变量前面加上(int)就完成了强转。 但是我们前面提到long范围比int类型的大还用盒子做了比喻有的童鞋可能会问:如果大盒子里的东西超出小盒子储存的范围会怎样?比如我a的值一开始就弄个10000000000l我们来看代码:

long a = 10000000000l;

int b = (int) a;

System.out.println(b);

运行的结果却是1410065408当然再多加几个0可能还会变成负数这结果显然不对啊。这是因为long存放的东西超出了int能接受的范围导致内存溢出了具体的原理需要讲到底层二进制代码有兴趣的童鞋可以自己去查查资料。 由以上两条可以总结出:

范围小的数转范围大的数可以直接转换

范围大的数转范围小的数需要强转如果范围大的数的值超出的范围小的数的值则会导致内存溢出 接下来我们看看低精度向高精度转换:

float a = 1.23f;

double b = a;

System.out.println(b);

我们的运行结果是1.2300000190734863我们的1.23可以看成是这个数四舍五入之后保留两位小数之后留下来的这就说明这个数的精确度比1.23高所以结果是对的。 那么反过来呢你会发现和long转int一样也需要强转:

double a = 1.23d;

float b = (float) a;

System.out.println(b);

结果自然毫无疑问是1.23那么其实我们的高低精度转换也可以看成是大小盒子的问题那么会和long转int一样出现内存问题么比如:

double a = 1.255555555555555d;

float b = (float) a;

System.out.println(b);

可以根据我们的运行结果“1.2444445”看出并不会出现这个问题后面的位数数被我们神奇的jvm虚拟机自动去掉了。 由以上两条我们可以总结出:

低精度的数转高精度的数可以直接转换转换的结果比低精度的数经度高

高精度的数转低精度的数需要强转如果高精度的数超过了低精度数的经度会保留高精度数在低精度中的最大位数

当然我们的intlong byte等等可以看成是精度为0的小数因此也符合这个以上两条规则 还记得在讲字符串的时候我们讲过这样一个例子:

int a = 1;

int b = 2;

System.out.println(""+a+b);

当时讲过这个输出的结果为什么么是12而不是3原因是当前面拼接上了字符串之后后面的会自动被强转为字符串拼接起来百度seo后面的会自动被强转为字符串拼接起来那么基本类型向字符串转换这个情况的规律就是:

基本类型需要转成字符串时在基本类型的前面拼接一个字符串即可。

那么为什么是在前面拼接不能在后面拼接呢?我们可以运行下面代码做个试验:

int a = 1;

int b = 2;

System.out.println(a+b+""+a+b);

标签: 范围类型int我们