面向对象【对象数组的使用与内存分析、方法重载、可变个数形参】

news2025/1/21 12:03:36

标题

文章目录

  • 对象数组
    • 实例
    • 对象内存分析
  • 方法的重载
    • 重载方法调用
    • 打印方法的重载
  • 可变个数形参的方法
    • 特点
    • 传递任意数量的参数
    • 与其他参数共存
    • 传递数组或多个参数

对象数组

存储对象引用的数组。它允许您在单个数组中存储多个对象,并通过索引访问和操作这些对象。

实例

创建一个 Student 学生类,该类可以具有学生的属性(例如姓名、年龄等)。

public class Student {
    private String name;
    private int age;
     public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
	 public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
     // Getters and setters (省略)
     // 其他方法 (省略)
}

创建一个学生对象数组,并对其进行初始化和操作

	public class Main {
	    public static void main(String[] args) {
	        Student[] studentArray = new Student[3];
	         // 初始化学生对象数组
	        studentArray[0] = new Student("张三", 20);
	        studentArray[1] = new Student("李四", 22);
	        studentArray[2] = new Student("王五", 21);
	         // 遍历学生对象数组并输出学生信息
	        for (int i = 0; i < studentArray.length; i++) {
	            System.out.println("姓名:" + studentArray[i].getName() + ",年龄:" + studentArray[i].getAge());
	        }
	    }
	}

在这里插入图片描述

对象内存分析

在这里插入图片描述

方法的重载

方法的重载(Method Overloading)是指在同一个类中,允许存在多个同名方法,但这些方法的参数列表必须不同。方法的重载是通过改变方法的参数类型参数个数参数顺序来实现的(不包括参数名称)。

重载方法调用

  1. 如果传入的参数类型与某个重载方法的参数类型完全匹配,则直接调用该方法。
  2. 如果传入的参数类型与多个重载方法的参数类型都匹配,但有一个方法的参数类型更具体,则调用该方法。例如,如果有一个方法接受参数类型为 int ,而另一个方法接受参数类型为 double ,而传入的参数为 5.0 ,则会调用参数类型为 double 的方法。
  3. 如果传入的参数类型与多个重载方法的参数类型都匹配,且没有一个方法的参数类型更具体,则会产生编译错误,因为编译器无法确定具体调用哪个方法。
public class MyClass {
    public void printMessage() {
        System.out.println("Hello!");
    }
     public void printMessage(String message) {
        System.out.println("Hello, " + message);
    }
     public void printMessage(int number) {
        System.out.println("The number is: " + number);
    }
     public static void main(String[] args) {
        MyClass myObj = new MyClass();
        myObj.printMessage(); // 调用无参方法
        myObj.printMessage("World"); // 调用带有字符串参数的方法
        myObj.printMessage(10); // 调用带有整数参数的方法
    }
}

打印方法的重载

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        System.out.println(arr);//地址值

        char[] arr2 = new char[]{'a', 'b', 'c'};
        System.out.println(arr2);//abc

        boolean[] arr3 = new boolean[]{true, false};
        System.out.println(arr3);//地址值
    }

可变个数形参的方法

使用可变个数的形参来定义一个方法,这样可以接受任意数量的参数。可变个数的形参使用三个点(…)来表示,放在方法的参数列表中的最后一个参数位置。

特点

  1. 可以接受任意数量的参数:可变个数的形参允许方法接受任意数量的参数,包括零个参数。这使得方法在处理不同数量的参数时更加灵活。
  2. 使用数组来处理参数:在方法体内,可变个数的形参被当作数组来处理。方法可以使用数组相关的操作,如遍历、获取长度等来处理这些参数。
  3. 必须是方法的最后一个参数:可变个数的形参必须是方法参数列表中的最后一个参数。这是因为在方法调用时,编译器会根据参数的数量和类型来匹配方法,如果可变个数的形参不是最后一个参数,会导致参数的匹配出现歧义。
  4. 可以与其他参数共存:可变个数的形参可以与其他参数共存。方法可以同时拥有可变个数的形参和其他类型的参数,但可变个数的形参必须是最后一个参数。
  5. 可以传递数组或多个参数:在方法调用时,可以直接传递一个数组作为可变个数的形参,也可以传递多个参数,编译器会将这些参数封装为一个数组。

举例

传递任意数量的参数

public static void printNumbers(int... numbers) {
    for (int number : numbers) {
        System.out.println(number);
    }
}
 public static void main(String[] args) {
    printNumbers(1, 2, 3);
    printNumbers(4, 5);
    printNumbers();
}

与其他参数共存

public static void printInfo(String name, int... scores) {
    System.out.println("姓名:" + name);
    System.out.println("成绩:");
    for (int score : scores) {
        System.out.println(score);
    }
}
 public static void main(String[] args) {
    printInfo("张三", 80, 90, 85);
    printInfo("李四");
}

传递数组或多个参数

public static void printNames(String... names) {
    for (String name : names) {
        System.out.println(name);
    }
}
 public static void main(String[] args) {
    String[] studentNames = {"张三", "李四", "王五"};
    printNames(studentNames);
    printNames("赵六", "孙七");
}

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

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

相关文章

使用SpringBoot+SpringMVC+Mybatis+Redis实现个人博客管理平台

文章目录 前言1. 项目概述2. 项目需求2.1功能需求2.2 其他需求2.3 系统功能模块图 3. 开发环境4. 项目结构5. 部分功能介绍5.1 数据库密码密文存储5.2 统一数据格式返回5.3 登录拦截器 6. 项目展示 前言 在几个月前实现了一个servlet版本的博客系统&#xff0c;本项目则是在原…

JWT无状态理解

JSON Web Tokens (JWT) 被称为无状态&#xff0c;因为授权服务器不需要维护任何状态&#xff1b;令牌本身就是验证令牌持有者授权所需的全部内容。 JWTs都签订使用数字签名算法&#xff08;例如RSA&#xff09;不能被伪造。因此&#xff0c;任何信任签名者证书的人都可以放心地…

二维深度卷积网络模型下的轴承故障诊断

1.数据集 使用凯斯西储大学轴承数据集&#xff0c;一共有4种负载下采集的数据&#xff0c;每种负载下有10种 故障状态&#xff1a;三种不同尺寸下的内圈故障、三种不同尺寸下的外圈故障、三种不同尺寸下的滚动体故障和一种正常状态 2.模型&#xff08;二维CNN&#xff09; 使…

基于传统检测算法hog+svm实现图像多分类

直接上效果图&#xff1a; 代码仓库和视频演示b站视频005期&#xff1a; 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示&#xff1a; 数据集在datasets文件夹下 运行01train.py即可训练 训练结束后会保存模型在本地 运行02pyqt.py会有一个可视化…

iOS开发-自定义TabbarController与Tabbar按钮Badge角标

iOS开发-自定义Tabbar按钮Badge角标 Tabbar是放在APP底部的控件。UITabbarController是一个非常常见的一种展示模式了。比如微信、QQ都是使用tabbar来进行功能分类的管理。 一、实现自定义Tabbar 我这里Tabbar继承于系统的UITabBar&#xff0c;定义背景图、线条的颜色、tab…

Redis系列 2- Redis 的持久化

Redis系列 2- Redis 的持久化 1、关于 Redis 持久化2、RDB 持久化2.1、RDB 文件的创建与载入2.2、RDB 自动间隔性保存的配置2.3、Redis 快照2.4、RDB 重点总结 3、AOF 持久化3.1、命令追加(append)3.2、AOF 文件的写入与同步3.3、AOF 工作原理3.4、AOF 的文件载入与数据还原3.5…

QGIS3.28的二次开发一:编译工程

环境&#xff1a;VS2019OSGeo4WCMake_3.26Cygwin64QGIS_3.28 注意&#xff1a;一定要按照步骤顺序来&#xff01; 一、配置环境 &#xff08;一&#xff09;VS2019 VS2019下载链接https://my.visualstudio.com/Downloads?qvisual%20studio%202019&wt.mc_ido~msft~vsco…

day50-Insect Catch Game(捉虫游戏)

50 天学习 50 个项目 - HTMLCSS and JavaScript day50-Insect Catch Game&#xff08;捉虫游戏&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport"…

基于SpringBoot+Vue的大学生租房系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

第 356 场力扣周赛题解

A 满足目标工作时长的员工数目 签到题 class Solution { public:int numberOfEmployeesWhoMetTarget(vector<int> &hours, int target) {int res 0;for (auto x: hours)if (x > target)res;return res;} };B 统计完全子数组的数目 枚举子数组&#xff1a;枚举子数…

小研究 - 主动式微服务细粒度弹性缩放算法研究(四)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放&#xff0c;忽略了能够充分利用单台服务器资源的细粒度垂直缩放&#xff0c;从而导致资源浪费。为此&#xff0c;本文设计了主动式微服务细粒度弹性缩放算法…

溟㠭篆刻艺术……“瀚1”

每个人生犹如一颗颗繁星&#xff0c;在时空交错中汇聚成一条星汉灿烂的银河&#xff0c;在静谧深邃的宇宙中清澈回响&#xff0c;熠熠生辉。妻晓蕾题注溟㠭刊…… 溟㠭 篆刻作品“瀚1” 溟㠭 篆刻作品“瀚1” 溟㠭 篆刻作品“瀚1” 文/晓蕾

质效卓越,科技前沿—QECon北京站线下盛会成功落幕

7月28日-29日&#xff0c;第八届QECon质量效能大会在北京成功召开&#xff0c;这是质量效能领域备受期待的一场盛会&#xff0c;从2020年第一届QECon开启以来&#xff0c;历经四年QECon北京站终于首次线下落地。本次大会的核心主旨为“数生智慧&#xff0c;高质量发展新引擎”&…

虚拟局域网VLAN

概述 广播域 使用一个或多个以太网交换机互连接起来的交互式以太网&#xff0c;其所有站点都属于同一个广播域&#xff0c;随着交换式以太网规模的扩大&#xff0c;广播域响应扩大&#xff0c;从而形成一个巨大的广播域。 但是巨大的广播域会带来很多的弊端&#xff1a; 广…

JUC中其他常用类

1.CopyOnWriteArrayList ArrayList是线程不安全的&#xff0c;Vector是线程安全的(方法被Synchronized修饰)&#xff0c;CopyOnWriterArrayList是在Vector的基础上再做优化&#xff0c;因为当读取操作较多时&#xff0c;Vector的效率不高。CopyOnWriterArrayList中读操作并没有…

C++ 类和对象篇(一) 类的引入

目录 一、类的概念 二、类的引入 三、类的定义 1.定义一个类 2.struct 和 class 的区别 3.类中成员函数的声明、实现分离 四、封装及类的访问限定符 1.封装 2.类的访问限定符 五、类的作用域和生命周期 六、类的实例化 七、类存储方法 八、计算类的大小 一、类的概念 1…

Gazebo打不开

问题&#xff1a;启动Gazebo半天打不开&#xff0c;无反应 原因&#xff1a;启动Gazebo&#xff0c;会优先从网络上下载模型 解决方案&#xff1a; 1.断网&#xff0c;然后再启动Gazebo 2.把模型下载下来 模型下载链接&#xff1a;GitHub - osrf/gazebo_models: Gazebo da…

简要理清计算机的发展(从硬件和软件)

1.计算机硬件和其他板块的关系 2.什么是计算机系统 可以简单理解计算机系统 硬件 软件。 3.硬件、软件的发展 3.1.硬件发展 逻辑元件的发展&#xff1a; 发展时间逻辑原件速度&#xff08;次/秒&#xff09;内存外存其他第一代1946-1957电子管几千-几万汞延迟线、磁鼓穿…

从源程序到可执行文件的四个过程

从源程序到可执行文件的四个过程 预处理编译汇编链接 程序要运行起来&#xff0c;必须要经过四个步骤&#xff1a;预处理、编译、汇编和链接&#xff0c;如下图所示&#xff1a; -E选项&#xff1a;提示编译器执行完预处理就停下来&#xff0c;后边的编译、汇编、链接就先不执…

Flowable基础

简介 Flowable 是 BPMN 的一个基于 java 的软件实现&#xff0c;不过 Flowable 不仅仅包括 BPMN &#xff0c;还有 DMN 决策表和 CMMN Case 管理引擎&#xff0c;并且有自己的用户管理、微服务 API 等一系列功能&#xff0c; 是一个服务平台。 官方手册&#xff1a; https://…