class 类名 { 返回值类型 成员方法名(形参列表) { 成员方法体; } } //类名:每个单词大写 //方法名:第二个单词起每个单词的首字母大写。
概念:返回值主要指从方法体内返回到方法体外的数据内容。
概念:形式参数主要用于将方法体外的数据内容带入到方法体内部。
**格式:**语法格式如下:
(数据类型 形参变量名1, 数据类型 形参变量名2, …)
当带入的数据内容是"hello"时,则形参列表写 String s 即可
当带入的数据内容是66和"hello"时,则形参列表写 int i, String s 即可
若该方法不需要带入任何数据内容时,则形参列表位置啥也不写即可。
返回值类型 成员方法名(形参列表) { 成员方法体; }
//自定义成员方法实现所有成员变量的打印 void show() { //成员方法和成员变量都属于类内部的成员,因此可以直接访问成员变量不需要再加引用.的前缀 System.out.println("我是"+name+",我今年"+age); }
引用变量名.成员方法名(实参列表);
实际参数列表主要用于对形式参数列表进行初始化操作,因此参数的个数、类型以及顺序都要完全一致。
实际参数可以传递直接量、变量、表达式、方法的调用等。
public class Point { int x; //横坐标 //x,y为成员变量 int y; //纵坐标 //3.定义一个成员方法来实现成员变量的打印 void show() { System.out.println("横坐标是:"+x+",纵坐标是:"+y); } //自定义成员方法实现将姓名修改为参数指定的数值 void setName(String s) { name=s; } //自定义成员方法实现将年龄修改为参数指定的数值 void setAge(int i) { age=i; } //自定义成员方法同时实现将姓名和年龄修改为参数指定的数值 void setNameAge(String s,int i) { //()里的为形参 name=s; //s,i为局部变量 age=i; } public static void main(String[] args) { //1.声明Point类型的引用指向Point的对象 Point P=new Point(); //打印成员变量的数值 //System.out.println("横坐标是:"+P.x+",纵坐标是:"+P.y); P.show(); System.out.println("------------------------------") //2.修改数值后 P.x=3; P.y=5; //System.out.println("横坐标是:"+P.x+",纵坐标是:"+P.y); //调用方法的本质就是根据方法名跳转过去执行方法体,再跳转回来 P.show; //通过成员方法的调用实现成员变量的修改 P.setName("阿七"); P.setAge(25); P.show(); //阿七 25 //通过成员方法的调用实现成员变量的修改 //P.setNameAge("阿七",25); //()实参 int ia=25; P.setNameAge("阿"+"七",ia); P.show(); //阿七 25 } }
返回值类型 方法名(参数的类型... 参数名)
方法参数部分指定类型的参数个数是可以改变的,也就是0~n个 .
一个方法的形参列表中最多只能声明一个可变长形参,并且需要放到参数列表的末尾。
//自定义成员方法实现可变长参数的使用, 看作是一维数组即可 void showArgument(int num,String... args) { System.out.println("num="+num); for(int i=0;i<args.length;i++) { System.out.println("第"+(i+1)+"个参数是:"+arg[i]); } //通过成员方法的调用实现可变长参数的打印 p.showArgument(12); //12 p.showArgument(15,"参数1"); p.showArgument(15,"参数1","参数2"); }
public class Point { //成员变量 int x; int y; //自定义成员方法实现可变长参数的使用 void showArgument(int... args) { for (int i = 0; i < args.length; i++) { System.out.println("下标为" + i + "的元素为" + args[i]); } } public static void main(String[] args) { //声明Point类型引用指向Point类型的对象 Point p=new Point(); p.showArgument(1,2,3); } }
注意:方法和方法是平行关系
定义的位置:
局部变量在方法体内部或者( );
成员变量在方法的外部,直接写在类里
作用的范围:
局部变量只可以在方法内部使用;
成员变量整个类都可以使用;
默认值:
局部变量没有默认值,如果想要使用,需要手动赋值
成员变量如果没用赋值,是有默认值的,规则和数组一样
内存的位置:
局部变量位于栈内存;成员变量位于堆内存
生命周期:
局部变量随着方法的进栈而诞生,随着方法的出栈而消失
成员变量随着对象的创建而诞生,随着对象被垃圾回收而消失
int max(int ia, int ib) { … … … } //成员方法
int a = 5; int b=6; int res = m.max(a,b); //main方法
public class ArgumentTest { //自定义成员方法打印参数传入的整数数据 //ia=ib=10 void show1(int ia) { ia=200; System.out.println("ia的值=" + ia); //10 200 } //自定义成员方法打印参数传入的数组数据 //引用数据类型,内存中存放的是地址 void show2(int[] arr1) { arr1=new int[2]; arr1[0]=200; System.out.println("show方法中:arr1[0]的数值是"+arr1[0]); //200 } public static void main(String[] args) { //1.声明Argument类型的引用指向该类型的对象 ArgumentTest at = new ArgumentTest(); //2.使用引用变量调用成员方法 int ib = 10; at.show1(ib); System.out.println("ib的值="+ib); //10 System.out.println("------------------------------------"); //3.调用show方法进行测试 int[] arr2=new int[]{10,20}; at.show2(arr2); System.out.println("show方法中:arr2[0]的数值是"+arr2[0]); //200 10 } }
内存结构之栈区
传参的相关概念