【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.
相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
91 9
|
4天前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
23 15
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
54 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
72 4
|
2月前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
30 1
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
144 4
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
368 2