变量就是申请内存来储存值,创建变量,需要在内存中申请空间。内存管理系统会根据变量的类型分配存储空间。并且定义不同类型的变量,可以在内存中储存整数,小数,字符。
Java提供4类8种基本数据类型
类型名称 |
字节空间 |
使用场景 |
范围 |
默认值 |
整型: |
||||
byte |
1字节(8位) |
存储字节数据(较常用) |
127~-127 |
0 |
short |
2字节(16位) |
存储短整型数据(很少用) |
32768~-32768 |
0 |
int |
4字节(32位) |
存储普通整型数据(常用) |
21亿~-21亿 |
0 |
long |
8字节(64位) |
存储长整型数据(常用) |
2^63-1~-2^63 |
0L |
浮点型 |
||||
float |
4字节(32位) |
存储浮点型数据(不常用) | 最大值:3.4028235E38=340282350000到38位 最小值:1.4E-45=0.000...14到45位 |
0.0f |
double |
8字节(64位) |
存储双精度浮点型数据(常用) | 最大值:1.7976931348623157E308 最小值:4.9E-324 |
0.0d |
布尔型 |
||||
boolean |
1字节(8位) |
存储逻辑变量(常用) |
true/false |
fasle |
字符型 |
||||
char |
2字节(16位) |
存储一个16位Unicode字符 一个字符存一个中文汉字 一个中文含2个字节 |
最大值:“\uffff”(为65535) 最小值:“\u0000”(为0) |
单引号 |
注:String 不是基本类型,是字符串类型,是引用类型,是常量!
实例:
/**
* java 基础类型的二进制数 和 字节数
*/
public class ByteSize {
public static void main(String[] args) {
/**整型*/
//byte 的字节数和二进制数
System.out.println("byte包装类:java.lang.Byte");
System.out.println("byte 的字节数:" + Byte.SIZE / 8);
System.out.println("byte 的二进制数:" + Byte.SIZE); //一个字节占8个二进制数
System.out.println("byte 的最大取值范围:" + Byte.MAX_VALUE);
System.out.println("byte 的最小取值范围: " + Byte.MIN_VALUE);
//short 的字节数和二进制数
System.out.println("short包装类:java.lang.Short");
System.out.println("Short 的字节数:" + Short.SIZE / 8);
System.out.println("short 的二进制数:" + Short.SIZE);
System.out.println("short 的最大取值范围:" + Short.MAX_VALUE);
System.out.println("short 的最小取值范围: " + Short.MIN_VALUE);
//int 的字节数和二进制数
System.out.println("int包装类:java.lang.Integer");
System.out.println("int 的字节数:" + Integer.SIZE / 8);
System.out.println("int 的二进制数:" + Integer.SIZE);
System.out.println("int 的最大取值范围:" + Integer.MAX_VALUE);
System.out.println("int 的最小取值范围: " + Integer.MIN_VALUE);
//long 的字节数和二进制数
System.out.println("long包装类:java.lang.Long");
System.out.println("long 的字节数:" + Long.SIZE / 8);
System.out.println("long 的二进制数:" + Long.SIZE);
System.out.println("long 的最大取值范围:" + Long.MAX_VALUE);
System.out.println("long 的最小取值范围: " + Long.MIN_VALUE);
/**浮点型*/
//float 的字节数和二进制数
System.out.println("float包装类:java.lang.Double");
System.out.println("float 的字节数:" + Float.SIZE / 8);
System.out.println("float 的二进制数:" + Float.SIZE);
System.out.println("float 的最大取值范围:" + Float.MAX_VALUE);
System.out.println("float 的最小取值范围: " + Float.MIN_VALUE);
//double 的字节数和二进制数
System.out.println("double包装类:java.lang.Double");
System.out.println("double 的字节数:" + Double.SIZE / 8);
System.out.println("double 的二进制数:" + Double.SIZE);
System.out.println("double 的最大取值范围:" + Double.MAX_VALUE);
System.out.println("double 的最小取值范围: " + Double.MIN_VALUE);
/** 字符型*/
//char 的字节数和二进制数
System.out.println("char包装类:java.lang.Character");
System.out.println("char 的字节数:" + Character.SIZE / 8);
System.out.println("char 的二进制数:" + Character.SIZE);
//用数值输出而不用字符输出
System.out.println("char 的最大取值范围:" + (int) Character.MAX_VALUE);
System.out.println("char 的最小取值范围: " + (int) Character.MIN_VALUE);
}
}
执行结果:
byte 的字节数:1
byte 的二进制数:8
byte 的最大取值范围:127
byte 的最小取值范围: -128
short 的字节数:2
short 的二进制数:16
short 的最大取值范围:32767
short 的最小取值范围: -32768
int 的字节数:4
int 的二进制数:32
int 的最大取值范围:2147483647
int 的最小取值范围: -2147483648
long 的字节数:8
long 的二进制数:64
long 的最大取值范围:9223372036854775807
long 的最小取值范围: -9223372036854775808
float 的字节数:4
float 的二进制数:32
float 的最大取值范围:3.4028235E38
float 的最小取值范围: 1.4E-45
double 的字节数:8
double 的二进制数:64
double 的最大取值范围:1.7976931348623157E308
double 的最小取值范围: 4.9E-324
包装类:java.lang.Character
char 的字节数:2
char 的二进制数:16
char 的最大取值范围:65535
char 的最小取值范围: 0
低类型转为高类型自动转换:byte->short->char->int->long->float->double
高类型转为低类型:要强制转换,精度会丢失。
浮点型计算,小数点,金额计算最好用BigDecimal,用setScale设置精度,用compareTo比较数的大小。
来源:oschina
链接:https://my.oschina.net/u/2392281/blog/617304