疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
方法的所属性:
从语法的角度来看:方法必须定义在类中
方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰
调用方法时:必须有主调对象(主语,调用者)
1 public class MathTest{ 2 public static void main(String[] args){ 3 System.out.println(Math.sin(1.57)); 4 System.out.println(Math.sin(Math.PI/2)); 5 } 6 }
1 public class TestMethod { 2 String name; 3 4 //自定义带参数的构造器后,系统不会再为类提供无参构造器 5 //注意:若程序员没有构造器,系统默认会为类提供一个无参构造器 6 public TestMethod(String name){ 7 this.name = name; 8 } 9 10 public void walk(){ 11 System.out.println(this.name + "在走路"); 12 } 13 14 public void run(){ 15 //TestMethod t = new TestMethod("老A"); 16 //t.walk(); 17 //方法中看不出this代表谁,谁调用它就代表谁,这里是tt调用run的,所以this代表tt 18 this.walk(); 19 System.out.println(this.name + "在跑步"); 20 } 21 22 public static void main(String[] args) { 23 TestMethod tt = new TestMethod("老C"); 24 tt.run(); 25 } 26 }
方法值传递:
Java方法的参数传递机制:"值传递/副本传递",它并不会把方法中的值传递过去,而是通过副本的形式传递的
形参个数可变的方法:type... 形参名
1 class TestArgs { 2 public void age(int age) { 3 System.out.println("a的年龄为:" +age); 4 } 5 6 //int... 表示可以传入多个int类型的参数 7 public void test(int... ages){ 8 //在该方法中ages 相当于一个数组 9 for(int ag : ages){ 10 System.out.println("b的年龄为:" + ag); 11 } 12 } 13 14 public static void main(String[] args) { 15 //定义一个ta变量指向TestArgs实例,因为类中方法都是实例方法,所以必须创建实例才能调用 16 TestArgs ta = new TestArgs(); 17 ta.age(22); 18 System.out.println("~~~~~~~~~~~~~~~~~~~~~"); 19 ta.test(10,20,11,23,55,19,44,68); 20 } 21 }
注意:
A、每个方法最多只能有一个形参个数可变的参数public void test(int... nums,String... name)×
B、形参个数可变的参数必须位于最后
public void test(int... nums,String name) ×
public void test(String name,int... nums) √