一、基本数据类型
- 基本数据类型的分类
- 基本数据类型的取值范围
数据类型 |
位数 |
取值范围 |
byte |
8 |
-128~127 |
short |
16 |
-32768~32767 |
int |
32 |
-231~231-1 |
long |
64 |
-263~263-1 |
float |
32 |
略 |
double |
64 |
略 |
char |
16 |
‘\u0000’~‘\uFFFF’ |
boolean |
1 |
true/false |
- 基本数据类型的类型转换
程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时)
数据转换分成两种模式:
1、 自动类型转换
自动转换又叫隐式转换,只要满足以下条件,就会发生自动类型转换
a) 两种类型之间相互兼容
b) 目标类型大于源类型(即类型提升)
char ch = ‘b’;
int a = ch;
float f = a;
double d = f;
//类型转换自动发生,无需显式说明
有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换; 在进行强制转换时,需要清楚强制转换后的结果是否是自己所需要的
类型提升应遵循如下规则:
两种类型必须兼容,且目标类型大于源类型,例如:
byte、char和short类型都可以提升为long型。
对于表达式而言,其最终结果将会与表达式中最高的数据类型相同。
2、 强制类型转换(在强制转换前首先需要了解强制转换结束后的结果是否是自己需要的可用的结果)
也叫做显式类型转换
如果被转换的值的数据类型大于其目标类型,将会丢失部分信息;
如:
int x = 44;
char ch = x;
这样的语句将报错,因为char类型精度低于int类型,编译器无法将其自动转换,只能进行强制转换:
int x = 44;
char ch = (char)x;
二、数据类型分为两大类:基本类型和引用类型
A、基本数据类型:8类{int,char,double,float,long,short byte , boolean }
B、引用类型 :
除了基本数据类型之外都是引用类型
包括API中的类,比如String、File
也包括自定义的类,如SchoolName,ClassRoom
包括数组,如int[],String[]
三、数据类型和引用类型的区别:
|
基本数据类型 |
引用数据类型 |
概念 |
变量(单纯的值) |
对象(引用) |
存储位置 |
在栈中存值 |
在栈中存引用,在堆中存具体对象的属性值 |
赋值方式 |
直接赋值 |
new ,String类和包装器类可以直接赋值 |
四、引用数据类型
引用数据类型的定义:除了上述基本数据类型的变量以外,其余的全都属于引用数据类型
API中的类,如String、File等
数组[]
自定义的类,如Person,Room
对象全部是引用数据类型
对象都是引用数据类型
引用类型使用new调用构造方法进行赋值:引用数据类型的赋值
引用类型都是对象,所以赋值都使用new调用构造方法进行赋值
//引用类型的赋值都是通过new调用构造方法,先构造两个变量,并赋初值,person是String型的
person p = new person("red");
person p1 = new person("blue");
Age a = new Age(1);//Age就是一个int型的
例外:String类可以直接使用=赋值,不使用new