变量
在Java中,变量分为两种:基本类型的变量和引用类型的变量。
在Java中变量必须先定义后使用,在定义变量的时候可以给它一个初始值.如果不写初始值,默认为0或空.
变量的一个重要特点是可以重新赋值,还可以赋值给其他变量.
public class Main {
public static void main(String[] args) {
int x = 100; // 定义int类型变量x,并赋值100
System.out.println("x=" + x); // 打印x变量的值
x = 200; // 重新赋值为200
System.out.println("x=" + x); // 打印变量的值
int n = x; // 变量x的值赋值给变量n
System.out.println("n=" + n); // 打印n的值 200
n = n + 56; // 重新赋值n
System.out.println("n=" + n); // 打印n的值 256
System.out.println("x=" + x); // 打印x的值 200
}
}
基本数据类型
基本数据类型是CPU可以直接进行运算的类型, Java定义了以下几种基本数据类型:
- 整数类型: int, short, long, byte
- 浮点类型: float, double
- 字符类型: char
- 布尔类型: boolean
计算机内存最小的存储单元是字节byte, 一个字节就是一个8位二进制整数, 即8bit, 0-255. 每个内存单元可以看做是一间房间, 内存地址就是门牌号.
基本数据类型 | 占用字节数 |
---|---|
int | 4 |
short | 2 |
long | 8 |
byte | 1 |
float | 4 |
double | 8 |
char | 2 |
整型
Java只定义了带符号的整型, 且同一个数的不同进制的表示时完全相同的.
int i = 21456;
int i2 = -89656;
int i3 = 2_000_000; // 加下划线更容易识别
int i4 = 0x11; // 0x十六进制
int i5 = 0b1111; // 0b八进制
long l = 932565400000L; // long 结尾要加L
浮点型
float f1 = 3.14f; // float类型要加上f后缀
float f2 = 3.4e38f;
double d1 = 1.79e308;
double d2 = 4.9e-324;
布尔型
true和false两个值, 是关系运算的计算结果
boolean b1 = true;
boolean b2 = false;
boolean isGreater = 5 > 3; // 结果为true
java对布尔类型的存储没有做规定, 通常JVM会把boolean表示为4字节整数.
字符型
char类型使用单引号'
, 且仅由一个字符, 要和双引号"
的字符串类型区分.
public class Main {
public static void main(String[] args) {
char v = 'v';
char hi = '嗨';
System.out.println(v);
System.out.println(hi);
}
}
常量
定义变量的时候, 加上修饰符final
, 变量就变成了常量, 根据习惯常量名通常全部大写.
final double PI = 3.14;
double r = 4;
double area = PI * r * r;
PI = 3; // 编译错误
常量在定义时初始化之后就不可以再次复制, 否则会导致编译错误.
常量的作用是用有意义的变量名来避免魔术数字, 比如定义一个常量来表示3.14, 如果需要提高计算精度, 只需在常量定义处修改,不必在所有地方替换.
var关键字
当类型的名字太长, 想省略变量类型时, 可以使用var
关键字.
StringBuilder sb = new StringBuilder(); // 类型的名字较长
var sb = new StringBuilder();
编译器会根据赋值语句自动推断出变量的类型.
变量的作用范围
在java中, 多行语句用{ }括起来,控制语句都以{ }作为他们自身的范围.
if ( ) { // if开始
while ( ) { // while开始
if ( ) { // if开始
} // if结束
} // while结束
} // if结束
定义变量时, 要遵循作用域最小化原则, 尽量将变量定义在尽可能小的作用域,并且不要重复使用变量名.