Java语言中没有全局变量的概念
- 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。
数据类型

每种基本数据类型的内存占用和取值范围
整数默认是:int类型
浮点数默认是:double类型
这样呢,我们就了解了Java中的 $8$ 种基本数据类型,以及每种数据类型占用字节的情况和取值范围。
运算符&选择语句
类型转换
隐式转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
数据类型 变量名 = (目标数据类型)(数值或者变量)
扩展的赋值运算符包含了强制类型转换
Debug的基本使用
- 添加断点后,在代码区域右键Debug执行
看Debugger窗口,看Console窗口
点(Step Over F8) 开始,点(Stop)结束
数组
数组(array):是一种用于存储多个相同数据类型的存储模型(可以理解为容器)。
格式1:数据类型[] 变量名;
格式2:数据类型 变量名[];
初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};
简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,…};
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 变量名 = new 数据类型[数组长度];
数组使用中的两个小问题
1:索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
ArrayIndexOutOfBoundsException
2:空指针异常:对象设置为null不再指向堆内存,还想继续访问数据,访问失败
NullPointerException
循环语句
和C++差不多
看两个简单的案例感受一下即可
逢七过(for语句)
从任意一个数字开始报数,当你要报的数字包含 $7$ 或者是 $7$ 的倍数时都要说:过。
public class ForTest07 {
public static void main(String[] args) {
//1:获取1-100之间的数据,通过循环实现
for (int i = 1; i <= 100; i++) {
//2:判断数字包含7或者是7的倍数(判断数据:要么个位是7,要么十位是7,要么能够被7整除)
if ((i % 10 == 7) || (i / 10 % 10 == 7) || (i % 7 == 0)) {
//3:在控制台输出满足条件的数据
System.out.println(i);
}
}
}
}
折纸(while语句)
世界最高峰珠穆朗玛峰(8848.86m),我现在有一张足够大的纸张,厚度为:0.001m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
public class WhileTest02 {
public static void main(String[] args) {
//1:定义统计变量,初始化值为0
int count = 0;
//2:定义纸张厚度变量和珠峰高度变量
double paper = 0.001;
double zf = 8848.86;
//3:用while循环实现反复折叠,判断条件是纸张厚度小于珠峰高度
while (paper < zf) {
//4:循环体中要做两件事情:一是纸张厚度加倍,二是统计变量+1
paper *= 2;
count++;
}
//5:当循环结束,输出统计变量的值
System.out.println("要折叠" + count + "次");
}
}
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
跳转关键字
- continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
- break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环