JAVA数据类型
JAVA中数据类型有两种 基本数据类型和引用数据类型
1.基本数据类型
基本数据类型有8种
- byte
- short
- int
- long
- float
- double
- boolean
- char
- byte short int long为整数型
- float double为浮点数型
- boolean为布尔型
- char为单个字符。
基本数据类型的取值范围
数据类型 | 位数 | 取值范围 | 说明 |
---|---|---|---|
byte | 8 | -128~127 | 数据存储在内存中的最原始形态 |
short | 16 | -32768~32767 | |
int | 32 | -2e31~2e31-1 | |
long | 64 | -2e63~2e63-1 | |
float | 32 | Price | |
double | 64 | Price | |
boolean | 1 | true/false | 用于存储真值/假值 |
char | 16 | ‘\u0000’~‘\uFFFF’ | 用于存储单个字符,以Unicode编码方式 |
数据类型转换
程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时),Java的数据类型转换比C控制得更为严格。
数据类型转换有两种情况:
自动类型转换
强制类型转换
自动类型转换
将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换
两种类型之间相互兼容
目标类型大于源类型(即类型提升)
例如:
byte a = 10;
short b = a;
int c = b;
float d = c;
double e = d;
类型转换自动发生,无需显式说明
强制类型转换
有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换。
- 强制类型转换也称作显式类型转换;
- 如果被转换的值的数据类型大于其目标类型,将会丢失部分信息;
- 如:
- long x = 50;
- int h = x;
- short n = 200;
- byte p = n;
- 这样的语句将报错,因为int类型精度低于long类型,byte类型低于shott类型,编译器无法将其自动转换,只能进行强制转换:
- long x = 50;
- int h = (int)x;
- short n = 200;
- byte p =(byte)n;
- 如:
- 类型提升应遵循如下规则:
- 两种类型必须兼容,且目标类型大于源类型
- byte、char和short类型都可以提升为int型。
- 数值型表达式的转换
- 有double 则结果为duoble
- 有float 结果为float
- 有 long 结果为long
- 其他结果为int
引用数据类型
引用数据类型的定义
在Java中,除了上述基本数据类型的变量以外,其余的全都属于引用数据类型,包括API中的类,如String、File等数组,自定义的类,如Cars、Student对象全部是引用数据类型。
引用类型使用的场景与基本数据类型完全一样
作为属性的类型使用 作为方法的返回值类型使用 作为方法的形式参数类型使用
引用数据类型的赋值
- 引用类型都是对象,所以赋值都使用new调用构造方法进行赋值
- 例外:String类可以直接使用=赋值,不使用new
基本数据类型与引用数据类型的区别
- | 基本数据类型 | 引用数据类型 |
---|---|---|
概念 | 变量(单纯的值) | 对象(引用) |
存储位置 | 在栈中存值 | 在栈中存引用,在堆中存具体对象的属性值 |
赋值方式 | 直接赋值 | new ,String类和包装器类可以直接赋值 |