Java知识点详解——方法和重载

成员方法:

1.带参数的方法

定义方法时创建的参数叫形式参数---形参

调用方法时传入的参数叫做实际参数---实参

public void work( String content){
System.out.println(this.name+"可爱");

}

2.不带参数的方法

public String work(){
    return "实现自身理想";

}

方法重载:

方法重载是指在一个类中定义多个同名方法,但要求每个方法具有不同的参数类型或者参数个数

方法重载的特点:

1.在同一个类中

2.方法名相同

3.参数的类型或者个数不相同

4.方法的返回值不能判断方法间是否构成重载的依据

方法重载的优点:

方法重载是对原有方法的一种升级,可以根据参数的不同,采用不同的实现方法,只需在原有基础上增加新的重载版本即可。 而且不需要编写多个名称,简化了类调用方法的代码 ,

传参--基本数据类型和引用数据类型在内存中存储的方式的不同:

public class Person {
    public  int age;
}
public class Test {
    public static void main(String[] args) {
// 基本数据类型
        int num1=11;
        int num2=num1;
        System.out.println("num1等于:"+num1);
        num2=22;
        System.out.println("把num1赋给num2后,修改num2的值,"+"num1="+num1);
        System.out.println("----------------------------------------");
//  引用数据类型
        Person person1=new Person();
        person1.age=11;
        Person person2=person1;
        System.out.println("person1.age"+person1.age);
        person2.age=22;
        System.out.println("把person1对象赋给person2对象后,修改person2的age属性,person1.age:"+person1.age);
        System.out.println("_______________________________________________");
    }
}

int 为基本数据类型,当初始化num1并且将它赋值给num2,然后修改num2的值,运行后num1的值不变

同样的操作,最后person1的值却变为了22

基本数据类型存储方式:

不同的变量会分配不同的存储空间,并且存储空间存储的是变量的值,改变一个变量不会影响到另一个变量

引用数据类型存储方式:

引用数据类型的赋值是直接将原对象的引用(可理解为内存地址)传递给另一个引用。它们指向同一个内存空间,所以当修改person2时person1的值也会改变。

引用的本质

引用数据类型的变量实际上存储的是内存地址,这个地址指向对象在内存中的实际位置。

当一个引用类型的变量被赋值给另一个同类变量时,实质上复制的是这个内存地址的拷贝。

构造方法:

构造方法的作用:

当类创建一个对象时会自动调用该类的构造方法,构造方法分为默认构造方法和带参数的构造方法

在创建对象时由编译器自动调用,并且在整个对象的生命周期内只调用一次。(出生)

构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。

构造方法的定义:

注意:

  1. 构造方法没有返回值
  2. 构造方法名字必须与类名相同
  3. 如果自定义了构造方法,那么java不会自动添加默认构造方法
  4. 如果用户没有显式定义构造方法,编译器就会默认生成一份构造方法,而且默认生成的构造方法一定是无参的

构造方法重载:

重载条件:

1.方法名重名

2.方法的形参列表不同:方法的参数类型(个数/顺序)不一样

public class Person {
    Integer num;
    Float money;
    public Person(){

    }

    public Person(Integer num, Float money) {
        this.num = num;
        this.money = money;
    }
}

构造方法重载效果:

注意:

无参构造是自动生成的一旦定义了有参数构造器,那么无参数构造器就没有了,如果还想用无参数构造器,那么此时就需要自己手写一个无参构造器。

1.调用的是无参构造

这样创建对象,无参构造器是默认的,是被默认调用的

Car c = new Car();
2.通过有参构造器初始化对象并返回
 Car c2 = new Car("保时捷",100);

方法重载:

条件:
  1. 相同的方法名:在同一个类中定义的方法必须有相同的名称。
  2. 不同的参数列表:方法的参数类型、数量或顺序至少有一项不相同。例如,一个方法可以接受两个整数参数进行相加,而另一个方法接受一个字符串和一个整数进行拼接,这两个方法就构成了重载。
  3. 方法的返回值类型并不影响重载,即使两个方法的名称和参数列表相同,但返回值类型不同,它们也不构成重载。

例子:简易计算机实现两个整数相加,三个浮点数相加

  //    两个整数相加
    public void Computer(Integer num1, Integer num2) {
        this.num1 = num1;
        this.num2 = num2;
        System.out.println(num1+"+"+num2+"="+(num1+num2));
        System.out.println("我是两个的重载函数");
    }

//    三个浮点型数字相加
    public void Computer(Double dnum1, Double dnum2, Double dnum3) {
        this.dnum1 = dnum1;
        this.dnum2 = dnum2;
        this.dnum3 = dnum3;
        System.out.println(dnum1+"+"+dnum2+"+"+dnum3+"="+(dnum1+dnum2+dnum3));
        System.out.println("我是三个浮点数相加的重载函数");
    }



 public static void main(String[] args) {
        Computer c1= new Computer();
        c1.Computer(2,3);
        Computer c2 = new Computer();
        c2.Computer(2.5,6.5,7.9);

this关键词:

this关键字时对一个对象的默认引用,指向调用这个方法的对象

注意:

  1. this()必须是构造方法中的第一条语句 ,且this不能形成环。如果是调用的是带参数的需要传指定参数

2.this();表示在一个构造方法中调用另一个构造方法,而且必须放第一行

public class Person {
    private String name;
    private int age;

    // 第一个构造函数
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 第二个构造函数
    public Person(String name) {
        // 调用第一个构造函数
        this(name, 18);
    }
}
  1. 成员变量和局部变量同名,用this调用成员变量,解决重名冲突
  2. this调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句
  3. this只能调用实例变量,实例方法和构造方法

成员变量和局部变量:

成员变量:

类中的属性就是成员变量,它定义在方法的外部

public class Dog {
    // 类的属性
    private String name;
    private int age;
}

局部变量:

局部变量就是定义在方法中的量

局部变量在使用前需要赋值,否则会编译出错

这里的age就是局部变量

    public void work( String content){
        int age=3;
        System.out.println(this.name+"可爱");

    }

成员变量和局部变量的区别:

1.作用域不同

成员变量的作用域是整个类内部,所有成员方法都可以使用。

局部变量的作用域在定义它的方法内部,在方法外不可访问它。

2.初始值不同

成员方法如果在定义时没有给它赋予初始值,java会给一个默认值,基本数据类型的为0,引用类型的值为null;但是java不会给局部变量设初始值,所以在定义时要先赋值

3.同一个方法中局部变量不可以重名,但是在不同方法中,局部变量可以重名

4.当局部变量和成员变量重名时,局部变量优先级更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值