Java的数据类型
整型(用二进制补码表示):
- byte:8位有符号的整数,在大型数组中代替整数节约空间,占用空间是int的四分之一,默认值0;
- short:16为有符号的整数,占用空间是int的二分之一,默认值0;
- int:32位有符号的整数,默认整型变量是int,默认值0;
- long:64位有符号的整数,用在比较大整数的系统上,默认值0L 例:long a = 10000000L;
浮点数(符合IEEE 754标准):
浮点数不能用来表示精确的值例如货币
-
float:单精度32位的浮点数,在储存大型浮点数组的时候可节省内存空间,默认值0.0f 例:float f1 = 234.5f
-
double:双精度64位的浮点数,double是浮点数的默认类型,默认值为0.0d 例:double d1 = 132.4
其他: -
boolean:表示一位的信息,取值只有true和false(这种类型只作为一种标志来记录 true/false 情况),默认值是false;
-
char:单一的16位Unicode字符,可以储存任何字符;例:char letter = ‘A’
基本数据类型实例
public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// 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();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); //输出时以10的几次方输出
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();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
基本类型:byte 二进制位数:8 包装类:java.lang.Byte 最小值:Byte.MIN_VALUE=-128 最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767基本类型:int 二进制位数:32 包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648 最大值:Integer.MAX_VALUE=2147483647基本类型:long 二进制位数:64 包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807基本类型:float 二进制位数:32 包装类:java.lang.Float 最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38基本类型:double 二进制位数:64 包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308基本类型:char 二进制位数:16 包装类:java.lang.Character 最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
Java常量
常量在程序运行时是不能被修改的,常量名一般大写。
final double PI = 3.1415927;
int decimal = 100;//10进制
int octal = 0144; //8进制
int hexa = 0x64;//16进制
字符串常量和字符常量都可以包含任何Unicode字符。例如:
char a = ‘\u0001’;
String a = “\u0001”;
字符 | 含义 |
---|---|
\n | 换行 |
\r | 回车 |
\0 | 空字符 |
\s | 字符串 |
\t | 制表符 |
" | 双引号 |
’ | 单引号 |
\ | 反斜杠 |
\ddd | 八进制字符 |
\uxxxx | 16进制Unicode字符 |
1.自动类型转换
-
不能对boolean类型进行类型转换。
-
不能把对象类型转换成不相关类的对象。
-
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为
byte 类型时,值 128 时候就会导致溢出。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
public class LeiXingZhuanHuan{
public static void main(String[] args){
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
}
}
char自动类型转换为int后的值等于97
char类型和int计算后的值等于66
c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2=65+1=66。
2.强制类型转换
-
条件是转换的数据类型必须是兼容的。
-
格式:(type)value type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
int强制类型转换为byte后的值等于123
3.隐含强制类型转换
-
整数的默认类型是 int
-
浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f