1.类中的方法
类中的方法描述事物的功能行为
1.实例方法
格式:访问限制修饰符 方法的返回值类型 方法名称(参数列表){方法体}
1.访问限制修饰符---public 缺省的【没有写】
2.方法的返回值类型---就是方法的执行结果类型
2.1.有返回值时,方法的返回值类型一定是方法执行结果的具体类型
方法的返回值类型可以是基本类型,也可以是复合类型
方法体中的最后一句话一定是return xxxx;
2.2.没有有返回值时,方法的返回值类型使用void代替
3.方法名称---合法的标识符【首字母大小,从第二个单词开始首字母大写】
4.(参数列表)---用来接收方法之外的数据进入笨方法参与运算【找帮手】
5.方法体----编写具体实现过程的方法。
package com.method.cla; /** * 介绍实例方法 * @author air * */ //没有返回值,没有参数的是实例方法 public class ShiLi { public void method1(){ System.out.println("public修饰的没有返回值,没有参数的是实例方法"); } //访问限制修饰符还可以是缺省的【没有写】方法的返回值类型是基本类型 //方法体中的最后一句话一定是return xxxx; int getInt(int num){ System.out.println("缺省的返回值为int,有一个int型参数的实例方法"); return 100+num; } public int getDouble(int num1,double num2){ System.out.println("public修饰的有返回值,有一个int型和一个double参数的是实例方法"); return (int)(num1+num2); } public char[] getChar(int size){ System.out.println("public修饰的有返回值为数组的有一个参数的实例方法"); char chararry[]=new char[size]; return chararry; } }
2.静态方法类【类方法】
使用static关键字修饰的实例方法就是静态方法【类方法】
格式:
访问限制修饰符 static 方法返回值类型 方法名称(参数列表){方法体}
package com.method.cla; /** * 介绍静态方法 * * @author air * */ public class JingTai { public static void method1(){ System.out.println("public修饰没有返回值,没有参数的实例方法"); } static int getInt(int num){ System.out.println("缺省的返回值为int型,有一个int型参数的实例方法"); return 100+num; } public static int getDouble(int num1,double num2){ System.out.println("public修饰的返回值为int型,有一个int型参数和double型参数的实例方法"); return (int)(num1+num2); } public static char[] getChar(int size) { System.out.println("public修饰的有返回值为数组的有一个int参数的实例方法"); char chararry[] = new char[size]; return chararry; } }
实例方法与静态方法【类方法】的区别
1.实例方法没有static,静态方法有static。
2.实例方法只能对象访问,静态方法可以对象访问,也可以类名访问
3.实例方法只能在方法调用时分配运行空间,静态方法在方法调用前已经分配好运行空间
3.构造方法
构造方法的作用就是创建对象
我们创建好一个Java类后,类体中就存在一个默认的无参数的构造方法。只是没有显示出来
格式:
访问修饰符 类名(参数列表){方法体}
当类中出现有参数的构造方法时,默认无参数的构造方法就会被覆盖,如果我们需要使用无
参数的构造方法时,就需要手动写出无参数的构造方法
2.方法重载
在同一个类中,方法名称相同,参数不同这种现象叫方法重载。
注意:方法重载与方法的返回值类型无关,与方法的参数有关
方法的名称相同,方法的参数个数、参数类型
package com.method.cla; /** * 介绍方法重载 * 在同一个类中,方法名称相同,参数不同的这种现象就是方法重载 * 注意:方法重载与方法的返回值可惜无关,与方法的参数有关 * 方法的名称相同 方法的参数个数 参数类型 * @author air * */ public class FangFaChongZai { //构造方法重载 public FangFaChongZai(){} public FangFaChongZai(String name){} public FangFaChongZai(int name){} //实例方法重载 public void method1(){}; public int method1(int num){return 100;} public char method1(int num,char ch){return 'A';} public char method1(char ch,int num){return'A';} //静态方法重载 public static void staticmethod1(){} public static int staticmethod1(int num){return 100;} public static char staticmethod1(int num,char ch){return 'A';} public static char staticmethod1(char ch,int num){return'A';} }
3.同一个类中方法与变量的调用
类中包含两个基本元素---变量和方法
1.方法里面调用变量
构造方法可以调用实例变量,默认this.实例变量,可以省略this
构造方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变
量,可以省略类名/this
构造方法中可以调用局部变量,局部变量名称访问
实例方法中可以调用实例变量,默认this.实例变量,可以省略this
实例方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可
以省略类名/this
实例方法中可以调用局部变量,局部变量名称访问
静态方法中不可以调用实例变量
静态方法中可以调用静态成员变量,默认类名.静态成员变量,可以省略类名
静态方法中不能出现this
静态方法中可以调用局部变量,局部变量名称访问
例如:
package com.wanxging.test1; /** * 同一个类中方法里面调用变量 java程序=对象+消息 */ public class FangFaGetBianLiang { // 实例变量 public int number = 1001; // 静态成员变量 public static String name = "zhangsan"; // 构造方法中访问变量 public FangFaGetBianLiang() { /* * // 局部变量 String address = "西安"; // 构造方法中可以调用实例变量,默认this.实例变量,可以省略this * System.out.println("实例变量-number=" + this.number); * System.out.println("实例变量-number=" + number); // * 构造方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this * System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name); * System.out.println("静态成员变量-name=" + this.name); * System.out.println("静态成员变量-name=" + name); // 构造方法中可以调用局部变量,局部变量名称访问 * // System.out.println("局部变量-address="+FangFaGetBianLiang.address); // * System.out.println("局部变量-address="+this.address); * System.out.println("局部变量-address=" + address); */ } // 实例方法中访问变量 public void testMethod() { /* // 局部变量 String address = "西安"; // 实例方法中可以调用实例变量,默认this.实例变量,可以省略this System.out.println("实例变量-number=" + this.number); System.out.println("实例变量-number=" + number); // 实例方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name); System.out.println("静态成员变量-name=" + this.name); System.out.println("静态成员变量-name=" + name); // 实例方法中可以调用局部变量,局部变量名称访问 // System.out.println("局部变量-address="+FangFaGetBianLiang.address); // System.out.println("局部变量-address="+this.address); System.out.println("局部变量-address=" + address); */ } // 静态方法方法中访问变量 public static void testStatic() { // 局部变量 String address = "西安"; // 静态方法方法中不可以调用实例变量 //System.out.println("实例变量-number=" + this.number); //System.out.println("实例变量-number=" + number); // 静态方法中可以调用静态成员变量,默认类名.静态成员变量,可以省略类名 System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name); // 静态方法中不能出现this //System.out.println("静态成员变量-name=" + this.name); System.out.println("静态成员变量-name=" + name); // 静态方法中可以调用局部变量,局部变量名称访问 // System.out.println("局部变量-address="+FangFaGetBianLiang.address); // System.out.println("局部变量-address="+this.address); System.out.println("局部变量-address=" + address); } }
2.方法里面调用方法
构造方法中可以访问其他的构造方法
构造方法中可以访问实例方法,默认this.实例方法,可以省略this
构造方法中可以访问静态方法,默认类名.静态方法,也可以this.静态方法,可以省略类名/this
实例方法中可以访问构造方法,new+构造方法
实例方法中可以访问其他的实例方法,默认this.实例方法,可以省略this
实例方法中可以访问静态方法,默认类名.静态方法,可以this.静态方法,可以省略类名/this
静态方法中可以访问构造方法,new+构造方法();
静态方法中不能访问实例方法
静态方法中不能出现this
静态方法中能访问其他的静态方法,默认类名.静态方法,可以省略类名
例如:
package com.method.cla; /** * 同一个类中方法调用方法 * @author air * */ public class FangFaGetFangFa { //构造方法访问其他方法 public FangFaGetFangFa(){ /* System.out.println("无参数的构造方法"); //构造方法访问其它构造方法 new+构造方法 new FangFaGetFangFa("Hello"); //构造方法访问实例方法 默认this.实例方法,可以省略this this.testMethod(); testMethod(); //构造方法访问静态方法。默认类名.静态方法,可以this.静态方法,也可以省略类名/this FangFaGetFangFa.staticMethod(); this.staticMethod(); staticMethod(); */ } public FangFaGetFangFa(String name){ System.out.println("有参数的构造方法-参数name="+name); } //实例方法访问其他方法 public void testMethod(){ /* //实例方法访问其它构造方法 new+构造方法 new FangFaGetFangFa("Hello"); //实例方法访问实例方法 默认this.实例方法,可以省略this this.testMethod(); testMethod(); //实例方法访问静态方法。默认类名.静态方法,可以this.静态方法,也可以省略类名/this FangFaGetFangFa.testMethod2(); this.testMethod2(); testMethod2(); */ } public void testMethod2(){ System.out.println("实例方法"); } //静态方法访问其他方法 public static void staticMethod(){ //静态方法访问其它构造方法 new+构造方法 new FangFaGetFangFa("Hello"); //静态方法不能访问实例方法 默认this.实例方法,可以省略this //this.staticMethod2; //不能访问 //testMethod(); //不能访问 //静态方法访问静态方法。默认类名.静态方法,可以this.静态方法,也可以省略类名/this //不能出现this //this.staticMethod2(); FangFaGetFangFa.staticMethod2(); staticMethod2(); } public static void staticMethod2(){ System.out.println("静态方法"); } }
总结:静态方法中不能访问实例元素【实例变量/实例方法】
静态方法中不能出现this
为什么静态方法中不能访问实例元素?
原因是静态方法的内存分配时机早于实例元素的内存分配时机。