Java基础第十一课——类与对象(2)

由于类与对象这一部分的知识点很多,而且操作方法也有很多,所以这次将继续深入讨论一下关于类与对象中方法传参、方法重载、构造方法以及this关键字使用方面的知识。

一、方法传参

1.return关键字

return关键字作用

作用场景:方法内

作用:

1)结束方法,返回到方法调用处

2)结束方法并返回一个结果给方法调用者

注意:return在方法内结束后续操作的作用与break在循环结构中的作用表现一致

package com.kgc.se.demo01;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 8:49* QQ:1512015112* VX:18056394367*/public class ReturnDemo01 {public static void m1(int num){//在输出结果之前,判断你传递进来的参数num是否大于50,如果大于50,就给计算机一个提示,不输出这个结果,结束方法后续代码的执行if(num>50){return;}System.out.println(num);}public static void m2(int num){if (num<1){return;}for (int i=1;i<=num;i++ ){//输出i的值,如果i的值为5,就结束方法的执行if (i==5){return;}System.out.println(i);}}}
package com.kgc.se.demo01;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 8:51* QQ:1512015112* VX:18056394367*/public class ReturnDemo01Test {public static void main(String[] args) {ReturnDemo01.m1(100);System.out.println("方法调用完毕");ReturnDemo01.m2(10);}
}

2.数组方面的应用

前言:3大引用数据类型:数组、类、接口

类:是一种自己定义的数据类型,类是一个模板,模板中定义了属性和方法,通过这个模板创建出来的对象都会拥有这个类中定义的属性和方法

根据类创建的对象中可以存储各种属性值,对象就可以看成是一个容器,这个容器就可以存储不同类型的数据(属性的数据类型是不同)

类是一种数据类型,根据类创建出来的多个对象,可以存储在数组中

语法:数据类型[] 数组名={数据1,数据2,……,数据n};

例:

package com.kgc.se.demo02;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 9:01* QQ:1512015112* VX:18056394367*/public class ObjectArray01 {public static void main(String[] args) {//创建3个Student类对象Student student1 = new Student();student1.name="张三";student1.age=20;student1.gender='男';Student student2 = new Student();student2.name="李四";student2.age=22;student2.gender='男';Student student3 = new Student();student3.name="小芳";student3.age=18;student3.gender='女';//将上面3个Student类对象存储到数组中Student[] students ={student1,student2,student3};//遍历输出student数组中的所有元素for (int i = 0; i < students.length; i++) {//从students数组里取出的元素是一个一个的Student类对象,既然是对象,就可以调用属性、调用方法System.out.print(students[i].name+"-");System.out.print(students[i].age+"-");System.out.print(students[i].gender+"\n");//上面输出取出来的对象的信息,是一个属性一个属性去调用的,也可以直接通过对象来输出所有属性值System.out.println("***************************");for (Student stu:students){stu.showInfo();}System.out.println("***************************");students[i].showInfo();System.out.println("***************************");}}}
package com.kgc.se.demo02;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 9:04* QQ:1512015112* VX:18056394367*/public class Student {public String name;public  int age;public  char gender;public void showInfo(){System.out.println(name+"-"+age+"-"+gender);}
}

例:

package com.kgc.se.demo02;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 9:49* QQ:1512015112* VX:18056394367*/public class StudentUtilsTest {public static void main(String[] args) {Student student1 = new Student();student1.name="张三";student1.age=20;student1.gender='男';Student student2 = new Student();student2.name="李四";student2.age=22;student2.gender='男';Student student3 = new Student();student3.name="小芳";student3.age=18;student3.gender='女';Student student4 = new Student();student4.name="小红";student4.age=16;student4.gender='女';Student student5 = new Student();student5.name="王五";student5.age=22;student5.gender='男';Student student6 = new Student();student6.name="张港澳";student6.age=23;student6.gender='女';Student student7 = new Student();student7.name="张富康";student7.age=22;student7.gender='女';Student[] students1={student1,student2,student3,student4,student5,student6,student7,};//查找students1数组中0-6范围内是否有张三这个学生boolean  result= StudentUtils.findStudentName(students1,0,6,"张三");System.out.println("你要查找的数组的指定区间里有你要查找的学生姓名: " + result);}
}
package com.kgc.se.demo02;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 9:41* QQ:1512015112* VX:18056394367*/public class StudentUtils {//定义一个静态方法,实现在Student类型的数组中,查找指定区间内是否有指定的学生姓名,如果有,返回true,没有则返回falsepublic static boolean findStudentName(Student[] students,int startIndex,int endIndex,String name){//遍历students数组的指定区间,从这个区间中查找是否有姓名为name的学生for (int i = startIndex;i<=endIndex;i++){//比较范围内的Student对象姓名和你要查找的学生姓名if (name.equals(students[i].name)){return true;}}return false;}}

二、方法重载

方法重载:

在一个类中,多个方法的方法名相同,参数列表不同的现象,就是方法重载

方法重载的要求:

1)在同一个类中

2)方法名相同

3)参数列表不同(参数的类型不同,参数的个数不同,参数的顺序不同)

4)与方法的返回值类型无关

5)与方法的访问权限修饰符无关

public class Calc {//这是一个计算器类,类中有多个方法实现加法运算//定义一个求两个int类型数据之和的方法public  int sum(int num1,int num2){return num1+num2;}//定义一个求三个int数据之和的方法public  int sum2(int num1,int num2,int num3){return num1+num2+num3;}//定义一个求两个double类型数据之和的方法public double sum(double sum1,double sum2){return sum1+sum2;}//定义一个int类型数据和一个double类型数据之和的方法public double sum(int num1,double num2){return num1+num2;}//定义一个求double类型数据和一个int类型数据之和的方法public double sum(double num1,int num2){return num1+num2;}}

三、构造方法

构造方法:

作用:用来创建对象的

构造方法的特点:

1)构造方法名与类名相同

2)构造方法没有返回值,void也不写

3)当你定义好一个类的时候,系统自动为这个类添加一个无参的构造方法,并且隐藏起来了

4)当你在类中添加了其它构造方法后,会覆盖系统默认添加的无参构造方法,如果这时候你需要使用无参构造方法,你就需要手动添加一个无参构造方法,否则会报错

5)当一个类中有多个构造方法时,会构成方法重载现象

例:

package com.kgc.se.demo05;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 11:05* QQ:1512015112* VX:18056394367*/public class Test {public static void main(String[] args) {//创建一个int类型变量并输出int a = 100;System.out.println("a="+a);//a=100//创建一个Student类对象并赋值age为20//类名 对象名= new 类名();Student stu = new Student();stu.age = 10;System.out.println("stu的年龄:"+stu.age);//stu的年龄:10//创建Demo类对象,调用Demo类中的两个方法Demo demo = new Demo();//调用m1()方法demo.m1(a);//m1()方法中对传递过来的值进行操作后,值为:101System.out.println("a="+a);//a=100System.out.println("---------------");demo.m2(stu);System.out.println("stu的年龄:"+stu.age);//stu的年龄:11int[] nums = {11,22,33};System.out.println(nums);System.out.println(stu);System.out.println("-----------------------");//使用Student类中的有参构造方法创建对象Student student = new Student(20);System.out.println(student.age);}
}

package com.kgc.se.demo05;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 11:05* QQ:1512015112* VX:18056394367*/public class Student {public Student(){}public Student(int a){age =a;}public int age;
}

四、this关键字

每调用一次该构造方法,就应该将传递的参数赋值给当前对象,但是每次创建的对象名是不同的,所以需要一个标识来指向每次创建的对象,这个标识就是this关键字

this关键字表示当前对象,谁调用这个构造方法,this就指向谁,表示谁

例:

package com.kgc.se.demo06;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 11:16* QQ:1512015112* VX:18056394367*/public class GirlFriend {public String name;public int age;public char gender;public double height;public double weight;public String hobby;public String address;//在类中添加了有参构造方法之后,默认的无参构造方法会被覆盖,所以手动添加一个无参构造方法public GirlFriend(){}//添加一个只包含对象name属性和age属性的有参构造方法
//    public  GirlFriend(String a,int b){
//        name =a;
//        age=b;
//    }//添加一个有参构造方法
//    public GirlFriend(String a,int b,char c,double d, double e,String f,String g){
//        name =a;
//        age=b;
//        gender =c;
//        height=d;
//        weight =e;
//       hobby= f;
//       address =g;
//    }//上面两个有参构造方法的形参列表中形参的名字没有做到见面之意,在调用方法时不便于知道各个参数的含义,所以修改形参名public  GirlFriend(String name,int age){
//        name =name;
//        age=age;//上面形参实现了见名知意,但是在创建对象时发现,传递过来的参数没有赋值给所创建对象的对应属性中,那么因为代码内部,将传递过来的参数又赋值给了自己本身,没有指明赋值给所创建的对象this.name=name;this.age=age;}public GirlFriend(String name,int age,char gender,double height, double weight,String hobby,String address){
//        name =name;
//        age=age;
//        gender =gender;
//        height=height;
//        weight =weight;
//        hobby= hobby;
//        address =address;this.name =name;this.age=age;this.gender =gender;this.height=height;this.weight =weight;this.hobby= hobby;this.address =address;}//定义方法public void printInfo(){System.out.println(name+"-"+age+"-"+gender+"-"+height+"-"+weight+"-"+hobby+"-"+address);}}
package com.kgc.se.demo06;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/12 11:19* QQ:1512015112* VX:18056394367*/public class GirlFriendTest {public static void main(String[] args) {//使用GirlFriend类中默认存在的无参构造方法创建对象GirlFriend girlFriend1 = new GirlFriend();//给创建出来的girlfriend1对象的属性赋值girlFriend1.name = "小芳";girlFriend1.age =18;girlFriend1.gender = '男';girlFriend1.height = 165.5;girlFriend1.weight = 52.2;girlFriend1.hobby = "打男朋友";girlFriend1.address = "安徽";//输出girlfriend1对象的信息girlFriend1.printInfo();System.out.println("------------------------------");//使用Girlfriend类中的有参构造方法创建对象GirlFriend girlfriend2 = new GirlFriend("小红",20,'男',160.3,80.5,"拳击","安徽");//输出girlfriend2对象的信息girlfriend2.printInfo();GirlFriend girlFriend3 = new GirlFriend("小绿",60);//输出girlfriend3对象的信息girlFriend3.printInfo();GirlFriend girlFriend4 = new GirlFriend("小黄",20,'女',170.1,51.3,"打篮球","安徽");girlFriend4.printInfo();}
}

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

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

相关文章

鸿蒙TypeScript学习第14天:【联合类型】

1、TypeScript 联合类型 联合类型&#xff08;Union Types&#xff09;可以通过管道(|)将变量设置多种类型&#xff0c;赋值时可以根据设置的类型来赋值。 注意&#xff1a;只能赋值指定的类型&#xff0c;如果赋值其它类型就会报错。 创建联合类型的语法格式如下&#xff1…

UTONMOS元宇宙游戏特点

在元宇宙的世界里&#xff0c;游戏不再只是一种娱乐方式&#xff0c;而是一种全新的生活体验。UTONMOS元宇宙游戏带你穿越虚拟与现实的边界&#xff0c;开启一段前所未有的冒险之旅。 在这个充满无限可能的UTONMOS元宇宙游戏中&#xff0c;你将成为自己游戏世界的主角。可以自…

蓝桥杯(填空题)

十四届 B组 日期统计&#xff08;暴力枚举&#xff09; 数据 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1 0 0 9 4 8 0 9 1 2 8 5 0 2 5 3…

大话设计模式——9.单例模式(Singleton Pattern)

简介 确保一个类只有一个实例&#xff0c;并提供全局访问点来获取该实例&#xff0c;是最简单的设计模式。 UML图&#xff1a; 单例模式共有两种创建方式&#xff1a; 饿汉式&#xff08;线程安全&#xff09; 提前创建实例&#xff0c;好处在于该实例全局唯一&#xff0c;不…

Unity 遮罩

编辑器版本 2017.2.3f1 学习Unity的三张遮罩方式 1. Mask 遮罩方式 首先&#xff0c;在界面上创建2个Image&#xff0c;一个命名Img_Mask,大小设置 400* 400&#xff0c; 一个命名Img_Show,大小设置500*500。 然后&#xff0c;给 Img_Mask添加Mask,选择Img_Mask,点击Add Com…

叉车载货出入库AI检测算法介绍及应用

随着物流行业的快速发展&#xff0c;叉车作为物流运输的重要设备&#xff0c;其安全性和效率性越来越受到人们的关注。然而&#xff0c;在实际操作中&#xff0c;由于人为因素和操作环境的复杂性&#xff0c;叉车事故时有发生&#xff0c;给企业和个人带来了巨大的损失。为了提…

实验2 路由器基本配置

实验2 路由器基本配置 一、 原理描述二、 实验目的三、 实验内容四、 实验步骤1.建立实验拓扑2.基础配置3.配置路由器接口IP地址4.查看路由器配置信息5.连通性测试6.使用抓包工具 一、 原理描述 华为设备支持多种配置方式&#xff0c;操作人员要熟悉使用命令行的方式进行设备管…

每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)

目录 力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; …

Facial Micro-Expression Recognition Based on DeepLocal-Holistic Network 阅读笔记

中科院王老师团队的工作&#xff0c;用于做微表情识别。 摘要&#xff1a; Toimprove the efficiency of micro-expression feature extraction,inspired by the psychological studyof attentional resource allocation for micro-expression cognition,we propose a deep loc…

dfs板子

递归实现排列 留着明早省赛之前看 #include<iostream> using namespace std; int arr[10010]; int brr[10010]; int n,k; void dfs(int num){if(num > n){for(int i 1;i < n;i){cout << arr[i] << " ";}cout << endl;return;}for(in…

Oracle 正则表达式

一、Oracle 正则表达式相关函数 (1) regexp_like &#xff1a;同 like 功能相似&#xff08;模糊 匹配&#xff09; (2) regexp_instr &#xff1a;同 instr 功能相似&#xff08;返回字符所在 下标&#xff09; (3) regexp_substr &#xff1a; 同 substr 功能相似&…

Linux-线程

进程 与 线程: 参考自&#xff1a; Linux多线程编程初探 - 峰子_仰望阳光 - 博客园 (cnblogs.com) 进程:   典型的UNIX/Linux进程可以看成只有一个控制线程&#xff1a;一个进程在同一时刻只做一件事情。 有了多个控制线程后&#xff0c;在程序设计时可以把进程设计成在同一时…

CTF-遗留的压缩包

题目描述&#xff1a;小蓝同学给你发来了他自己开发的网站链接&#xff0c;他说他故意留下了一个压缩包文件&#xff0c;里面有网站的源代码&#xff0c;他想考验一下你的网络安全技能。 下发容器&#xff0c;访问链接&#xff0c;发现都是无关内容 联想到标题说有遗留的压缩…

【JAVASE】带你了解String类的常用方法和常见操作

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a; 再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 认识 String 类 2. 了解 String 类的基…

运放噪声评估的来龙去脉

运放噪声评估的来龙去脉 友情提示&#xff0c;运放电路的噪声分析还是比较复杂的&#xff0c;不论是基础理论还是对应的推导过程&#xff0c;都不是特别容易。考虑到兄弟们的基础参差不齐&#xff0c;所以我还是尽量说清楚点&#xff0c;这样导致看起来就有点罗里吧嗦&#xff…

SVM向量支持机

1.通俗理解 svm&#xff1a;support vector machine目标&#xff1a;利用超平面将两类数据分割开来&#xff0c;这个超平面就是我们要设计的对象 如何设计&#xff1f;我们设计之后会有间隔&#xff0c;间隔越大分类效果就越好&#xff1b;距离决策边界最近的点我们成为支持向…

前端学习<四>JavaScript基础——20-函数简介

函数的介绍 函数&#xff1a;就是一些功能或语句的封装。在需要的时候&#xff0c;通过调用的形式&#xff0c;执行这些语句。 补充&#xff1a; 函数也是一个对象 使用typeof检查一个函数对象时&#xff0c;会返回 function 函数的作用&#xff1a; 一次定义&#xff0c;…

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…

vox2vec论文速读

vox2vec: A Framework for Self-supervised Contrastive Learning of Voxel-Level Representations in Medical Images 摘要 本文介绍了 vox2vec——一种体素级表示的自监督学习 &#xff08;SSL&#xff09; 对比方法 vox2vec 表示由特征金字塔网络 &#xff08;FPN&#xf…

day9 | 栈与队列 part-1 (Go) | 232 用栈实现队列、225 用队列实现栈

今日任务 栈与队列的理论基础 (介绍:代码随想录)232 用栈实现队列(题目: . - 力扣&#xff08;LeetCode&#xff09;)225 用队列实现栈 (题目: . - 力扣&#xff08;LeetCode&#xff09; ) 栈与队列的理论基础 栈 : 先进后出 队列: 后进先出 老师给的讲解:代码随想录 …