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

ppt模板大师铁岭网站seo

ppt模板大师,铁岭网站seo,公司网站销售怎么做的,微商城开发费用多少Java 列表复制与对象引用 一、知识点 1. 对象引用的基本概念 在 Java 中&#xff0c;List<School> 这样的集合存储的并不是真正的对象&#xff0c;而是对象的“地址”&#xff08;引用&#xff09;。就好比你有一个文件柜&#xff0c;文件柜里放的不是文件本身&#x…

Java 列表复制与对象引用

一、知识点

1. 对象引用的基本概念

在 Java 中,List<School> 这样的集合存储的并不是真正的对象,而是对象的“地址”(引用)。就好比你有一个文件柜,文件柜里放的不是文件本身,而是指向文件存放位置的标签。集合中的每个元素都指向堆内存中的实际对象实例。

2. 列表复制与对象引用

当你用 new ArrayList<>(schools) 复制一个列表时,新列表(比如 sortedSchools)只是把原列表(schools)中对象的“地址”复制了一遍,而不是复制对象本身。也就是说,两个列表中的元素都指向同一个对象实例,就像两个标签指向同一个文件。

3. 对象属性修改的影响

因为两个列表中的元素指向同一个对象,所以当你修改复制后的列表(sortedSchools)中对象的属性时,原列表(schools)中对应的对象属性也会跟着变。就好比你通过一个标签修改了文件内容,另一个标签指向的文件内容也会变。

4. 避免原列表被修改的方法

如果你希望修改复制后的列表时不影响原列表,可以在复制列表时创建新的对象,而不是直接复制引用。比如用构造函数重新创建对象:

List<School> sortedSchools = new ArrayList<>();
for (School school : schools) {sortedSchools.add(new School(school.abbreviation, school.totalStudents));
}

这种方法虽然能避免原列表被修改,但会增加内存开销(因为要创建新的对象实例)和处理时间(因为要调用构造函数)。


二、面试题

1. 基础概念题

题目:请解释在 Java 中 List<School> 存储的是 School 对象还是对象的引用?并说明当使用 new ArrayList<>(schools) 复制列表时会发生什么?

答案List<School> 存储的是 School 对象的引用,而不是对象本身。就好比你有一个文件柜,文件柜里放的是指向文件的标签,而不是文件本身。当使用 new ArrayList<>(schools) 复制列表时,新列表只是复制了原列表中对象的引用(标签),而不是创建新的对象实例。也就是说,新列表和原列表中的元素都指向堆内存中同一个对象。

2. 代码分析题

题目:以下是一段 Java 代码,请分析代码的输出结果,并解释原因。

import java.util.ArrayList;
import java.util.List;class School {String abbreviation;int totalStudents;int unassignedStudents;int supervisors;public School(String abbreviation, int totalStudents) {this.abbreviation = abbreviation;this.totalStudents = totalStudents;this.unassignedStudents = totalStudents;this.supervisors = 0;}
}public class Main {public static void main(String[] args) {List<School> schools = new ArrayList<>();School school1 = new School("ABC", 100);schools.add(school1);List<School> sortedSchools = new ArrayList<>(schools);for (School school : sortedSchools) {if (school.unassignedStudents > 0) {school.unassignedStudents -= 20;school.supervisors++;}}System.out.println("原列表 schools 中学校的未分配学生数: " + schools.get(0).unassignedStudents);}
}

答案:输出结果是 原列表 schools 中学校的未分配学生数: 80。原因如下:

  • sortedSchools 是通过 new ArrayList<>(schools) 复制的,它只是复制了 schools 中对象的引用,而不是创建新的对象实例。
  • sortedSchools 中修改对象的属性(比如 unassignedStudentssupervisors),因为引用的是同一个对象,所以 schools 中对应的对象属性也会被修改。因此,schools.get(0).unassignedStudents 的值会从 100 变为 80。
3. 优化策略题

题目:如果希望在上述代码中,对 sortedSchools 中 School 对象属性的修改不影响 schools 列表,应该如何修改代码?请说明这种修改的优缺点。

答案

  • 修改方法:在复制列表时创建新的 School 对象,而不是直接复制引用。修改后的代码如下:
    List<School> sortedSchools = new ArrayList<>();
    for (School school : schools) {sortedSchools.add(new School(school.abbreviation, school.totalStudents));
    }
    
  • 优点:这样可以保证原列表 schools 不会被 sortedSchools 的操作所影响,数据的独立性更好。就像你复制了一份文件,修改副本不会影响原始文件。
  • 缺点:会增加内存开销(因为需要创建新的对象实例),同时也会增加处理时间(因为每次复制都要调用构造函数来创建新对象)。
http://www.dtcms.com/wzjs/314604.html

相关文章:

  • 巴中交通建设有限公司网站最近七天的新闻重点
  • 企业网站的建设 摘要网站站点查询
  • 凡科建站免费自己建网站需要多少钱
  • 怎样组建企业网站个人免费建站软件
  • 网站建设有哪些需求上海搜索引擎关键词优化
  • 怎么做网站板块媒体资源
  • 企业推广计划seo推广学院
  • 近期国外重大新闻事件seo长尾关键词
  • 有哪些做兼职的网站百度注册网站
  • 彬县网慈溪seo
  • 怎样查看网站是否被百度收录淘宝补流量平台
  • 珠海市做网站公司seo点击工具帮你火21星热情
  • 一个网站怎么做软件去哪里找需要推广的app
  • 湖南做网站kaodezhu小程序开发制作
  • 建湖县建设局网站百度浏览器官网
  • 做网站框架显示不出来百度一下你就知道官方网站
  • 网站做的二维码失效了爱链网中可以进行链接买卖
  • 大学生做那个视频网站百度搜索引擎入口官网
  • 土巴兔装修平台可靠吗百度网站如何优化排名
  • 手机怎么编辑网页湖南seo优化
  • 临泉建设网站seo的优化步骤
  • 想做一个网站怎么做谷歌google浏览器官方下载
  • 做问卷比较好的网站阿里云域名注册入口官网
  • 建设b2c商城网站云南省最新疫情情况
  • 绵阳做网站的公司有哪些东莞seo建站优化哪里好
  • 如何制作自己的网站视频教程泰州百度seo公司
  • wap手机网站程序百度关键词指数查询
  • 深圳服装设计学院长沙网站seo源头厂家
  • 机构ui设计培训seo外包公司一般费用是多少
  • 做58网站怎么赚钱吗seo网站优化流程