java数据类型转换总结
程序员文章站
2022-07-12 16:51:00
...
基本数据类型转换
基本转换规则
- 八种基本数据类型当中出boolean类型之外剩下的其中类型之间都可以相互转换
- 小容量向大容量转换,称为自动类型转换。容量从小到大排序:
byte < short < int < long < float < double
char <
- 大容量转换为小容量,叫做强制类型转换,需要加强制类型转换符。例如:
float num1=123f;
int num2=(int) num1;
- 当整数字面值没有超过byte,short,char的取值范围,可以直接赋值类byte,short,char类型的变量
- byte,short,char混合运算的时候,各自先转换成int类型再做运算
- 多种数据类型混合运算,先转换成容量最大的那种类型再做运算
基本数据类型的长度表:
基本类型 | 字节数(byte) | 位数(bit) | 取值范围(最小值——最大值) |
---|---|---|---|
byte | 1 | 8 | -128(-2^7) —— 127(2^7-1) |
short | 2 | 16 | -32768(-2^15)—— 32767(2^15 - 1) |
int | 4 | 32 | -2^31—— 2^31 - 1 |
long | 8 | 64 | -2^63 —— 2^63 -1 |
float | 4 | 32 | 单精度、32位、符合IEEE 754标准的浮点数 |
double | 8 | 64 | 双精度、64 位、符合IEEE 754标准的浮点数 |
char | 2 | 16 | 0——2^16-1(65,535) |
包装类(Wrapper Class)与基本数据类型的
基本数据类型与其相对应的包装类:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
- JDK1.5提供了自动装箱(autoboxing)和自动拆箱(autounboxing)功能, 从而实现了包装类和与其对应基本数据类型之间的自动转换
另外,对于特殊的“String”
- 基本类型变量—>String.valueof()—>字符串
- 字符串—WrapperClass.parseXxx(string)—>基本类型变量()
例如:String转int:Integer.parseInt(str)
验证代码:
/**
*数据类型转换
* 2020年6月15日22:04:35
*/
public class DataTypeConversion {
public static void main(String[] args) {
System.out.println("基本数据类型之间的转换");
byte by=12;//12默认是int类型,这里使用了第四条准则
//byte by2=10000;//错误演示,超出了byte的表示范围
byte by3=(byte)10000;//强转会出现精度损失,造成数据出错
float num=123;//这里代表的是自动类型转换
float num1=123f;
int num2=(int) num1;
System.out.println(by);
System.out.println(by3);
System.out.println(num2);
System.out.println("包装类与基本数据类型的转换");
Integer i=3;//3为int型,自动装箱为Integer
int i1=i;//自动拆箱
System.out.println(i.getClass());
System.out.println(i1);
System.out.println("基本数据类型(包装类)与String");
String str="10";
System.out.println(Integer.parseInt(str));//String--->int
String str2="true";
System.out.println(Boolean.parseBoolean(str2));//String--->boolean
String s = String.valueOf(by);
System.out.println(s.getClass());//byte--->String
String s2 = String.valueOf(true);
System.out.println(s2);//boolean--->String
}
}
结果截图:
个人总结,若是有不足之处,请与下方评论指正
上一篇: 函数指针的强制类型转换与void指针
下一篇: 如何计算Java对象所占内存的大小