第二周课前问题

目录

一、方法相关问题

二、数组相关问题

三、使用int[5][]定义一个二维数组,其第二维到底有多长?尝试补全代码,然后使用foreach获其他循环方法遍历这个二维数组?

四、类与对象的区别是什么? Math类有对象吗?String类有什么属性是private的,有什么方法是public的,为什么这样设计(尝试举两例说明)?

五、将类的属性设置为public可以方便其他类访问,但为什么Java中普遍使用setter/getter模式对对象的属性进行访问呢?这与封装性又有什么关系?

六、对象的属性可在什么时候进行初始化?都有哪些进行初始化的办法?


一、方法相关问题

1.1:changeStr的功能是:接受一个字符串string参数x,并将”xyz“赋予x;

        changeArr的功能是:接收一个 string类型的数组strs作为参数;

1.2:main方法的x没有被改变。

因为Java 中的字符串是不可变的(immutable),方法内部的 x 实际上是局部变量的一个副本,改变这个副本并不会影响原始的字符串 x。因此,在 changeStr 方法调用后,原始的字符串 x 在 main 方法中的值并不会改变。

1.3:在 main 方法中,args 数组的内容被改变了。

因为在 Java 中,数组是可变的(mutable),意味着数组的元素可以被修改。

1.4:在命令行中运行Java程序时,可以在程序名后添加空格,然后输入一系列参数,如Java main 1 2 3,这样args数组将包含三个元素{1,2,3}。

在IDEA中时,可在Modify Run Configuration...中Program arguments中输入一系列参数。

二、数组相关问题

2.1输出结果:[2, 1, 0]

                       [2, 1, 0]

因为创建了一个名为 arr 的整型数组,长度为 3,

将数组 arr 的第一个和第二个元素设置为 1。第三个元素没有显式赋值,所以它将保持默认值 0,

arrX 现在指向与 arr 相同的数组对

通过 arr 引用修改了数组的第一个元素为 2。由于 arrX 也是指向同一个数组的引用,所以这个修改会影响到 arrX 所引用的数组内容

两行代码分别打印 arr 和 arrX 引用的数组内容。由于 arr 和 arrX 指向同一个数组,所以它们打印的内容相同。

2.2执行 strArr[1] = "xx"; 时,实际上是在改变数组 strArr 中索引为 1 的元素的引用

三、使用int[5][]定义一个二维数组,其第二维到底有多长?尝试补全代码,然后使用foreach获其他循环方法遍历这个二维数组?

由于第二维数组并没有被定义,所以就可以自行定义为不同长度的int数组。

四、类与对象的区别是什么? Math类有对象吗?String类有什么属性是private的,有什么方法是public的,为什么这样设计(尝试举两例说明)?

1)类:

类是一个模板或蓝图,它定义了一组属性(变量)和方法(函数),这些属性和方法可以被多个对象共享。类是抽象的,它不占用内存空间,而是一个概念上的结构,用于创建对象。

对象:

对象是根据类创建的实例,每个对象都拥有类中定义的属性和方法。对象是具体的,它们在内存中占用空间,并且每个对象可以有不同的属性值。

2)Math类没有对象,可以直接通过类名调用这些静态方法。

3)私有属性(Private):valuvalue,coder;

公共方法(public):length(),charAt(int index);

提供了强大的字符串处理功能,而且确保了数据的安全性和一致性。这种设计也使得 String 类在Java中非常高效和可靠

五、将类的属性设置为public可以方便其他类访问,但为什么Java中普遍使用setter/getter模式对对象的属性进行访问呢?这与封装性又有什么关系?

1)将类的属性设置为 public 虽然方便访问,但 Java 中普遍使用 setter/getter 模式是为了控制对属性的访问,增强代码的灵活性和可维护性。这与封装性有关,因为封装性要求隐藏类的内部实现细节,通过公共接口提供受控的访问方式,从而保护对象状态并允许在未来修改实现而不会影响使用该类的其他代码

六、对象的属性可在什么时候进行初始化?都有哪些进行初始化的办法?

1)声明时:在声明属性时就直接赋予初始值。

2)构造器中:在类的构造器中对属性进行初始化。

3)实例初始化块:在类的实例初始化块(匿名代码块)中进行初始化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值