【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.
相关文章
|
1天前
|
安全 Java Apache
十个方法破解Java生成随机密码的小窍门
十个方法破解Java生成随机密码的小窍门
5 0
|
1天前
|
XML JSON Java
老程序员分享:JAVA对象转换JSON
老程序员分享:JAVA对象转换JSON
|
1天前
|
监控 算法 Java
掌握Java内存管理:对象生命周期与垃圾回收机制
本文旨在为读者提供一次深入的探索之旅,穿越Java虚拟机(JVM)的迷宫,揭示对象从诞生到消亡的奥秘。我们将一起揭开内存分配、存活判定以及回收策略等概念背后的神秘面纱,通过案例分析与实践技巧,让读者能够更加高效地运用Java语言,优化程序性能。
|
1天前
|
存储 Java
一篇文章讲明白JAVA类与对象(六)
一篇文章讲明白JAVA类与对象(六)
|
1天前
|
算法 Java
Java中Collections.shuffle方法总结
Java中Collections.shuffle方法总结
|
1天前
|
消息中间件 负载均衡 Java
学习Java中的反应式编程
学习Java中的反应式编程
|
1天前
|
Java
java交换两个数字三种方法
java交换两个数字三种方法
6 0
|
2天前
|
存储 JSON 缓存
Java中的对象序列化与反序列化:实现与应用
Java中的对象序列化与反序列化:实现与应用
|
2天前
|
Java 机器人 程序员
深入理解Java中的类与对象:封装、继承与多态
深入理解Java中的类与对象:封装、继承与多态
|
2天前
|
缓存 监控 Java
Java中的内存泄漏及其排查方法
Java中的内存泄漏及其排查方法