java中的oop(二)、方法、对象数组、重载、参数.

public class Person {/*成员变量存储在堆中*/String name;int age;public void sleep() {String hour = "18小时"; //局部变量;存储在栈中;System.out.println("he is sleepping!");}public void setAge(int age) {   //局部变量--形式参数;}public int getInt() {return 1;}public String getName() {return name;}
}
public class Students {public static void main(String[] args) {Person lily = new Person();lily.age = 15;lily.name = "lily";System.out.println("lily" + lily.age);}
}

方法

public class Method {public static void main(String[] args) {Person p1 = new Person();int int1 = p1.getInt();System.out.println(int1);}
}

方法:(函数、面向过程)

抽象出一个公共方法,减少冗余;

1、声明:
权限修饰符 [其他修饰符] 返回值类型 方法名(形参列表)throw 异常类型】 {方法体;
}
方法头(){方法体;
}

2、权限修饰符:

private、缺省、protected、public;

3、返回值类型:void/

(1)其他类型需配合return使用;

4、方法名

(1)

5、变量列表:

(1)局部变量、可以是多个;

(2)格式:(类型1 形参1, 类型2 形参2)

6、一个方法中可以调用另一个方法;

7、方法内不能定义方法;

关键字 return;

1、结束一个方法;

2、结束一个方法,并返回一个值(结果);

对象数组

Public class student {String name;
}
Student[] studentArr = new Student[10];
for (int i = 0; i < studentArr.length; i++) {studentArr[i].name = "name" + i;studentArr[i].age = i;
}

重载

方法名一样,参数不同;

类似很多工具类里面的同名不同参的方法;

1、定义

(1)同一个类中,多个同名方法,参数列表不同;

2、两同一不同

(1)同类、同方法

(2)参数不同:个数不同,类型不同;顺序不同;

(3)注意:与返回值类型等其他的无关;

/*both methods have same erasure*/
public void add(String str){}
public String add(String str) {}

3、同一个类中不允许两个同样的方法;

(1)同名不同参数,不是同样的方法;

(2)编译器认为是两个方法;

Int[] arr = new int[]{1,2,3};
Arr; //0xaavv// 地址值;
Char[] arr2 = new char[] {‘a’, ’b’, ’c’}
Sout(arr2);// abc;// 因为sout方法重载了char数组;
public class Overload {public static void main(String[] args) {Overload overl = new Overload();overl.add("");overl.add(1,2);overl.add((double)1,2);overl.add(1,2,3);}public void add(int i, int j){}public double add(double i, double j){return 1.1;}public  void add(int i, int j, int k){}public void add(String str){}/*both methods have same erasure*/
//    public String add(String str) {
//
//    }/*** =======*/
}
可变个数形参方法 见代码Args_20230718_;

说明:在调用方法时,参数个数可以为0/1/2/3/4.。。。
链接

public class Args2_20230718 {public static void main(String[] args) {Args2_20230718 args2 = new Args2_20230718();args2.link("_");args2.link("_", "healthy", "zhang");}void link(String str, String... strs) {String res = "";for (int i = 0; i < strs.length; i++) {res = res + strs[i] + str;}System.out.println(res);}
}

同一个类中,也可以构成重载;

特例:数组类型的不可以和可变形参重载;
可变个数的形参必须是最后一个参数;

参数传递

值传递机制:

基础数据类型,值传递

引用数据类型,传递的是地址值;
对象类型这样写,传递的也是地址值;

Order order1 = new Order();
Order order2 = order1;

可变参数个数方法:(js中的剩余参数)

public class ValueTransfer {public static void main(String[] args) {
//        基础类型的局部变量;int m = 1;int n = 1;m++;System.out.println(m + "," + n);/*引用类型的局部变量*/int[] arr1 = new int[]{1,2,3,4,5};int[] arr2 = arr1;  //传递地址值;arr2[0] = 10;System.out.println(arr1[0] + "," + arr2[0]);System.out.println("=====对象类型======");/*对象类型*/Order order1 = new Order();System.out.println(order1.orderId);order1.orderId = 1;System.out.println(order1.orderId);System.out.println("=====order2======");Order order2 = new Order();order1.orderId = 1;System.out.println(order2.orderId);order2.orderId = 2;System.out.println(order2.orderId);System.out.println("=====order3======");Order order3 = order2;      //传递的也是地址值;System.out.println(order3.orderId);order3.orderId = 222;System.out.println(order3.orderId);System.out.println(order2.orderId);}
}class  Order{int orderId;
}
public class ValueTransfer2 {public static void main(String[] args) {ValueTransfer2 transfer2 = new ValueTransfer2();/*基础数据类型,值传递;*/int m = 1;transfer2.add(m);System.out.println(m);  //1;/*引用类型传递地址值*/int[] arr = new int[] {1,2,3};transfer2.add(arr);System.out.println(arr[0]); //2;System.out.println("=====对象类型======");Order2 order2 = new Order2();/*引用类型传递地址值*/System.out.println(order2.id);  //0;transfer2.add(order2);System.out.println(order2.id);  //1;}public void add(int i) {i++;}public void add(int[] arr) {arr[0]++;}public void add(Order2 order2) {order2.id++;}
}class Order2{int id;
}
public class Person {public static void main(String[] args) {Animal ani = new Animal();ani.setLegs(1);
//        System.out.println(ani.legs); 设置为private之后不可这样调用;System.out.println(ani.getLegs());//设置为private之后需要这样调用;}
}
class Animal{String name;/*私有化*/private int legs;public void setLegs(int l) {if(legs >= 0) {legs = l;
//            this.legs = l;}}public int getLegs() {return legs;}public void eat() {System.out.println("eat");}
}
public class Args {public static void main(String[] args) {Args arg = new Args();arg.getInt();arg.getInt(1);arg.getInt(2, 1);
//        arg.getInt(1,2, 1,4);}/*可变个数的形参方法*/public void getInt(int ... nums){System.out.println(11111);for (int i = 0; i < nums.length; i++) {System.out.print(nums[i]);}}/*可变个数的形参必须是最后一个参数;*/public void getInt(int i, int ... nums) {System.out.println(4444444);}
//    public void getInt(int[] nums) {};//'getInt(int[])' is already defined in 'com.healthy.zhang.overload20230717.Args'public void getInt(int i, int j) {System.out.println(2222);}public void getInt(int i) {System.out.println(3333);}}

递归方法

直接递归:直接自己调用自己;
间接递归:A調B;B调c,C调A;
隐式循环;

递归占用内存较多,比循环要慢;如果能用循环不用递归;

public class Recursion {public static void main(String[] args) {int n = 10;int r = recur(n);System.out.println(r);}static int recur(int n) {if(n<=1) {return n * 1;}return n * recur(n-1);}
}

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

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

相关文章

Python | Leetcode Python题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution:def sortColors(self, nums: List[int]) -> None:n len(nums)p0, p2 0, n - 1i 0while i < p2:while i < p2 and nums[i] 2:nums[i], nums[p2] nums[p2], nums[i]p2 - 1if nums[i] 0:nums[i], nums[p0] num…

跟小米学爆品

#小米爆品# 【课程背景】 小米手机世界第一、小米充电宝世界第一、平衡车世界第一、小米空气净化器世界第一。 小米做出很多世界第一&#xff1b;小米为什么做什么产品都能快速成功&#xff1f;小米打造爆品成功的秘诀是 什么&#xff1f; 长期给小米生态链企业和小米孵化器&a…

指针与const

指针与const 定义的对象中加上const 关键字&#xff0c; 表达一经初始化就不可修改的特性const 对象必须初始化 指针与constconst char* pc;指向常量的指针pc 初始化可以指向常量字符串&#xff0c; 内容不可以修改&#xff0c;但是指针指向可以修改char* const cp;指向char …

ESD静电问题 | 案例

【转自微信公众号&#xff1a;EMC容冠电磁】

相亲系统功能介绍

相亲系统是一种旨在帮助单身人士寻找合适伴侣的平台&#xff0c;其主要功能通常包括以下几个方面&#xff1a; 实名认证&#xff1a;为了确保双方的权益保障&#xff0c;用户必须进行实名认证后才能使用该系统。这有助于增加系统的安全性和可信度。偏好选择&#xff1a;用户可…

【Python】io_backend参数简介

在许多编程框架和库中&#xff0c;尤其是涉及到数据处理和深度学习的应用程序中&#xff0c;io_backend 参数常用于配置输入/输出&#xff08;I/O&#xff09;操作的后端类型和其他相关设置。这个参数通常通过字典&#xff08;dict&#xff09;的形式提供&#xff0c;使得可以灵…

网络安全之ACL

ACL&#xff1a;访问控制列表——控制列表&#xff08;策略列表&#xff09;&#xff0c;是一个控制工具。 功能&#xff1a;&#xff01;、定义感兴趣路由&#xff08;控制层面&#xff09;。2、定义感兴趣流量&#xff08;数据层面&#xff09;。 例如&#xff1a; 假设在该…

数字孪生涉及到的前沿技术:虚拟现实 人工智能 区块链 边缘计算。

数字孪生是各类技术的综合应用&#xff0c;除了咱们常见的传感器、数据采集、清洗、传输、建模、可视化技术外&#xff0c;还有还有一些前沿技术&#xff0c;会让数字孪生更加强大和智能&#xff0c;本文介绍几个。 虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#x…

京东运营大基本功:店铺八大数据分析 | 店铺所有商品API采集接口

数据分析是京东运营的基本功&#xff0c;想要做好京东运营&#xff0c;那么你就一定要掌握数据分析的技能&#xff0c;数据分析我们需要采集大量数据&#xff0c;这时候我们就要京东电商数据采集API接口&#xff0c;今天就重点来给大家讲讲关于数据分析的道与术。 01 一、分析…

抖音小店怎么找达人带货的?分享几个成功率超高的沟通话术!

哈喽~我是电商月月 做抖音小店&#xff0c;特别是无货源的商家想要更多的流量&#xff0c;必定会尝试直播卖货&#xff0c;不会自己直播卖货&#xff0c;就会开通精选联盟&#xff0c;在里面找达人合作 那精选联盟到底是怎样找达人带货的呢&#xff1f; 有的达人打招呼了根本…

五、Redis五种常用数据结构-SET

Redis的Set结构存储的数据和Java中的HashSet类似&#xff0c;都是无序且不重复的。其底层的数据结构有两种&#xff0c;一是当value为整数时&#xff0c;且数据量不大时采用intset来存储。其他情况使用dict字典存储。集合中最多存储232-1(40多亿)个数据。 1、常用命令 sadd k…

探索深度学习的奥秘:从入门到进阶

一、引言 在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;已经不再是遥不可及的科幻概念&#xff0c;而是逐渐成为我们生活的一部分。其中&#xff0c;深度学习&#xff08;Deep Learning&#xff09;作为机器学…

游戏行业干货分享 | 游戏行业非技术岗盘点

在游戏行业&#xff0c;除了技术开发岗位外&#xff0c;还有许多非技术岗位对游戏的成功至关重要。以下是一些游戏行业非技术岗位的盘点&#xff0c;以及它们各自的职责和对游戏项目的贡献&#xff1a; 以游戏上线为目的&#xff0c;从游戏研发到游戏发行会有如下岗位配置 这里…

【AIGC】重塑未来的科技巨轮

AIGC&#xff1a;重塑未来的科技巨轮 一、AIGC&#xff1a;从历史走来&#xff0c;向未来进发二、AIGC的三项核心技术三、AIGC的应用与未来 在当今科技飞速发展的时代&#xff0c;AI&#xff08;人工智能&#xff09;已经成为了一个无法忽视的热词。而与其紧密相连的AIGC&#…

开发日记-npm下载镜像超时,切换镜像源方式

使用npm下载组件和初始化等操作的时候可能会遇到下面的问题&#xff1a; npm ERR! Exit handler never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! <https://github.com/npm/cli/issues> npm ERR! A complete log of t…

【软考】ER图合并冲突

目录 1. 说明2. 属性冲突2.1 属性域冲突2.2 属性取值单位冲突2.3 异名同义&#xff08;一义多名&#xff09; 3. 命名冲突3.1 同名异义3.2 异名同义 4. 结构冲突5. 解决方法6. 例题6.1 例题1 1. 说明 1.2.3.4. 2. 属性冲突 2.1 属性域冲突 1.即属性值的类型、取值范围或取值…

等保测评二级有哪些标准

等级保护测评&#xff08;等保测评&#xff09;是中国的一项网络安全标准&#xff0c;旨在评估和确保关键信息基础设施的安全。二级等保测评是适用于一般级别的信息系统&#xff0c;这些系统一旦受损&#xff0c;可能会对社会秩序、公共利益和公民权利造成一定程度的影响。 二级…

【论文阅读】<YOLOP: You Only Look Once for PanopticDriving Perception>

Abstract 全视驾驶感知系统是自动驾驶的重要组成部分。一个高精度的实时感知系统可以帮助车辆在驾驶时做出合理的决策。我们提出了一个全视驾驶感知网络&#xff08;您只需寻找一次全视驾驶感知网络&#xff08;YOLOP&#xff09;&#xff09;&#xff0c;以同时执行交通目标检…

C++ 对象型参数和返回值

对象型参数和返回值 1.对象型类型作为函数的参数2.对象型参数作为函数的返回值 1.对象型类型作为函数的参数 使用对象类型作为函数的参数或者返回值&#xff0c;可能会产生一些不必要的中间对象 例子&#xff1a; // 使用对象类型作为函数的参数 void test1(Car car) {}完整代…

2024北京市人工智能大模型行业应用分析报告

来源&#xff1a;北京市科学技术委员会 方向一为基于AIGC技术的智能审计合规研究&#xff0c;由北京银行提出&#xff0c;以 提高审计工作效率和准确性为核心目标&#xff0c;需要参赛企业针对检查内容&#xff0c; 利用大模型技术寻找并给出相关现象涉及的制度名称及相关原文…