- 访问权限修饰符:常用的有public,private,protected,不写(为默认访问权限)
- 需要有方法返回值类型,没有用void
- 需要有方法名,在同一类中方法的签名不能重复(方法签名:方法名+参数列表)【单纯方法名可重复】
- 参数列表:数量,类型,顺序 --> 方法重载(方法名相同,参数列表不同,与返回值无关)【发生在编译阶段】
- 方法必须有参数列表,可以为空但不能省略
- 可以用关键字static,final等关键字修饰
一、修饰符
static(静态方法)
-
static方法中不能使用this关键字
-
static修饰的方法,通过类名直接调用,不用创建对象(对象也可以调用),方便方法的调用
-
static修饰的方法,变量,代码块都是独一份的,便于共享
-
静态方法中不能直接使用非静态方法(可以通过创建对象调用);非静态方法可以直接调用静态方法;同级别之间可以相互调用
-
static修饰代码块:无论在哪里书写,都是在main()方法中执行,多用于初始化,只加载一次
java"> //staticpublic class Person {private int age;private String name;public static String from;static { //static修饰代码块,用于初始化System.out.println("用于初始化,执行更早");}public Person(int age, String name) {System.out.println("执行时间测试");this.age = age;this.name = name;}@Overridepublic String toString() {return "Person [age=" + age + ", name=" + name + ", from=" + from + "]";}public static void main(String[] args) {Person p1=new Person(132,"qwe");Person p2=new Person(13,"qwesd");System.out.println(p1.name);System.out.println(p2.name);p1.from="china"; //static修饰的变量是独一份的,共享的,更改一处即更改全部System.out.println(Person.from);System.out.println(p1.from);System.out.println(p2.from);System.out.println(p2);System.out.println(p2);}public void objtest() {}public static void classtest() {Person p3=new Person(2,"name");p3.objtest(); //在静态方法中调用非静态方法用对象}}
二、方法参数
- 提高了方法的灵活性
- 类型:分为形参(方法定义时设置的参数)与实参(方法调用时设置的参数)
- 传递方式:值传递和引用传递【java中只有值传递】
- 值传递:方法调用时,实参通过把它的内容副本传入方法内部,此时形参接收实参的一个拷贝,会开辟新空间
- 引用传递:‘引用’指使用真实内容的地址值,不会开辟新空间
可变参数
- 指在调用方法时传入不定长度的参数,本质是基于数组实现的
- 可变参数是指长度可变,但变量种类不行
- 使用:在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值【即String...var】
- 可变参数可以不接收参数值,也可以接收多个参数值【以数组方式接收】
- 可变参数只能作为方法的最后一个参数使用->即一个方法只能拥有一个可变参数
- 可变参数在编译为字节码后,在方法签名中就是以数组形态出现的,若两个方法的签名是一致的,不支持方法的重载。
- 与数组区别:可变参数可以传入数组类型的数据或直接传入多个参数,数组类型作为参数只能传数组类型参数【还不能空传】
java"> public class Test {public static void main(String[] args) {//可变参数int[] num={1,2,3};add(num);add(1,2,3);}public static void add(int...nums) {int sum=0;for(int num:nums) {sum+=num;}System.out.println(sum);}}