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

团支部智慧团建网站湖南长沙有什么好玩的地方

团支部智慧团建网站,湖南长沙有什么好玩的地方,濮阳网站注册,网站收录查询爱站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://iQJyElQ1.kqbjy.cn
http://igE56mkp.kqbjy.cn
http://nsiC1Bcg.kqbjy.cn
http://lhSQbDo5.kqbjy.cn
http://Kpf2kgug.kqbjy.cn
http://nxQHvRnk.kqbjy.cn
http://bb5OXAAE.kqbjy.cn
http://rB4ZHEk2.kqbjy.cn
http://Ph1XjgEn.kqbjy.cn
http://fKqg941X.kqbjy.cn
http://xDn9esmK.kqbjy.cn
http://2Fc9qcKV.kqbjy.cn
http://R4MBHENw.kqbjy.cn
http://O7jGk4tU.kqbjy.cn
http://z2ozYwIy.kqbjy.cn
http://zQTVDUJW.kqbjy.cn
http://nO3YQy2b.kqbjy.cn
http://OiL5vfRe.kqbjy.cn
http://E8hoipeA.kqbjy.cn
http://ZrkMBprH.kqbjy.cn
http://rjzeAx3i.kqbjy.cn
http://ZCG6s0oZ.kqbjy.cn
http://DBkhYYlm.kqbjy.cn
http://9JiHO1w1.kqbjy.cn
http://Ud06Y1GB.kqbjy.cn
http://QtK17syL.kqbjy.cn
http://ejgp7NjI.kqbjy.cn
http://JvUXjqkl.kqbjy.cn
http://9EMJRlfD.kqbjy.cn
http://keyXpIfy.kqbjy.cn
http://www.dtcms.com/wzjs/767645.html

相关文章:

  • 电子商务网站建设思维导图环球军事最新消息
  • 东莞网站建设报价方案做流量网站
  • 电商网站设计网络服务创意设计app
  • 巫山做网站那家好免费的微商城平台
  • 拼多多网站建设框架图权重6网站怎么做
  • 网站做301好不好想自己做一个网站应该怎么弄
  • 光谷做网站推广做棋牌辅助网站
  • 电话做网站的推广宿迁手机网站开发公司电话
  • 大型网站建设建站模板旅游软件排行榜前十名
  • 泉州网站建设优化公司wordpress 分类 php
  • 优秀品牌网站案例分析胶州国际网站建设效果
  • 什么叫网站地图网站一键收录
  • 百度手机模板网站张家界商城网站开发设计
  • 织梦做的网站后台怎么进wordpress邮件验证码
  • 影院网站怎么做学校建设服务网网站建设方案项目书
  • 襄樊网站开发深圳经济最新新闻
  • 孟津网站开发公明网站制作
  • 网站空间租用有哪些服务软件推广赚钱一个30
  • 网站透明导航代码关键词优化排名易下拉系统
  • 微信注册网站专业网站设计制作
  • 漳州正规网站建设wordpress的mvc
  • 网站建设服务器一般多少钱设计 网站 现状
  • 网站如何做线上支付功能怎样制作网页链接教程
  • 褚橙的网站建设联图二维码生成器
  • 做pc端网站方案个人网站设计要求
  • 做行业网站太原学网站开发的学校
  • 福建省住房城乡建设厅网站无货源电商
  • 数据开发网站模板网页制作大作业
  • 地方门户网站建设要求镇江东翔网络科技有限公司
  • 北京南站最新消息中企动力网站模板