本节重点思维导图
方法的定义
例题:1!+2!+3!+4!+…..+15!=?
public class Demo { public static void main(String[] args) { long sum = 0; for(int i =1;i<=15;i++) { sum += fun(i); } System.out.println(sum); } /** * 求参数的阶乘 * @param digit 待求阶乘的数字 * @return 阶乘结果 */ public static long fun(int digit) { long res = 1; for (int i = 1; i <= digit; i++) { res *= i; } return res; } }
main 方法是被 JVM 调用的,除此之外,main 方法和其它方法没什么区别。
main 方法的头部是不变的,如例子所示,带修饰符 public 和 static,返回 void 类型值,方法名字是 main,此外带个一个 String[] 类型参数。String[] 表明参数是字符串数组
方法的重载
public static double max(double num1, double num2) { if (num1 > num2) return num1; else return num2; } public static int max(int num1, int num2) { if (num1 > num2) return num1; else return num2; }
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;
【Java编译器根据方法签名判断哪个方法应该被调用】
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
变量的作用域
构造方法
当一个对象被创建时候,构造方法用来初始化该对象。
构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private),把所有成员初始化为0。
一旦你定义了自己的构造方法,默认构造方法就会失效。
简单构造方法:
class MyClass { int x; // 以下是构造函数 MyClass() { x = 10; } }
调用构造方法来初始化一个对象:
public class ConsDemo { public static void main(String args[]) { MyClass t1 = new MyClass(); MyClass t2 = new MyClass(); System.out.println(t1.x + " " + t2.x); } }
有参数情况下的构造方法及调用构造方法来初始化对象:
class MyClass { int x; // 以下是构造函数 MyClass(int i ) { x = i; } }
public class ConsDemo { public static void main(String args[]) { MyClass t1 = new MyClass( 10 ); MyClass t2 = new MyClass( 20 ); System.out.println(t1.x + " " + t2.x); } }
当创建对象时,系统会自动调用构造方法
- 没有自定义构造方法时,系统会调用默认构造方法
- 构造方法可以重载,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标志,类似不同人可能有相同的名字,但有不同的身份证号。
- 当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象