第二周 预习:Java基本语法2、面向对象入门

黄文辉7001096 网络21级 2022-09-04 21:59:04

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将数组元素及对应下标作为数组新的元素,即str[i]i。

1.2 main方法的x有没有被改变?为什么?

没有。基本数据类型作为方法参数时,changeStr方法传递的是x所存放引用的拷贝,不改变x的值。

1.3 main方法的args数组的内容有没有被改变?为什么?

没有,未初始化。

1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。

toString方法将数组以指定形式输出。

cmd窗口运行时添加参数。

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]

int数组为定义值为NULL。 

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

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

重新读取了一块内存用于储存新的值,并将strArr[1]引用指向此块内存,并不是直接改变。

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

public class Main {
    public static void main(String[] args) {    
    	int [][] a=new int[5][];
		for (int i = 0; i < a.length; i++) {
          a[i] = new int[i+1]; 
          }   
		for (int i = 0; i < a.length; i++) {
			for(int j=0;j<i+1;j++)
			{
				 a[i][j]=j;
			}
		}
		for (int[] arr : a) {
			for (int arr2 : arr) {
				System.out.print(arr2);
			}
			System.out.println();
		}
    }
}
0
01
012
0123
01234

 第二维的长度与定义的大小有关,为最高维限制其能保存数据的最长的长度,然后再为每个元素单独分配空间。

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

类是具有相同属性和服务的一组对象的集合。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。

Math类无对象。Math的构造方法是private,无法创建对象。

length是private。toString()是public。将部分属性设置成private,控制外界对对象属性的不合理更改,以确保程序的稳定性。

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

setter/getter模式对对象属性访问可以对private类型的属性进行单一的操作,而无需破坏类外的任何代码。

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

可以在定义的时候初始化,也可在使用时初始化。

初始化的方法:声明该属性的时候初始化,在构造方法中初始化,在初始化块中初始化。

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

Java用一对大括号作为语句块的范围,称为作用域,作为在作用域里定义的一个变量,它只有在哪个作用域结束之前才可使用。语句在作用域内,在调用后执行。

...全文
674 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-Java 发布问题, 以便更快地解决您的疑问
内容概要:本文围绕基于Basisformer模型的时间序列锂离子电池SOC(State of Charge,荷电状态)预测展开研究,提出一种融合Transformer架构与基函数映射机制的深度学习方法,旨在提升锂电池SOC估计的精度与鲁棒性。该方法采用PyTorch框架实现,通过构建轻量化Basisformer网络,对电池运行过程中采集的电压、电流、温度等多维时序数据进行高效建模,充分挖掘数据中的长期依赖关系与非线性动态特征,从而实现高精度的端到端SOC预测。文中系统阐述了模型的设计原理、网络结构细节、训练优化策略及实验验证流程,并在公开电池数据集上开展对比实验,结果表明该方法在预测准确性、收敛速度和泛化能力方面均优于传统的LSTM、CNN-LSTM及标准Transformer模型。; 适合人群:具备一定Python编程基础和深度学习理论知识,从事电池管理系统、新能源汽车、储能系统或时间序列预测相关研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于锂电池健康状态监控与剩余电量精确估计,提升电动汽车与储能系统的安全性与能效管理水平;②为深度学习在工业级时序预测任务中的【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代码实现)落地提供可复现的技术方案与优化思路;③作为基于注意力机制的电池状态预测研究的入门与进阶参考资料。; 阅读建议:建议读者结合提供的Python代码实践操作,深入理解Basisformer中基函数编码与注意力机制的融合设计,同时可尝试在不同电池工况数据上迁移验证,进一步掌握模型调参与性能优化技巧。
内容概要:本文系统阐述了基于麻雀搜索算法(SSA)的无人机三维路径规划方法,并提供了完整的Matlab代码实现。该方法采用一种新兴的群体智能优化算法——麻雀搜索算法,针对复杂三维环境(如城市、山地等)中的无人机飞行任务,构建多目标优化模型,综合考虑路径长度、飞行高度变化、威胁规避能力及转弯角度成本等因素,以实现安全、高效、低能耗的最优路径搜索。文中不仅详细介绍了SSA算法的原理及其在路径规划中的具体应用流程,还通过与其他主流智能算法(如灰狼优化GWO、粒子群PSO、鲸鱼优化WOA等)进行对比实验,验证了SSA在收敛速度、寻优精度和鲁棒性方面的优越性能。该资源属于一系列智能优化算法在无人机路径规划中应用的研究成果之一,配套仿真模型与可运行代码,便于科研复现与教学实践。; 适合人群:具备一定Matlab编程基础,熟悉智能优化算法基本原理,从事无人机路径规划、智能控制、群体智能或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 在复杂三维地形或城市环境中规划无人机的安全飞行路径;② 对比分析麻雀搜索算法与其他智能优化算法(如PSO、GWO、WOA等)在路径规划任务中的性能差异;③ 实现兼顾路径最短、能耗最低、安全性最高的多目标无人机航迹优化。; 阅读建议:建议结合提供的Matlab代码进行仿真实验,深入理解目标函数设计、环境建模、约束处理及算法参数调优等关键环节,可进一步拓展至动态障碍物避障、多无人机协同路径规划等更复杂的应用场景。

4,167

社区成员

发帖
与我相关
我的任务
社区描述
为初学Java的大学生提供一个学习、交流的社区。 社区包括:技术文章、学习任务、在线课程、在线编程练习。
javajava-eeeclipse 高校
社区管理员
  • zhrb
  • kenandoer
  • 骆谦实
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区板块说明:
1. Java技术:包含Java技术的各种新闻、文章。
2. 教学频道:包含Java基础技术与Java教学中常用的一些文章。建议初学者、在线学习的同学在这里交流、提问、浏览课程学习相关文章。
3. 学习任务:老师发布的教学任务。
4. 其他技术:其他技术文章。

社区链接说明:
1. 在线学习:本社区对应的在线课程(免费学习)。
2. 编程练习:本社区使用的在线编程练习平台(加入在线课程后,免费练习)。
3. 项目实例:一个简单的Java项目示例。
 

试试用AI创作助手写篇文章吧