1.1
- changeStr(String x):方法内部尝试将传入的字符串参数重新赋值为 "xyz",但该操作仅在方法内部有效,不会影响外部实参
- changeArr(String[] strs):遍历传入的字符串数组,对数组中的每个元素进行修改,在原字符串后拼接其索引值(例如将第 0 个元素改为 "原字符串 0")
1.2
没有改变,因 Java 是值传递,changeStr接收的是 x 引用的副本,副本指向 "xyz" 不影响原 x(仍指向 "abc")
1.3
改变了,数组是引用类型,changeArr接收的引用副本与原 args 指向同一数组对象,修改数组元素会直接改变原数组内容。
1.4
- 来源:程序运行时从命令行 / IDE 程序参数传入
- 赋值:命令行用java 类名 参数1 参数2;IDE 在运行配置的 “程序参数” 中填参数(空格分隔)
2.1
输出:
[2, 1, 0]
[2, 1, 0]
2.2
字符串不可变指字符串对象内容不能改,但数组元素存的是引用,可改为指向新字符串 "xx"
3.1
public class Main {public static void main(String[] args) {// 定义二维数组并初始化第二维int[][] arr = new int[5][];arr[0] = new int[2]; arr[1] = new int[3]; arr[2] = new int[1]; arr[3] = new int[4]; arr[4] = new int[5]; int num = 1;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {arr[i][j] = num++;}}System.out.println("foreach遍历结果:");for (int[] row : arr) {System.out.println(Arrays.toString(row));}}
}
类是对象的模板,定义了对象的属性和方法(如 "汽车设计图"),对象是类的实例,具有具体的属性值(如 "一辆红色轿车"),Math类没有对象,它是工具类,所有方法都是static的,直接通过类名调用,私有属性:如private final char value[](存储字符串内容),确保字符串不可变,公共方法:如length()(返回长度)、substring(int beginIndex)(截取子串)。
5.
原因:public属性允许外部直接修改,可能破坏数据合法性(如年龄设为负数);setter可添加校验逻辑(如if(age>0) this.age=age),getter控制只读权限,与封装性的关系:封装性要求隐藏内部实现,setter/getter通过控制属性访问方式,实现 "数据隐藏 + 可控访问",符合封装原则
6.
声明时初始化:private int age = 18,构造方法中初始化:public Person(int age) { this.age = age; }