方法与方法重载

方法和方法重载

1. 方法的概述

在面向过程出现的时候,方法就出现了。在程序中存储数据,会采用变量来存储,以方便我们复用。而方法的出现是为了存储程序中的功能代码,以方便我们复用。

2. 方法的语法和分类

[访问权限修饰符] [其他修饰符] 返回值类型 方法名(方法参数列表) {
    // 方法体
    // 功能代码...
    [return 返回值;]
}

访问权限修饰符:目前先认识public,代表公共的,意味着在项目中可以被使用。

其他修饰符:目前认识static代表静态

返回类型:一个方法,一个功能在执行完之后返回的数据类型。例如:next():int

**方法名:**为了方便下次使用,要起名。命名规范与变量名一致。

**方法参数列表:**一个方法内部要执行的功能,有些时候要进行某些数据的处理,但是要处理的数据必须由你提供给它,所以它需要提前规范号需要什么数据。例如:Arrays.toString(数组) : String

return: 结束方法,并将返回结果返回到调用者位置,调用者可以将结果存储为变量或直接输出等方式来使用。

理解为榨汁机

分类

以后学其他语言也基本是4个分类。其他语言中可能叫函数、方法。

按照语法中是否有参数、是否有返回值来进行分类。

  1. 无参无返(没有参数,没有返回值)

一般这种方法,用于实现一些简单的内容输出或执行。

public void eat() {
		System.out.printf("%s今年%d岁,身高%.1f,正在吃东西!\n", name, age, height);
	}

使用过该方法:

public void println() {
	newLine();
}
  1. 有参无返(有参数,没有返回值)

一般这种方法,用于实现一些需要根据条件或者一些基础数据,才能实现输出或执行的场景。

// Arrays工具类中的方法,可以实现对传入数组元素进行升序排序
public static void sort(int[] a) {
    
}
  1. 无参有返

一般这种方法,适用于一些功能执行完可以返回一个结果的情况。因为没有参数,往往这种缺少灵活性、扩展性。

public static double random() {
    return RandomNumberGeneratorHolder.RandomNumberGenerator.nextdouble();
}
  1. 有参有返

前期这种用的少,后期越用越多

// Arrays.toString() 将数组转换为字符串
public static String toString(int[] a) {
    return ...;
}

3. 构造方法

构造方法,顾名思义就是Java中用于对象创建/实例创建方法。

每个类都有一个默认构造方法:无参构造方法

如果你写了任意一个构造方法,默认的无参构造将不再提供。(建议每个类都自己写一个)

语法

[访问权限修饰符] 方法名([方法参数列表]) {
	
}

构造方法只有有参和无参两种,因为构造方法的作用就是为了创建该类型的对象,那也就没有必要写上返回值类型了。

构造方法的方法名必须和类名一致,意味着Student 类的构造方法就是Student();

// 创建对象
		// 调用 Student 类的构造方法
		Student student = new Student();
		
		// 传统方法
		student.name = "小明";
		student.age = 17;
		student.classId = "353";
		
		// 通过带参构造构造
		Student student2 = new Student("小红", 17, "349");
	}

4. this 关键字

在局部变量和成员变量出现重名时,局部变量优先级更高(优先使用局部变量)

就近原则。

如果真重名了,可以使用this来区分。

this关键字:单词含义:这个

代表着当前类的对象,只不过它是一种代词。(自己、他、你…)

谁在使用当前方法,那么方法内的this代表就是谁

可以使用this在当前类中,调用对象能调的东西。

  • 调用成员变量:this.属性名
  • 调用方法:this.方法名
  • 调用构造:this([参数列表])

如果短期内没能理解,先掌握它什么时候使用。例如:在构造方法中用于区分成员变量和局部变量。

5. 成员变量和局部变量的区别

定义位置:

  • 成员变量:定义在类中,方法外(一般称为属性)
  • 局部变量:定义在类中,方法内
    • 咋们最开始定义的变量都是局部变量,因为它们在main方法中
    • 方法声明上的参数列表,局部变量

初始值不同:

  • 成员变量:有初始值(默认值)、和当初数组一样。
  • 局部变量:没有初始值,不赋值不能使用

作用域不同:

  • 成员变量:在类中成员方法都可以使用
  • 局部变量:只能在定义它的方法中使用

生命周期不同:

  • 成员变量:对象变量、实例变量,它是随着对象的创建而产生,随着对象的销毁而毁灭

  • 局部变量:随着它所在的方法中出现,随着方法结束而毁灭

6. 方法重载现象

方法重载(Overload):在一个类中出现的方法名相同参数列表不同的情况被称为方法重载。与返回值类型、访问权限修饰符等无关!!!(例如:nextInt();)

如果没有方法重载的支持,方法名相同显然是不可能的。

例如:下方的四行输出语句,其实调用的不是一个方法,而是四个方法。

// println(String x) : void
System.out.println("xxx");
// println(int x) : void
System.out.println(111);
// println(double x) : void
System.out.println(12.5);
// println(char x) : void
System.out.println('x');

这样就可以不需要记忆那么多的方法,因为它们都是一样的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值