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

第02周 预习、实验与作业:Java基础语法2、面向对象入门

集美大学课程实验报告-第02周 预习、实验与作业:Java基础语法2、面向对象入门

项目名称 内容
课程名称 数据结构
班级 网安2413
指导教师 郑如滨
学生姓名 林沁茹
学号 202421336067
实验项目名称 第02周 预习、实验与作业:Java基础语法2、面向对象入门
上机实践日期
上机实践时间 2学时

一、目的(本次实验所涉及并要求掌握的知识点)

以下内容请根据实际情况编写

  • 了解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的功能各是什么?
1.2 main方法的x有没有被改变?为什么?
1.3 main方法的args数组的内容有没有被改变?为什么?
1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。

1.1changeStr:该方法接收一个String类型的参数x,并在方法内部将x的值修改为"xyz"。(由于String在Java中是不可变的,且Java是按值传递的,因此该方法实际上不会修改调用者传入的原始String对象的值,实际上是新建一个对象来存储,且使x指向该地址)changeArr:该方法接收一个String数组strs,然后遍历数组中的每一个元素,并在每个元素后面拼接上当前元素的索引i。(由于数组是引用类型,方法内部操作的是原始数组对象的引用副本,因此对数组元素的修改会直接影响调用者传入的原始数组)
1.2 
main方法的x没有被改变,因为Java 是按值传递,changeStr(x) 传递的是x的引用地址(即x指向的字符串 "abc" 的地址)在changeStr 方法内部,x="xyz"; 只是让局部变量 x 指向了一个新的字符串对象 "xyz"的地址,而不会影响 main方法中的原始变量x。因此,main 方法中的 x 仍然指向原来的字符串 "abc",输出结果为 abc。
1.3 
main方法的args数组的内容有被改变,因为args是一个String数组,属于引用类型。changeArr(args)传递的是 args 数组的引用地址,这个地址指向的仍然是原始数组对象。在changeArr方法内部,通过strs[i]=strs[i]+""+i; 修改了数组元素的值,由于strs和args实际指向的是同一个数组对象地址,因此修改会直接反映到main方法的args数组上。
1.4
来源:args是main方法的参数,表示命令行参数。
赋值:当我们在命令行(或终端)中运行程序时,可以在类名后面传入参数,这些参数会被自动解析为String数组并传递给main方法的args。

题目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 这段程序输出结果是什么?为什么?

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

2.2 字符串是不可变类,为什么可以对strArr[1]赋值"xx"。

2.1
[2,1,0]
[2,1,0]
数组arr和arrX存储的是数组对象的引用(地址),而不是数组本身,int[] arrX = arr这行代码并没有创建新的数组,而是让arrX指向arr所引用的同一个数组对象,修改arr的同时也是在修改arrX。
2.2
String的不可变性,指的是String对象本身的内容不能被修改。数组本身是可变的,我们可以修改数组中元素的引用。strArr[1] = "xx"; 并不是修改原字符串"bb",而是让数组的第二个元素指向一个新的字符串对象 "xx"的地址。

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

第二维(列)的长度没有定义,即每一行的列数可以不同,是可变的(也叫“锯齿数组”).
public class Main {public static void main(String[] args) {int[][] arr = new int[5][5];for (int i = 0;i<arr.length;i++) {for (int j= 0;j<arr[i].length;j++) {arr[i][j]=i * 10+j; }}foreach(arr);
}public static void foreach(int[][] arr) {for (int[] row : arr) { for (int i: row) { System.out.print(i+" ");}System.out.println();}}
}

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

1.类是对象的模板或蓝图,定义了对象的属性(字段)和行为(方法);对象是类的实例,是具体的实体
2.Math类没有对象
3.
(1)
1.private final char value[],防止外部直接修改字符数组,保证String的不可变性
2.private int hash,哈希码是内部优化细节,外部无需访问,这样可以防止外部篡改哈希码
(2)
1.public charAt(int index),提供安全访问字符的方式,而不暴露内部 value 数组,还可以保证不可变性(返回的是 char,不是引用)
2.public String substring(int beginIndex),提供字符串截取功能,而不暴露内部实现,还可以返回新 String 对象,不修改原字符串(符合不可变性)

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

如果将类的属性直接设为public,外部类可以直接访问和修改,会无法添加额外逻辑,还会无法控制赋值,破坏封装性;
使用setter/getter模式,可以在 setter 中添加验证逻辑,还可以getter中返回副本或计算值(如返回格式化的字符串),封装的核心思想是隐藏内部实现,只暴露必要的接口,而setter/getter 是对属性的受控访问,而不是直接暴露,符合封装性。

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

对象的属性可以在声明时、构造方法中、初始化块中、静态初始化块中、setter 方法中或通过反射进行初始化。
方法:1.在定义成员变量时直接赋值;2.在构造方法中对属性赋值;3.使用 {} 初始化块;4.使用 static {} 初始化静态属性,类加载时执行一次;5.对象创建后,通过 setter 方法赋值;6.使用反射机制动态设置属性值

题目7—进阶(可选):尝试使用作用域来说明封装性。

封装性通过作用域(访问修饰符)实现,控制类成员的可见性。
1.使用 private 限制直接访问
2.使用 default 实现包级私有(同一个包内的类可以访问,但对外部包隐藏)
3.使用 protected 允许子类访问
4.使用 public 提供公共接口

三、实验使用环境(本次实验所使用的平台和相关软件)

以下请根据实际情况编写

  • 操作系统:Windows 11专业版
  • 编程语言:Java
  • 开发工具:[eclipse)

四、附件-参考文件

  1. Java实验教学大纲

  2. PTA中提交Java程序的一些套路

  3. Java9相关资料(JShell简易教程等)

  4. IntelliJ IDEA的基本使用

相关文章:

第02周 预习、实验与作业:Java基础语法2、面向对象入门

集美大学课程实验报告-第02周 预习、实验与作业:Java基础语法2、面向对象入门项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 第02周 预习、实验与作业:Java基础语法2、面向对象入门上机实践日期上机实践时间 2学…...

part 4

这场感觉就T4比较有意义LCA 结论:三个点两两求 LCA,lca 的编号异或起来是答案(到三个点的距离总和最小的点),且该答案是以其中一点为根时另外两点的 LCA。 所以我们可以得到结论 点 \(p\) 和点 \(q\) 以 \(x\) 为根的 lca 深度是 \(dlca_{p,q} \oplus dlca_{p,x} \oplus d…...

systemctl的service脚本写法

Description=MedicTech Server # 服务描述,可以自定义 After=network.target network-online.target nss-lookup.target [Service] Type=simple # 服务类型,简单后台进程常用 simple User=root # 指定运行服务的用户,根据你的需求修改,非 root 用户更安全 ExecStart=/home/…...

9月份美联储的降息利好

美联储降息利好消息美国8月CPI与就业数据公布:通胀符合预期,失业金人数攀升,市场反应积极北京时间11日晚间,美国劳工统计局及相关机构公布多项关键经济数据,数据表现呈现分化,同时引发金融市场显著波动,具体如下:一、核心经济数据概览通胀数据(CPI):符合市场预期 美…...

口胡记录

我们都会拥有美好的未来——频率也大概就是一天两题的样子,因为我还要做到一周 VP 两场 CF Div2。 这对于一个暑假才开始复健,一年没训的人来说已经很困难了/fn/ll P9753 [CSP-S 2023] 消消乐 Description 给你一个字符串 \(s\),让你求出 \(s\) 的偶回文子串个数。 \(|s|\le…...

Day16内存分析及初始化

图中空白处是关于数组下标越界的报错,调用的数组长度超出被调用数组的长度时程序会报错package array;public class ArrayDemo2 {public static void main(String[] args) {//静态初始化:创建+赋值int [] a = {123,4566,756765,5676,421,442,};System.out.println(a[3]);//前面…...

leveldb源码分析 #1 Slice WriteBatch WriteBatchInternal 【work记录】

日期:2025.9.6(凌晨) 个人总结: perface 是这样的,本来是打算写完之后再整理的,但是感觉自己貌似会懒癌犯了,所以决定还是自己看了哪些内容就都发了吧。 如果自己真的会想整理的话,那就算之前写个过半成品应该也会有心去整理好好总结吧。 为了自己的数据库的水平可以再提…...

欧拉安装

因为 openEuler 22.03 LTS 使用的内核版本是 5.10,所以选择 5.x 内核的选项是最匹配的。...

2025实测:6款主流公众号编辑器大比拼,解决你的排版难题!

在新媒体运营的日常工作中,公众号排版是一项耗时又费力的任务。写作慢、排版耗时、跨平台排版不统一、跨平台发文琐碎、热点跟不动不及时、配图难/侵权风险等问题,常常困扰着我们这些新媒体人。为了找到一款好用的公众号编辑器,我亲测了多款市面上的主流产品。在本文中,我将…...

devc学C语言

之前用的是VS,现在开始用 devc,兼容性更强...

HarmonyOS 5.1手势事件详解

大家好,我是 V 哥。手势事件由绑定手势方法和绑定的手势组成,绑定的手势可以分为单一手势和组合手势两种类型,根据手势的复杂程度进行区分。本文跟着 V 哥一起来探讨手势事件处理。 想要考取鸿蒙认证的小伙伴,请加入V 哥班级获取辅导: https://developer.huawei.com/consu…...

Vue3项目中集成AI对话功能的实战经验分享

ai-suspended-ball-chat组件使用体验摘要 本文分享了Vue3项目中使用ai-suspended-ball-chat组件集成AI对话功能的实践经验。该组件提供悬浮球和独立面板两种模式,支持流式响应、图片上传、语音交互等功能,显著提升了用户体验。通过实际案例展示了在客服系统和代码助手场景中的…...

gulimall出现服务间调用org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose 问题

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;A调用B模块出现上面这个问题,…...

Java02课前问题列表

Java02课前问题列表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[] ar…...

达梦数据库安装和使用

1、达梦数据库安装地址 https://eco.dameng.com/document/dm/zh-cn/start/install-dm-windows-prepare.html 2、 点击下载3、4、 现在版本只需要点击exe文件56 点击【下一步】如图所示7、 接受授权协议8 如果没有key文件可跳过 如果有点击浏览找到key文件系统自动校验9建议典型…...

CSP 赛前周记

初赛前 - 第一周(末) 这学期的第一周,据说是本学期第二长的假期,故开始摸摸。 Day1 - 周五 晚上回来开了把信奥大联赛,发现比你谷月赛还烂,IOI 赛制,风格跟 CSP 三不沾,每周有时间打打玩玩吧(结果被打爆了,只有 230pts)。总结Day2 - 周六 由于作业多得一批,白天在疯…...

Day16对数组的基本认识

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

Ubuntu 界面变为 Mac

sudo apt install gnome-tweaks...

今日随笔

今天完成了社会实践调查作业...

Day16

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

PVE9环境下飞牛OS安装vGPU驱动

1.安装过程# 切换root权限 sudo su -# 屏蔽nouveau echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf# 更新initramfs update-initramfs -u# 安装组件 apt update && apt install build-essential dkms linux-headers-generic lib…...

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化环境变量其它配置源

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化&环境变量&其它配置源 1. 配置系统入门(视频2-32)传统Web.config配置的缺点,之前DI讲过。 为了兼容,仍然可以使用web.config和ConfigurationManage类,但不推荐。 .NET中的配置系统…...

md格式

markdown # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题*斜体* **粗体** ***粗斜体*** ~~删除线~~ `print("hello world)` ==高亮== 一级标题 二级标题 三级标题 四级标题 斜体 粗体 粗斜体 删除线 print("hello world) 高亮>一层嵌套引用 >>二层嵌套…...

CSP-S模拟20

前言: 一场通过乱搞获得如下成绩的比赛。\(T1:\) 思路: 一场情况超级复杂(bushi)的大模拟(应该可以这么叫吧?)直接先这样这样,在那样那样,最后在叽里呱啦就好了。 嘿嘿,开个玩笑嘛。首先,我们知道一定至少从\(S\)跳到\(S\)到\(T\)的那条链上,这样我们可以就\(S\)跳…...

第7篇、Kafka Streams 与 Connect:企业级实时数据处理架构实践指南

Kafka Streams 与 Kafka Connect:企业级实时数据处理架构实践指南 技术背景与适用场景 在现代数据架构中,实时数据处理已成为企业数字化转型的核心能力。Apache Kafka作为分布式流处理平台,提供了两个关键组件:Kafka Streams:轻量级流处理库,支持有状态实时计算 Kafka Co…...

Day16编写一个计算机程序

package method; import java.util.Scanner; public class Demo6 {/**作业:*1 写四个方法,加减乘除*2 利用循环+switch进行用户交互*3 传递需要操作的两个数*4 输出结果*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);boolean sco…...

迷宫最短路径

2025.9.11 曹立 题目内容 给定一个迷官的地图,地图是一个二维矩阵,其中0表示通道,1表示墙壁,S表示起点,E表示终点。你需要从起点S出发,通过最路径到达终点E,返回最短路径的步数,如果无法到达终点,则返回-1,迷宫中会有虫洞,用数字2表示,成对出现,你走入虫洞可以穿越…...

千靶日记-0003

day-3 今天事情不多,继续打靶,这个靶机关键点不多 Hommie靶机复盘 https://t.bilibili.com/1111299672388927491?share_source=pc_native...

COMSOL 6.3 下载+安装教程+激活教程:一站式下载安装激活操作说明

COMSOL 6.3 作为主流多物理场仿真软件,是工程设计与科研的重要工具。不少用户在下载安装时会遇权限不足、许可证无效等问题。本教程围绕安全下载渠道、 step-by-step 安装步骤、常见问题解决展开,还附入门实操,助你高效完成安装,快速上手软件。目录一、先搞懂:COMSOL 6.3 …...

20231427-田泽航-Linux命令实践

1...

202207_BUGKU_二维码GIF

GIF分离,QRCODE,ZXING库Tags:GIF分离,QRCODE,ZXING库 0x00. 题目0x01. WP 01 分离GIF工具路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件/Tools 工具名称:风二西_GIF图片分离工具.zip 02 使用脚本批量扫描 exp.py #将指定文件夹下的文件…...

20250910NOIP模拟赛

20250910NOIP模拟赛 A 题意: 有 \(n\) 个小球分为红、蓝两种颜色排成一排,现在你可以进行若干次操作,每次操作选择任意 \(R+B\) 个小球,使其有 \(R\) 个红球,\(B\) 个蓝球,把这些小球全部染为白色,且在该选择序列中,最左侧的球到最右侧的球之间不得存在已经被染为白色的…...

分治 NTT 一则

le0n 太强大!1...

U604938 你不准卡 O(n sqrt n log L) 其中 L log L = sqrt n

U604938 你不准卡 O(n sqrt n log L) 其中 L log L = sqrt n 如题目所言,这道题的出现就是为此,所以不要说什么 wyy。 首先是空间上卡掉了 \(n\sqrt n\) 空间的做法,然后因为值域限制卡掉了回滚莫队(也许只是我菜才不会写?)。总之再有什么我也没法了,就这样。 如果你要卡…...

20250906

20250906T1 推倒骨牌 多维护几个东西就能直接倍增了。不要开 long long。代码 #include <iostream> #include <algorithm> #include <string.h> #define lowbit(x) ((x) & (-(x))) using namespace std; int n, q; struct BIT {pair<int, int> bi…...

【2025最新推荐】AI大模型API中转站 | 国内直连ChatGPT/Claude/Gemini全系API接口服务

作为一名开发者,你是否曾为了使用ChatGPT、Claude等AI模型而苦恼?网络问题、支付困难、成本昂贵...这些痛点让很多国内开发者望而却步。今天给大家推荐简易API中转站,解决这些问题。 1.什么是API中转站? API中转站是专为国内开发者打造的AI模型API中转服务平台。简单来说,…...

在用灵魂去感受另一个灵魂的震颤

【用灵魂去感受另一个灵魂的震颤】...

html怎么写

html 1. 基本结构 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title></title> <bod…...

谁拿了谁的伞?

我:要去上课了,哎,不想去上课,我想在工位带着。算了,还是去吧。我的伞放在工位门口左边,光线很黑,拿错了雨伞,拿成了学长的雨伞去上课。一到教室,刚坐下,老师就开始说,不让坐最后一排啊,你们几个快做前面去,然后我就拿着我的伞坐到了前面。这课是真无聊,我准备上…...

NSSCTF-misc

签到 用emoji-aes解码,key为GAME ☀☺⏩☺⌨☂☃✅ 得到flag{10ve_4nd_Peace} GIF有点大GETwbStego4open 隐写 首先,wbStego4open会把插入数据中的每一个ASCII码转换为二进制形式 然后,把每一个二进制数字再替换为十六进制的20或09,20代表0,09代表1 最后,将这些被转换后的…...

百粉粉福

应机房某人要求,说要搞一个百粉粉福,决定先做一个 \(Q&A\) ,其它的请各位想想可以做什么别的粉福。 \(Q&A\) 可以直接回复这篇帖子或直接私信我,到时候会发到你谷主页,文章跟博客园,支持一下呗QwQ \(Q&A\)Q:瑞平我 @Misty_PostA:感觉是非常可爱的学弟,平时…...

lc1024-视频拼接

难度:中等(中期)题目描述给定一些区间和一个数字 time,找到能覆盖 [0, time] 的最少区间数示例 输入:clips = [[0,2],[4,6],[8,10],[1,9],[1,5],[5,9]], time = 10 输出:3 解释:选 [0,2], [8,10], [1,9]输入:clips = [[0,1],[1,2]], time = 5 输出:-1 解释:找不到返回…...

多元统计分析1

多元统计分析1 大三开始学习多元统计分析,首先使一些预备知识,基本是就是一些高代,数分,概率论的有些难度的知识。我个人觉得这些知识还是有难度的,尤其是距离高代已经过去了一年时间了。 概率论这里就是一些随机变量的均值,方差的性质。由于涉及到了多变量的协方差矩阵一…...

OI界的梗

%%% 在C++“%”是取模的意思,简称模,是膜拜大佬的意思(%越多,语气越强) 蒟蒻 他本是一种可以吃的植物(就是魔芋),可是因为他谐音“巨弱”,所以,他被用作自嘲,但没人会说别人是蒟蒻的,这是一种基础礼仪 神犇(读ben(第一声))、巨佬 神犇是大牛的升级版 巨佬是大佬…...

202404_QQ_ZIP嵌套

ZIP,嵌套Tags:ZIP,嵌套 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202404_QQ_ZIP嵌套.zip 0x01. WP打开txt文件发现文件头为504b0304 导入到010Editor另存为tmp.zip 打开tmp.zip发现里面是另一个txt 打开…...

无重复字符的最长子串-leetcode

题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子…...

两个常见的 计数问题 trick

两个非常有用的计数 trick,虽然感觉比较典。 计数转 01 有一件事情:\(v=\sum_{i=1}^V [v \geq i]\),\(V\) 为值域。看着好像没有什么突破性的转变,但是当我们对很多东西进行统计的时候,如果对于 有多少个大于等于 某个值 \(v\) 是好做的话,那么我们就可以做这个转化:\(\…...

搜维尔科技:Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率

随着人工智能与机器人技术的深度融合,人形机器人正从实验室走向工业制造、医疗护理、公共服务等真实场景。然而,要让机器人真正"像人类一样工作",其动作的流畅性、精准度与环境适应性仍是技术突破的关键。Xsens动作捕捉系统通过创新的拟人化动作AI训练方案,为机器…...

文件轮转机制

文件轮转机制 基于文件的持久化队列(File-based Persistent Queue),利用 双文件切换(Double Buffering / File Rotation) 来保证批处理、高效写入、并发安全。 方法主要实现的机制双文件切换(Double Buffering / File Rotation) • 通过 inputFile(正在写的新数据) 和…...

202110_绿盟杯_隐藏的数据

ZIP,伪加密,密码爆破,DOCX文件Tags:ZIP,伪加密,密码爆破,DOCX文件 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202110_绿盟杯_隐藏的数据.zip 0x01. WP 01 打开压缩包,发现有word文件和zip文件,得到flag1…...