当前位置: 首页 > news >正文

Java第二周课前思考

1. 方法相关问题

public class Main {static void changeStr(String x) {x = "xyz";}static void changeArr(String[] strs) {for (int i = 0; i < strs.length; i++) {strs[i] = strs[i]+""+i;}}public static void main(String[] args) {    String x = "abc";changeStr(x);System.out.println(x);changeArr(args);System.out.println(Arrays.toString(args));}
}

1.1 changeStr与changeArr的功能各是什么?
changeStr:将传入的字符串参数修改为 "xyz",参数传递为值传递,不会改变原字符串。
changeArr:遍历传入的字符串数组,将数组中的每个元素修改为原元素值加上其索引。

1.2 main方法的x有没有被改变?为什么?
没有。方法参数传递是值传递,修改发生在方法内部,而原变量x的引用并未改变。

1.3 main方法的args数组的内容有没有被改变?为什么?
有。changeArr方法接收的是数组args与原args指向同一个数组对象。

1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。
args数组存储的是程序运行时传入的命令行参数。在IDEA中修改运行配置,添加程序实参。

2. 数组相关问题

对于如下程序

int[] arr = new int[3];
arr[0] = 1; arr[1] = 1;
int[] arrX = arr;
arr[0] = 2;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arrX));

2.1 这段程序输出结果是什么?为什么?
输出结果:
[2,1,0]
[2,1,0]
arr和arrx指向同一个数组对象,所以arrx的内容与arr一致。

String[] strArr = {"aa","bb","cc"};
strArr[1] = "xx";
System.out.println(Arrays.toString(strArr));

2.2 字符串是不可变类,为什么可以对strArr[1]赋值"xx"。
strArr[1] = "xx"的操作,并不是修改原 "bb" 字符串的内容,而是将数组第 1 个位置的引用从指向 "bb" 对象改为指向"xx" 对象。

3. 二维数组问题

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

import java.util.Arrays;
public class TwoDArrayWithoutSecondDimension {public static void main(String[] args) { int[][] twoDArray = new int[5][]; System.out.println("二维数组内容:");for (int i = 0; i < twoDArray.length; i++) {System.out.print("第" + i + "行:");if (twoDArray[i] == null) {System.out.println("null)");} else { for (int j = 0; j < twoDArray[i].length; j++) {System.out.print(twoDArray[i][j] + " ");}System.out.println();}}}
}

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

类是抽象概念,对象是具体存在,对象由类实例化而来。
Math类没有对象。
Char[] value是private的,字符串的获取、比较等都是public的。
private属性隐藏了字符串的存储细节,防止外部直接修改,确保 String 的不可变性,public方法提供了安全的操作接口,既满足了外部对字符串的常用需求,又不会破坏内部的不可变性。
private 属性示例
private final char value[]:存储字符串的字符数组。
这是 String 类的核心属性,用于保存字符串的实际内容。
public 方法示例
public int length():返回字符串的长度。
外部需要知道字符串的长度,但无需直接访问value数组,通过方法封装实现安全访问。

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

(1)实现封装性,隐藏内部细节
(2)控制属性的访问权限和合法性
(3)提供灵活性和可扩展性

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

(1)声明时直接初始化
(2)构造方法时初始化
(3)通过setter方法初始化
(4)初始化块

http://www.wxhsa.cn/company.asp?id=1020

相关文章:

  • 2025 Vue UI 组件库选型
  • FHQ-Treap
  • 什么是ARM架构?你需要知道的一切
  • 程序连接金仓数据库查询报错:ERROR:column r.id does not exist。字段不存在
  • 论Intel CPU 进化史:德承工控机全面进化 搭载新一代 Intel Core™ Ultra 7/5/3 处理器 - Johnny
  • STM32F103C8T6标准库移植FreeRTOS教程
  • mysql绿色版,无需安装的快速数据库解决方案
  • MyEMS:功能强大的开源能源管理系统,助力企业实现精细化能效管理
  • mysql唯一索引,原理、创建与应用详解
  • redis查询和添加key的最简单方法
  • 111111
  • The 2025 ICPC Asia East Continent Online Contest (I) 7/13 A/B/C/D/G/I/M
  • [PHP之代码审计篇]CTFshowWeb入门 Web301~Web310
  • SAP取税率
  • mysql 导入sql,从入门到精通
  • Kubernetes Pod
  • selenium+browsermobproxy抓POST请求
  • 算法-Dijkstra算法-02 - jack
  • typescript面试题
  • LIN通信协议入门
  • 答题赚现金程序介绍
  • 番茄社交营销商城系统介绍
  • framework中按压power键屏幕熄灭及亮起时流程
  • 标书智能体(二)——生成标书提纲代码+提示词
  • 易客云会员系统相关介绍
  • 线段树模版
  • 设计模式-责任链模式
  • Linux开机启动设置全攻略
  • 实用指南:Grafana - 监控磁盘使用率Variables使用
  • iphone可以用windows系统吗