Java面向对象程序设计-对象数组的 for each 循环

 这是翁恺老师课程3.2.2对象数组中的示例代码:

class Value{private int i;public void set(int i){this.i=i;}public int get(){return i;}
}public class NoteBook {public  static  void main(String[] args) {Value[] a = new Value[10];for (int i = 0; i < a.length; i++) {a[i] = new Value();a[i].set(i);}for (Value v : a) {System.out.println(v.get());v.set(0);}for (Value v : a) {System.out.println(v.get());}}
}
 

Value 类的定义

class Value {private int i;public void set(int i) { this.i = i; }public int get() { return i; }
}
  1. class Value {:定义一个名为 Value 的类。
  2. private int i;:定义一个私有成员变量 i,类型为 int。私有的意思是只有这个类内部的方法能访问 i
  3. public void set(int i) { this.i = i; }:定义一个公有的 set 方法,接受一个 int 类型的参数 i,并将其赋值给成员变量 i
  4. public int get() { return i; }:定义一个公有的 get 方法,返回成员变量 i 的值。

public void set(int i) { this.i = i; }

  1. set(int i)     
    1. 这是方法的名称和参数列表
    2. 方法名是 set
    3. 参数列表中有一个参数 int i ,表示这个方法需要一个整数类型的参数
  2. { this.i = i ;}
    1. 这是方法的主体,用 { } 包围
    2. this 关键字:指当前对象的引用。在实例方法中,this 表示调用这个方法的当前对象
    3. this.i : 这是当前对象的成员变量 i 。用 this 可以明确表示我们在操作当前对象的成员变量,而不是方法的参数 i 
    4. this.i=i; :将方法参数 i 的值赋给当前对象的成员变量 i 。用于在类的外部通过方法来修改对象的状态

这个方法是一个典型的 "setter" 方法,用来设置对象的某个成员变量的值。在这个例子中,set 方法用来设置 Value 类中私有成员变量 i 的值。

使用示例

Value v = new Value();
v.set(5);

当调用 v.set(5) 时:

  • 参数 5 被传递给方法 set
  • 在方法内部,this.i = i5 赋值给对象 v 的成员变量 i
  • 结果是,v 对象的成员变量 i 的值变成了 5

main 方法

public static void main(String[] args) {Value[] a = new Value[10];for (int i = 0; i < a.length; i++) {a[i] = new Value();a[i].set(i);}for (Value v : a) {System.out.println(v.get());v.set(0);}for (Value v : a) {System.out.println(v.get());}
}
  1. public static void main(String[] args) {:定义程序的入口方法 main

  2. Value[] a = new Value[10];:声明并初始化一个长度为 10 的 Value 类型的数组 a。数组中的每个元素最初都为 null

  3. for (int i = 0; i < a.length; i++) {:使用一个 for 循环遍历数组 a 的每个索引,从 0 到 9。

  4. a[i] = new Value();:为数组 a 的第 i 个位置创建一个新的 Value 对象。

  5. a[i].set(i);:调用 Value 对象的 set 方法,将当前索引 i 赋值给对象的成员变量 i

  6. for (Value v : a) {:使用增强型 for 循环遍历数组 a 中的每个 Value 对象。

  7. System.out.println(v.get());:调用 Value 对象的 get 方法,打印成员变量 i 的值。

  8. v.set(0);:将当前 Value 对象的成员变量 i 设置为 0。

  9. for (Value v : a) {:再次使用增强型 for 循环遍历数组 a 中的每个 Value 对象。

  10. System.out.println(v.get());:再次调用 Value 对象的 get 方法,打印成员变量 i 的值。

程序的输出

  1. 第一个 for 循环将数组中的每个 Value 对象的 i 值依次设置为 0 到 9。
  2. 第二个 for 循环打印出这些值,然后将所有 Value 对象的 i 值设置为 0。
  3. 第三个 for 循环再次打印所有 Value 对象的 i 值,这时所有值都是 0。

输出结果如下:

0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
0
0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从C++到Java一周速成】章节14:网络编程

章节14&#xff1a;网络编程 【1】网络编程的概念【2】IP地址与端口的概念【3】网络通信协议引入网络通信协议的分层 【3】Socket套接字【4】单向通信【5】双向通信 【1】网络编程的概念 把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的网…

头歌openGauss-存储过程第2关:修改存储过程

任务描述 本关任务&#xff1a; 修改存储过程pro0101&#xff0c;并调用&#xff1b; --修改sel_course表中成绩<60的记录为成绩10&#xff0c;然后将计算机学院所有学生的选课成绩输出&#xff1b; --a、需要先删除存储过程pro0101&#xff1b; drop procedure if exists p…

LLM 入门与实践(三)Baichuan2 部署与分析

本文截取自20万字的《PyTorch实用教程》&#xff08;第二版&#xff09;&#xff0c;敬请关注&#xff1a;《Pytorch实用教程》&#xff08;第二版&#xff09;《Pytorch实用教程》&#xff08;第二版&#xff09;无论是零基础入门&#xff0c;还是CV、NLP、LLM项目应用&#x…

Python协程的作用

过分揣测别人的想法&#xff0c;就会失去自己的立场。大家好&#xff0c;当代软件开发领域中&#xff0c;异步编程已成为一种不可或缺的技术&#xff0c;用于处理大规模数据处理、高并发网络请求、实时通信等应用场景。而Python协程&#xff08;Coroutine&#xff09;作为一种高…

【译】MySQL 组复制 - 部分网络故障对性能的影响

原文地址&#xff1a;MySQL Group Replication – Partial Network Failure Performance Impact 在这个由两部分组成的博客系列中&#xff0c;我想介绍一些使用组复制的故障转移场景。在第一部分中&#xff0c;我将讨论我在撰写这些文章时发现的一种有趣的行为和性能下降。在第…

C#学习指南:重要内容与实用技巧

学习C#编程是一段充满挑战但又非常充实的旅程。以下是我在学习过程中积累的一些经验&#xff0c;希望能对大家有所帮助。 一、掌握基础概念 类及其成员 C#中的类是编程的基础模块。理解类的结构、属性、方法和构造函数是至关重要的。每个类都有其特定的功能&#xff0c;学会如…

力扣HOT100 - 169. 多数元素

解题思路&#xff1a; 有点类似于Boyer-Moore 投票算法&#xff0c;但更加形象。 class Solution {public int majorityElement(int[] nums) {int winner nums[0];int cnt 1;for (int i 1; i < nums.length; i) {if (winner nums[i]){cnt;} else if (cn…

【JavaScript寻宝之旅】var和let的区别

前言 在JavaScript中&#xff0c;let和 var 都是用来声明变量的关键字 let 和 var 的区别 作用域: var 声明的变量具有函数作用域&#xff08;function scope&#xff09;。如果在一个函数内部声明&#xff0c;它只在该函数内部可见。如果在一个函数外部声明&#xff0c;它会…

景源畅信数字:抖音小店新手该怎么做?

在数字化时代的浪潮中&#xff0c;抖音不仅仅是一个分享短视频的平台&#xff0c;更是一个充满潜力的电商平台。对于想要进入这个领域的朋友们来说&#xff0c;开设一家抖音小店无疑是一个既激动又迷茫的起点。那么&#xff0c;作为新手&#xff0c;该如何在这个全新的舞台上立…

【Linux】信号之信号的产生详解

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误的话&#xff0c;还望指出&…

vue核心模块源码解析

响应式原理 Object.definePropertysetterProxy var count 1 var state {} Object.defineProperty(state , count,{get(){return count},set(val){count val} }) //弊端&#xff1a;不能主动监听到对象属性的新增或者删除&#xff0c;add/deleteref和reactive 声明响应式数…

翻译《The Old New Thing》- How do I mark a shortcut file as requiring elevation?

How do I mark a shortcut file as requiring elevation? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20071219-00/?p24103 Raymond Chen 2007年12月19日 如何将快捷方式标记为需要提升权限 简要 文章介绍了如何通过设置SLDF_RUNAS_US…

许冉直播不治本,京东需要刘强东

图片&#xff5c;影视剧《纸牌屋》剧照 ©自象限原创 作者丨艾AA 编辑丨薛黎 这届618&#xff0c;消费者的热情还未显现&#xff0c;商家的怒火先爆发了。 5月21日京东618开幕次日&#xff0c;多家图书社抵制618图书大促登上了热搜。此次争议与去年双十一京东采销与电…

移动端h5适配方案:媒体查询、编写js、lib-flexible、vw、rem和vw单位换算

文章目录 各种方案第二种&#xff1a;动态设置html的font-size媒体查询mediajs 第三种&#xff1a;vw方案 rem、vw单位换算手动根据设计稿进行计算lessvs code 插件 各种方案 1&#xff09;百分比设置&#xff08;X&#xff09;【百分比很难统一&#xff0c;不推荐】 2&#xf…

安卓高级控件(下拉框、列表类视图、翻页类视图、碎片Fragment)

下拉框 此小节介绍下拉框的用法以及适配器的基本概念&#xff0c;结合对下拉框Spinner的使用说明分别阐述数组适配器ArrayAdapter、简单适配器SimpleAdapter的具体用法与展示效果。 下拉框控件Spinner Spinner是下拉框控件&#xff0c;它用于从一串列表中选择某项&#xff0…

Java与GO语言对比分析

你是不是总听到go与java种种对比&#xff0c;其中在高并发的服务器端应用场景会有人推荐你使用go而不是 java。 那我们就从两者运行原理和基本并发设计来对比分析&#xff0c;看看到底怎么回事。 运行原理对比 java java 中 jdk 已经帮我们屏蔽操作系统区别。 只要我们下载并…

Android中华为手机三态位置权限申请理解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家&#xff0c; &#x1f449;点击跳转到教程 前言&#xff1a; 使用的华为MATE 20,Android10的系统。 <!--精准定位权限&#xff0c;如&#xff1a;…

赶紧收藏!2024 年最常见 20道 Redis面试题(五)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 20道 Redis面试题&#xff08;四&#xff09;-CSDN博客 九、Redis集群的主从复制模型是怎样的&#xff1f; Redis 集群的主从复制模型是一种数据冗余和高可用性策略&#xff0c;它允许数据在多个节点之间进行复制。…

41- 5 应急响应基本概念

一、应急响应基本概念 网络安全应急响应是指针对可能发生或已经发生的安全事件,进行监控、分析、协调、处理、保护资产安全的过程。其主要目的是让人们对网络安全有所认识和准备,以便在遭遇突发网络安全事件时能够有序应对并妥善处理。 当确实发生网络安全事件时,应急响应实…

js积累四 (读json文件)

function ReadRadioJson() {var url "../radio.json" //json文件url&#xff0c;本地的就写本地的位置&#xff0c;如果是服务器的就写服务器的路径var request new XMLHttpRequest();request.open("get", url, false); //设置请求方法与路径request.sen…