1、循环结构for语句的注意事项
- 判断条件语句无论简单还是复杂,结果是boolean类型。
- 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
- 一般来说:有左大括号就没有分号,有分号就没有左大括号。
2、循环结构三中循环语句的区别
- do…while循环至少执行一次循环体。
- for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
- for循环和while循环的区别: while循环在循环结束后,可以继续使用控制条件的那个变量,for循环则会释放那个变量。如果使用时不知道使用for还是while,就用for循环,因为变量及早地从内存中消失,可以提高内存的使用效率。
3、return、break以及continue的区别?
- return是结束方法
- break是跳出循环
- continue是中值本次循环继续下次循环
4、数组概述和定义格式说明
- 为什么要有数组?
为了存储同种数据类型的多个值。 - 数组概念
A:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
B:数组即可以存储基本数据类型,也可以存储引用数据类型。
5、数组的初始化动态初始化
- 什么是数组的初始化?
就是为数组开辟连续的内存空间,并为每个数组元素赋予值 - 如何对数组进行初始化?
A 动态初始化: 只指定长度,由系统给出初始化值。
例:int[ ] arr = new int[5];
B 静态初始化: 给出初始化值,由系统决定长度 - 动态初始化的格式:
数据类型[ ] 数组名 = new 数据类型[数组长度]; - 静态初始化格式:
数据类型[ ] 数组名 = new 数据类型[ ] {元素1,元素2,…};
简化格式: 数据类型[ ] 数组名 = {元素1,元素2,…};
6、数组操作的两个常见小问题:越界和空指针
- ArrayIndexOutOfBoundsException: 数组索引越界异常
原因: 你访问了不存在的索引 - NullPointerExcep: 空指针异常
原因: 数组已经不再指向堆内存了,而你还用数组名曲访问元素。
7、二维数组的格式和注意事项
- 二维数组格式1:
1:数据类型 数组名[ ] [ ] = new 数据类型[m][n];
2:数据类型[ ] 数组名[ ] = new 数据类型[m] [n];
java中一般用:int [ ] [ ] arr = new int[3] [2]; - 注意事项:
int [ ] x; //声明 x一维数组
int [ ] y[ ];//声明 y二维数组
int [ ] x,y[ ];// 相当于 int [ ] x; int [ ] y[ ];声明x 一维数组,y 二维数组。 - 二维数组格式2:
int [ ] [ ] arr = new int [3] [ ] ; - 二维数组格式3:
int [ ] [ ] arr = {{1,2,3},{4,5},{6,7,8,9}};
8、参数传递问题
- 基本数据类型的值传递: 不改变原值,因为调用后就会弹栈,局部变量随之消失
- 引用数据类型的值传递: 改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
- Java中到底是传值还是传址
1:既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2:Java中只有传值,因为地址值也是值**(出去面试都说这种**,支持者是高司令(java之父))
class Test3_Array {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);
change(a,b);
System.out.println("a:"+a+",b:"+b);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b) {
System.out.println("a:"+a+",b:"+b);
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}