java课堂问题2
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; }

浙公网安备 33010602011771号