基本类型 | 存储大小 | 初始化默认值 | 取值范围 | 包装类型 |
---|---|---|---|---|
byte | 1字节(8位) | 0 | -128~127 | Byte |
short | 2字节(16位) | 0 | -32768~32767 | Short |
int | 4字节(32位) | 0 | -2^31 ~ 2^31 - 1 | Integer |
long | 8字节(64位) | 0L。"L"理论上不分大小写,但若写成"l"容易与数字"1"混淆,不容易分辨,所以最好大写。 | -2^63 ~ 2^63 - 1 | Long |
float | 4字节(32位) | 0.0f | 符合IEEE754标准的浮点数,1.4E-45 ~ 3.4028235E38 | Float |
double | 8字节(64位) | 0.0d | 符合IEEE754标准的浮点数,4.9E-324 ~ 1.7976931348623157E308 | Double |
char | 2字节(16位) | '\u0000' | \u0000 ~ \uffff(十进制等效值为 0~65535,本质也是数值) | Character |
boolean | 1字节(8位)/4字节(32位) | false | true/false | Boolean |
float、double不能用来表示精确的值,运算不精确——>解决方案:BigDecimal。
char 数据类型可以储存任何字符。
对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中
//long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
//double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
//其他类型方法同上类似
注意:Java中的包装类(Wrapper Classes)对基本数据类型进行了封装,使其也具有了对象的特性,可以调用方法和进行类型转换等操作。
注意:在Java 5及其之后的版本中,基本类型和包装类型之间的转换会通过自动装箱、拆箱来自动进行,使得基本类型和包装类型之间的使用更加方便
Java中的数据转换主要分为两种:自动类型转换(也称为隐式转换)、强制类型转换(也称为显式转换)。
转换从低级到高级:byte、short、char(三者同级)——> int ——> long ——> float ——> double
数据类型转换必须满足如下规则:
int 和 long 互转、int和double互转、int和byte互转、int和char互转、int和String互转
public static void main(String[] args) {
int aInt = 20;
long bLong = 50L;
double cDouble = 4.8;
//低优先级类型数据 + 高优先级类型数据 ——> 结果会自动转换为高优先级数据
long sum = aInt + bLong;
//long -> int 需要强制类型转换
int d = (int) bLong;
//double -> int 需要强制类型转换
int e = (int) cDouble;
System.out.println("自动类型转换 int—>long: " + sum);
System.out.println("强制类型转换 long—>int: " + d);
System.out.println("强制类型转换 double—>int: " + e);
System.out.println();
//int 和 byte 转换
byte fByte = (byte) aInt; //高转低,强转
int gInt = fByte; //低转高,自动
System.out.println("高转低-强转,int->byte: " + fByte);
System.out.println("低转高-自动,byte->int: " + gInt);
System.out.println();
//int 和 char 转换
char hChar = 'a';
int iInt = hChar;
char j = (char) iInt;
System.out.println("低转高-自动,char->int: " + iInt);
System.out.println("高转低-强转,int->char: " + j);
System.out.println();
//int 和 String 转换
//int转String: 1)使用String的ValueOf方法 2)直接使用 String类+ (即字符串拼接),任意字符串和其他类型"+" 都会把其他类型转为字符串
String str1 = String.valueOf(aInt);
String str2 = "" + aInt;
System.out.println("int转String: " + str1 + ", " + str2);
//String转int:调用包装类的Integer.parseInt方法,当字符串中包含非数字时会出错
String str3 = "18";
int k = Integer.parseInt(str3);
System.out.println("String转int: " + k);
System.out.println();
//byte 和 char 互转
byte m = (byte) hChar;
char n = (char) m;
System.out.println("char->byte,强转: " + m);
System.out.println("byte->char,强转: " + n);
}
输出:
自动类型转换 int—>long: 70
强制类型转换 long—>int: 50
强制类型转换 double—>int: 4
高转低-强转,int->byte: 20
低转高-自动,byte->int: 20
低转高-自动,char->int: 97
高转低-强转,int->char: a
int转String: 20, 20
String转int: 18
char->byte,强转: 97
byte->char,强转: a
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。