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

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

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