不同数据之间的转换
数据之间的转化方式有两种情况:
-
隐式转换(自动类型转换,由JVM将在运算时完成数据类型的自动转换,高精度的接受低精度的值) int 可以直接接受byte类型的,在前一篇中有些到数据类型的精度排序 ,在进行运算时,京都不同,则通过隐式转换,转换为精度高的数据类型 例如:一个整型和一个双精度型相加,最后则是一个双精度型的答案哦? 对于精度排序,可点击这里查看?
-
显示转换 (由开发人员通过代码的方式手动完成转换操作)
1.强制类型转换:转换时,如果值的精度超过了目标类型最大范围,会丢失精度(前提是转换的数据类型是同一个打雷的型,将精度高的赋值给精度低的过程) 高精度类型 B = (低精度类型)A;2.parse转换:用于将String类型的转换成其他基本数据类型
3.toString转换:用于将其他基本数据类型转换为String类型
装箱和拆箱只用在基本数据类型和String 类型的转换中
基本类型不具备任何的函数(方法),只存储值,如果需要对基本类型提供更多的方法,利用其包装类
查看包装类,☞ https://blog.csdn.net/dDirge/article/details/96718471
例题:
键盘接受一个单精度浮点类型,并将该类型进行装箱,转换成字符串类型
将上题中的字符串类型转换成双精度浮点包装类型,进行拆箱后再转换成整型
import java.util.Scanner; //这里进行引入Scanner包,之后进行调用键盘
public class Exercise{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输出想输入的单精度浮点类型的数:");
//首先通过键盘键入一个单精度浮点类型
float num1 = sc.nextFloat();
//进行装箱 利用了float的包装类 Float
Float num2 = new Float(num1);
//进行toString的转换,基本数据类型转化为String类型,
//也要利用基本类型的包装类
String num3 = Float.toString(num2);
System.out.println("输出转换好的字符串:"+num3);
//字符串类型转换成双精度浮点包装类型
Double num4 = Double.parseDouble(num3);
//拆箱,使得double的值具有意义
double num5 = num4.doubleValue();
//得到的double型的数据转换为int型的数据是高精度王低精度赋值,
//则需要用强制手段,一般这种情况会丢失精度
int num6 = (int)num5;
System.out.println("输出拆箱后的整型"+num6);
}
}
附上昨晚自己的小错误,大家也要注意咯?
int count1;
int count2;
int count3;
count3 = count1+count2;
//意味着count3大于count1和count2中的任意一个值
double a = count1/count3;
double b = count2/count3;
System.out.println("a的值为:"+a);
System.out.println("b的值为:"+b);
//这样计算下来答案都是0.0,因为count1 count2 count3都是整型,
//除下来的结果也是整型,所以最后全为0了,再赋值给double型
//最终成0.0 ?
//所以正确的如下?
double a = (double)count1/count3;
double b = (double)count2/count3;
ヾ(•ω•`)o