一、基础类型
java中一共有8种基础类型:4种整型、2种浮点型、1种用于表示Unicode编码的字符单元、1种表示真值的boolean型。
整型
类型 | 存储要求 | 取值范围 |
---|---|---|
int | 4个字节 | -2 147 483 648 - 2 147 483 647 (正好超过 20 亿) |
short | 2个字节 | -32 768 - 32 767 |
long | 8个字节 | -9 223 372 036 854 775 B08 - 9 223 372 036 854 775 807 |
byte | 1个字节 | -128-127 |
浮点型
类型 | 存储要求 | 取值范围 |
---|---|---|
float | 4字节 | 大约 ± 3.402 823 47E+38F (有效位数为 6 ~ 7 位) |
double | 8字节 | 大约 ± 1.797 693 134 862 315 70E+308 (有效位数为 15 位) |
char型
类型 | 存储要求 | 取值范围 |
---|---|---|
char | 2字节 | U+0000 - U+FFFF (Unicode码) |
Boolean类型
类型 | 存储要求 | 取值范围 |
---|---|---|
boolean | 未指明多少字节 | true 或者 false |
二、自动装箱和拆箱
java是一种面向对象的语言,但是基础的类型不是面向对象,所以在设计时候每个基础类型都对应了一种类。这样的八个类叫做包装类。
装箱:把基础的数据类型转换成包装类的过程就是装箱。
拆箱:把包装类转换成基础的数据类型的过程就是拆箱。
在 Java SE5 中,为了减少开发人员的工作,Java 提供了自动拆箱与自动装箱功能。
自动装箱:把基础的数据类型自动转换成包装类的过程就是装箱。
自动拆箱:把包装类转自动换成基础的数据类型的过程就是拆箱。
//装箱
Integer integer = 1;
//拆箱
int i = integer;
备注:假设for 循环中有大量拆装箱操作,会浪费很多资源。
三、 变量
在java中每种变量都有一个类型(type)。变量声明之前,变量的类型都是放在变量的前面。java一共有三种变量类型。
- 类变量:类变量一般是放在jvm的方法区中。
- 成员变量:成员变量是和类一起存储在堆内存中。
- 局部变量:局部变量是保存在栈内存中。
public class JavaVariable {
public static String variableA;
private String variableB;
public void test(String variableC) {
}
}
代码中variableA就是类变量,variableB就是成员变量,variableC就是局部变量
四、常量
在 Java 中, 利用关键字 final 指示常量,关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后, 就不能够再更改了。习惯上常量名使用全大写。
public static final double CM_PER_INCH = 2.54;
五、值传递和引用传递
值传递:
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:
也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
可参考https://www.zhihu.com/question/31203609