Java类中的方法

1.类中的方法

        类中的方法--描述事物的功能行为

1.实例方法

        格式:访问限制修饰符   方法的返回值类型  方法名称(参数列表){方法体}

        1.访问限制修饰符---public 缺省的【没有写】

        2.方法的返回值类型--就是方法执行的结果类型

                (1)有返回值时,方法的返回值类型一定是方法执行结果的具体类型,方法的返回值类型可以使基本类型,复合类型,方法体重的最后一句话一定是return XXX;

                (2)没有返回值,方法的返回值类型用void代替。

        3.方法名称---合法的表示符【首字母小写,从第二个单词开始首字母大写】

        4.(参数列表)---用来接收方法之外的数据进入笨方法参与运算【找帮手】,参数实际上是变量,没有初始值,属于局部变量【数据类型 变量名称】,可以没有,也可以有,也可以有多个,多个参数之间用“,”隔开

        5.方法体---编写具体实现过程的地方。

例如:

package MethodTest;

public class ShiLiFangFa {
	//实例方法
	//有参数有返回值的方法
	public int method1(int num){
		System.out.println("有参数有返回值的方法");
		return 18+num;
		//return "String"+num错误的,返回值类型一定是方法执行结果的具体类型
		
	}
	//访问限制符是还可以是缺省的【没有写】
	//缺省的没参数没返回值的方法
	 void method2(){
		System.out.println("没有参数没有返回值的方法");
		//return 100;
	 }
	 //有多个参数有返回值的方法
	public int method3(int num1,long num2){
		System.out.println("返回值为int型的有两个参数的实例方法");
		return (int)(num1+num2);
		
	}
	public char[] method4(int size){
		System.out.println("返回值为字符数组的有一个参数的实例方法");
		char chararray[]=new char[size];
		return chararray;
	}
	
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		ShiLiFangFa test1=new ShiLiFangFa();
        //实例对象只能用对象调用
		test1.method3(2,5);
		test1.method2();
		test1.method3(2,5);
		test1.method4(1);
	}
}

 2. 静态方法【类方法】

        使用static关键字修饰的方法就是静态方法【类方法】

        格式:访问限制修饰符 static 方法的返回值类型  方法名称(参数列表){方法体}

例如:

package MethodTest;

public class JingTaiFangFa {
	public static void method1(){
		System.out.println("没有参数,没有返回值的静态方法");
	}
	public static int method2(){
		System.out.println("没有参数,返回值为int型的静态方法");
		return 18;
	}
	 static int method3(int num1){
		 System.out.println("缺省的有一个参数为int型,返回值为int型的静态方法");
		 return 187;
	 }
	 public static int method4(int num2,double num3){
		 System.out.println("有两个参数,返回值为int型的静态方法");
		 return (int)(num2+num3);
	 }
	 public static char[] method5(int num4){
		 System.out.print("有一个参数,返回值为字符数组的静态方法");
		 char chararray[]=new char[num4];
		 return chararray;
	 }
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		JingTaiFangFa test1=new JingTaiFangFa();
		//静态方法【类方法】可以用类名访问,也可以用对象访问
		JingTaiFangFa.method1();
		test1.method2();
		test1.method3(1);
		test1.method4(10,12.5);
		test1.method5(2);
		
	}
	
}

 

实例方法与静态方法【类方法】的区别?

        1.实例方法没有static,静态方法【类方法】有static

        2.实例方法只能对象访问,静态方法【类方法】 可以对象访问,也可以类名访问

        3.实例方法只在方法调用时分配运行空间,静态方法【类方法】在方法调用前已经分配好运行空间。

3.构造方法

        构造方法的作用就是为了创建对象

        我们创建好一个java类之后,默认类体中就有一个默认的五参数构造方法存在。只是没有显示出来

        格式:访问限制修饰符  类名(参数列表){方法体}

        放类中出现的有参数的构造方法时,默认无参数的构造方法会被覆盖,此时我们如果需要无参数的构造方法时,就需要手动给出无参数构造方法。

例如:

package MethodTest;

public class GouZaoFangFa {
	//默认的构造方法
	public GouZaoFangFa(){
		System.out.println("没有参数的构造方法");
	}
	public GouZaoFangFa(int num){
		System.out.println("有参数的的构造方法");
	}
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		
		GouZaoFangFa test1=new GouZaoFangFa();
		
	}
	
}

2.方法重载

        在同一个类中,方法的名称相同,参数不同这种现象叫方法重载。

        注意:方法重载与方法的返回值类型没有关系,与方法的参数有关

        方法的名称相同,方法的参数个数,参数类型

例如: 

package MethodTest;

public class FangFaChongZai {
	//构造方法重载
	public FangFaChongZai(){}
	public FangFaChongZai(String name){}
	public FangFaChongZai(int num){}
	//实例方法重载
	public void method(){}
	public int mtehod(){return 18;}
	public char method(int num,char name){return 'A';}
	public char method(char name,int num){return 'A';}
	//静态方法重载
	public static void method1(){}
	public static int mtehod1(){return 18;}
	public static char method1(int num,char name){return 'A';}
	public static char method1(char name,int num){return 'A';}
}

3.同一个类中方法与变量的调用关系

        类中可以包含两个基本元素---变量和方法

        1.方法里面调用变量

                构造方法中可以调用实例变量,默认this.实例变量,可以省略this

                构造方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.成员变量,可以省略类名/this

                构造方法中可以调用局部变量,局部标量名称访问

例如:

package MethodTest;

public class FangFaGetBianLiang {
	//实例变量
	public int num=100;
	//静态成员变量
	public static String name="张三";
	//构造方法中访问变量
	public void FangFaGetBianLiang(){
		 int num2=300;
		//构造方法中可以调用实例变量 默认this.实例变量,可以省略this
		 System.out.println("实例变量-num=="+num);
		 System.out.println("实例变量-num=="+this.num);
		//构造方法中可以调用静态成员变量 默认 类名.静态成员变量 也可以this.静态成员变量,可以省略类名/this
		 System.out.println("静态成员变量-name=="+name);
		 System.out.println("静态成员变量-name=="+this.name);
		 System.out.println("静态成员变量-name=="+FangFaGetBianLiang.name);
		 //构造方法中可以调用局部变量,局部名称变量访问
		 System.out.println("局部变量-num2="+num2);
		 //System.out.println("局部变量-num2="+this.num2);
		 //System.out.println("局部变量-num2="+FangFaGetBianLiang.num2);
	}
	
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		FangFaGetBianLiang test1=new FangFaGetBianLiang();
		test1.FangFaGetBianLiang();
	}
	
}

 

                实例方法中可以调用实例变量,默认this.实例变量,可以省略this

                实例方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this

                实例方法中可以调用局部变量,局部变量名称访问

例如:

package MethodTest;

public class FangFaGetBianLiang {
	//实例变量
	public int num=100;
	//静态成员变量
	public static String name="张三";
	//实例方法中访问变量
	public void Method1(){
		int num2=300;
		//实例方法中可以调用实例变量 默认this.实例变量,可以省略this
		 System.out.println("实例变量-num=="+num);
		 System.out.println("实例变量-num=="+this.num);
		//实例方法中可以调用静态成员变量 默认 类名.静态成员变量 也可以this.静态成员变量,可以省略类名/this
		 System.out.println("静态成员变量-name=="+name);
		 System.out.println("静态成员变量-name=="+this.name);
		 System.out.println("静态成员变量-name=="+FangFaGetBianLiang.name);
		 //实例方法中可以调用局部变量,局部名称变量访问
		 System.out.println("局部变量-num2="+num2);
		 //System.out.println("局部变量-num2="+this.num2);
		 //System.out.println("局部变量-num2="+FangFaGetBianLiang.num2);
	}
	
	
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		FangFaGetBianLiang test1=new FangFaGetBianLiang();
		test1.Method1();
	}
	
}

                静态方法中不可以调用实例变量

                静态方法中可以调用静态成员变量,默认类名.静态成员变量,可以省略类名

                静态方法中不能出现this

                静态方法中可以调用后局部变量,局部变量名称访问

例如:

package MethodTest;

public class FangFaGetBianLiang {
	//实例变量
	public int num=100;
	//静态成员变量
	public static String name="张三";
	//静态方法访问变量
	public static void Method2(){
		int num2=300;
		//静态方法中不可以调用实例变量,且
		 //System.out.println("实例变量-num=="+num);//错误
		 //System.out.println("实例变量-num=="+this.num);//错误
		//静态方法中可以调用静态成员变量 默认 类名.静态成员变量 ,可以省略类名
		 System.out.println("静态成员变量-name=="+name);
		 //System.out.println("静态成员变量-name=="+this.name);//错误
		 System.out.println("静态成员变量-name=="+FangFaGetBianLiang.name);
		 //静态方法中可以调用局部变量,局部名称变量访问
		 System.out.println("局部变量-num2="+num2);
		 //System.out.println("局部变量-num2="+this.num2);
		 //System.out.println("局部变量-num2="+FangFaGetBianLiang.num2);
	}
	
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		FangFaGetBianLiang test1=new FangFaGetBianLiang();
		test1.Method2();
	}
	
}

         2.方法里面调用方法

                构造方法中可以访问其他的构造方法

                构造方法中可以访问实例方法,默认this.实例方法,也可以省略this

                构造方法中可以访问静态方法,默认类名.静态方法,也可以this.静态方法,可以省略类名/this

                实例方法中可以访问构造方法,new+构造方法();

                实例方法中可以访问其他的实例方法,默认this.实例方法,可以省略this

                实例方法中可以访问静态方法,默认类名.静态方法,也可以this.静态方法,可以省略类名/this

                静态方法中可以访问构造方法,new+构造方法();

                静态方法中不能访问实例方法

                静态方法中不能出现this

                静态方法中能访问其他的静态方法,默认类名.静态方法,可以省略类名

例如:

package MethodTest;

public class FangFaGetFangFa {
	public FangFaGetFangFa(){
		System.out.println("无参数构造方法");
		//构造方法访问其他构造方法
		new FangFaGetFangFa("张三");
		//构造方法访问实例方法
		this.Method1();
		Method1();
		//构造方法访问静态方法
		FangFaGetFangFa.Method2();
		this.Method2();
		Method2();
	}
	public FangFaGetFangFa(String name){
		System.out.println("有参数的构造方法-参数name="+name);
	}
	public void shiliMethod1(){
		//实例方法访问构造方法
		new FangFaGetFangFa("李四");
		//实例方法访问其他实例方法
		this.Method1();
		Method1();
		//实例方法访问静态方法
		FangFaGetFangFa.Method2();
		this.Method2();
		Method2();
	}
	//实例方法
	public void Method1(){
		System.out.println("实例方法");
	}
	public static void staticMethod2(){
		//静态方法访问构造方法
		new FangFaGetFangFa("王五");
		//静态方法不能访问实例方法,不能出现this
		//this.Method1();//错误
		//Method1();//错误
		//静态方法访问其他静态方法
		FangFaGetFangFa.Method2();
        //this.Method2();//错误
		Method2();
		
	}
	//静态方法
	public static void Method2(){
		System.out.println("静态方法");
	}
}

测试类

package MethodTest;

public class TestMain {
	public static void main(String args[]){
		FangFaGetFangFa test1=new FangFaGetFangFa();
		test1.shiliMethod1();
		FangFaGetFangFa.staticMethod2();
	}
	
}

 总结:静态方法中不能访问实例元素【实例变量/实例方法】,静态方法中不能出现this

为什么静态方法中不能访问实例元素?

                原因是静态方法的内存分配时机早于实例元素的内存分配时机。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值