【JAVA学习之路 | 基础篇】面相对象基础(方法篇)

简介: 【JAVA学习之路 | 基础篇】面相对象基础(方法篇)

1.方法的重载(overload)

(1).概念 : 在同一个类中,允许存在一个以上的同名方法,只要他们的参数列表不同即可.


(2).重载的特点 : 与修饰符,返回值类型无关,只看参数列表,且参数列表必须不同(可以是参数个数不同或参数类型不同).调用时,根据方法参数列表不同来区别.


(3).重载方法调用 : JVM通过方法的参数列表,调用匹配的方法.

  • 先找个数,类型最匹配的.
  • 再找个数和类型可以兼容的,如果多个方法同时兼容将
public class Text01 {
    public static void main(String[] args) {
        OverLoad p1 = new OverLoad();
        int a1 = p1.m0L(3);
        System.out.println("方法1的结果是" + a1);
        int a2 = p1.m0L(2, 4);
        System.out.println("方法2的结果是" + a2);
        p1.m0L("输出方法三");
    }
}
class OverLoad {
    public int m0L(int a) {
        return a * a;
    }
    //该处编译错报错,方法名相同,参数列表相同,由于与返回值类型无关,不是重载
    //public void m0L(int a) {
        //;
    //}
    public int m0L(int a, int b) {
        return a * b;
    }
    public void m0L(String a) {
        System.out.println(a);
    }
}

2.可变个数形参的方法

(1)使用场景 : 在调用方法时,可能会出现方法形参的类型是确定的,但参数的个数不确定.此时我们可以使用可变个数形参的方法.

(2)格式 : (参数类型 ...参数名)

(3)说明注释 :

  1. 可变个数形参的方法在调用时,传进去的实参个数可以是0个,1个或多个.
  2. 可变个数形参的方法与在同一个类中,同名的方法构成重载.
  3. 特例 : 可变个数形参的方法在同一个类中方法名相同,且与可变个数形参的类型相同的数组参数不构成重载.(int... a被当做int[] a处理,遍历时可以使用a.length属性)
  4. 形参列表最后可变个数的形参必须声明在形参列表最后.
  5. 可变个数的形参最多在一个方法的形参列表中出现一次.
public class Text03 {
    public static void main(String[] args) {
        TexT p1 = new TexT();
        //可变参数的方法,括号内可以为0个
//        p1.text();
//        p1.text(1, 2);
        p1.text(1, 2, 3, 4, 6);
    }
}
class TexT {
    public void text(int... a) {
        System.out.println("111");
        //对传入的实参进行遍历
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
    //参数列表不同,可以构成重载
    public void text(double b) {
        System.out.println("222");
    }
    //编译器报错,不能构成重载
//    public void text(int[] a) {
//        System.out.println("333");
//    }
    //该是允许的,可变个数形参在后
//    public void text(int i, int... a) {
//        System.out.println("444");
//    }
    //编译器报错
//    public void text(int...a, int i) {
//        System.out.println("444");
//    }
    //编译器报错
//    public void text(int... a, double... b) {
//        System.out.println("555");
//    }
}
 
 
111
1
2
3
4
6

3.方法的值传递机制

(1).形参和实参

  • 形参 : 在定义方法时,方法名括号内声明的变量称为形式参数,简称形参.
  • 实参 : 在调用方法时,方法名括号中使用的值/变量/表达式称为实际参数,简称实参.


(2).参数传递机制 : 值传递

  1. java里参数的传递方式只有一种:值传递.则将实际参数的副本传入方法内,而参数本身不受影响.
  2. 形参如果是基本数据类型,将实参基本数据类型变量的"数据值"传递给形参.
  3. 形参如果是引用数据类型,将实参基本数据类型变量的"地址值"传递给形参.


(3).举例   该处swap方法是个交换方法

  • int a =10,int b =10,swap(x,y),实现:x=a,y =b,当调用swap时产生一个栈桢,存储的是数据10(x)和数据10(y).
  • 该处Employee是一个员工类,Employee a,Employee b,swap(x,y).实现Employee x =a,Employee b =y.由于是值传递,(否定了引用传递).x其实是a的一个副本,y是b的一个副本,调用swap时产生一个栈桢,存储的是指向a,b对象的地址值.调用方法后,二者引用并没有发生改变.最终导致x指向了对象b,y指向了对象a.
相关文章
|
3天前
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
40 25
|
3天前
|
存储 算法 安全
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
Java对象创建和访问
|
11天前
|
运维 Java 程序员
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
11天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
34 5
|
1月前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
116 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
1月前
|
Java API
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
|
1月前
|
存储 Java
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
|
2月前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
2月前
|
安全 Java
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
55 17

热门文章

最新文章