JAVA---方法

7 方法

7.1基本概念

方法:类的共同行为,封装了一段逻辑代码,在封装方法时,尽可能的只完成一项功能,

         (避免将多个功能封装到一个方法内)。                
方法的位置: 在类体中与main方法是并列关系,类体中可以有多个方法。

方法的使用: 方法属于对象的行为,应该使用:引用.方法,这些方法动态绑定到对象上。

7.2 方法的定义

方法的定义:
         固定语法:
         修饰词   返回值类型  方法名(形式参数){
                            逻辑代码
         }

        修饰词
                  (1)public---公共的
                  (2)protected---受保护的
                  (3)private---私有的
                  (4)也可以不写修饰词,即默认的

           static修饰词可以与上述三个连用

       返回值类型
                (1)void---无返回值类型
                (2)java语言的任意一种类型: 可以是基本数据类型,也可以是引用数据类型             

       方法名:命名时尽量做到见名知意,驼峰命名法,首字母小写

       形式参数:用于接受调用者传入的数据,与变量的声明语法相同。

      方法签名:方法名+形参列表=方法签名
                        形参列表:指的是形参的类型顺序列表。

                        如:public void sum(int a,int b)
                               方法签名是:sum + int ,int
                               public int eat(String food)
                               方法签名是:eat+String       
 
      关键字return:
                  作用1:结束方法逻辑
                  作用2:如果返回值类型标记的是java语言类型的某一个类型名,
                              那么return关键字后必须跟着一个此类型的数据或变量。
                 当方法有返回值类型时,return关键字后的数据就是此方法要返回的数据,返回给调用者。   

扫描二维码关注公众号,回复: 2661030 查看本文章

     举例

如:
      int num = Math.random();
                方法random()返回一个数据给main方法。
        mian方法存入num变量中 
如:
   reg1:     ------------------------------------------------------------------->reg1(调用): 
     public static void sum(){                                                            main(String[] args){
          int a = 3;                                                                                            sum();
          int b = 5;                                                                                }
      System.out.println(a+b);                                                    
      [return;]----返回值类型处写void时,return可有可无。      
      }                                                                                                             
                                                                                                        

   reg2: 计算两个整数a和b的和    ------------------------------------> reg2(调用):
      public static void sum(int a,int b){                                            main(String[] args){
          int sum = a+b;                                                                         /*
      System.out.println(sum);                                                                调用者main在使用sum(int a,int b)时,
      }                                                                                                      需要给形式参数赋值,赋的值叫实际参数
                                                                                                             */

                                                                                                             int x = 1;

                                                                                                              int y = 2; 

                                                                                                              sum(x,y);

                                                                                                         }                                                                                                                

 reg3: --------------------------------------------------------------------------->reg3(调用):                                                                                            public static int sum(){                                                                             main(String[] args){
       int a = 3;                                                                                                           int n = sum();
      int b = 5;                                                                                                }
      return  a+b;                            
      }

 reg4:---------------------------------------------------------------------------->reg4(调用):
      public static int sum(int a,int b){                                                       main(String[] args){
            int sum = a+b;                                                                                  int m = 10;
        return sum*3;                                                                                       int n = 20; 
      }                                                                                                             sum(m,n)*5    可以直接使用比如:sum(m,n)*5;
                                                                                                                                           也可以放在另一个变量中:int t = sum(m,n)
                                                                                                                }

    总结:
       调用方法时:

             无返回值时: 方法名(有参就传参);          
             有返回值时:返回值类型 变量=方法名(有参就传参);  

示例:

import java.util.Arrays;
import java.util.Scanner;
public class MethodDemo01{
	public static void main(String[] args){
	     //System.out.pritln(length(5.5))  或者double area = area(4.5)  System.out.println(area);
		 //System.out.println(area(4.5))  或者double area = area(4.5)  System.out.println(area);
		  //[第二种更常用]double area = area(4.5)  System.out.println(area);
          //area_square();
		 //char[] c = randomArr(); System.out.println(Arrays.toString(a));
         int num = (int)(Math.random()*100+1);
		 guessNum(num);
	}
	/**计算半径为r的圆的周长  length*/
	public static double length(double r){
	    double l = 2*3.14*r;
		return l;
	}
	/**返回半径为r的圆的面积:area*/
	public static double area(double r){
	   double s = 3.14*r*r;
	   return s;
	}
    /**计算宽为3,高为5的方形的面积area_square*/
	public static void area_square(){
	    int a = 3;
		int b = 5;
		System.out.println(a*b);
	}
	/**返回一个字符数组,元素为随机7个小写字母randomArr*/
	public static char[] randomArr(){
	     char[] a =new char[7];
		 for (int i = 0;i<7 ;i++ ){            
		      a[i]= (char)(Math.random()*26+97);
	     }
		 return a;
	}	 
	/**
	   定义要给猜数字的方法:被猜的数字由形参决定:直到猜中为止。范围[1,100] guessNum
	*/
    public static void guessNum(int num){
		Scanner sc = new Scanner(System.in);		
		int guess = -1;
        do{
			System.out.println("输入您猜的数字:");
			guess = sc.nextInt();
			if (guess>num){
				System.out.println("猜大了");
			}
			if (guess<num){
				System.out.println("猜小了");
			}
		}while(guess!=num);
                System.out.println("猜中了游戏结束!");
			
	}
	
}

7.3 方法的重载

方法的重载(overload):
         在同一个类型中,方法名相同,参数列表不同

ps:在方法调用时,编译器会检查类的信息中是否有此方法签名的方法。
         c.sum(3,5):
         此时编译器检查类中是否有c.sum(int,int)这样的方法
         如果有编译通过,没有编译失败,并提示错误

7.4 方法的重写

方法的重写:   子类可以重新编写继承父类的方法。
                      (1)方法名相同,参数列表相同
                      (2)返回值类型可以相同,也可以是父类方法的返回值类型的子类型
                              (返回值更加精确)
                      (3)修饰词可以不变,或者可以比父类的修饰权限更大(青出于蓝而胜于蓝)

7.5 构造方法

构造方法(构造器):是特殊的方法,作用是用来给成员变量(Field,字段,属性)初始化。   
                      特殊在----->(1)没有返回值这个位置
                                         (2)方法名与类型名相同
         
                   如:点:
                    public class Point{
                           int x ;
                           int y ;

                  修饰词 类型名(){
                      ……普通方法 
                     }
    
默认无参构造器:如果定义类时,没有添加构造方法,系统会默认提供一个公有的没有形式参数的构造方法。
                             public Point(){}
                             注意:如果定义期间,提供了构造器,系统不再提供
有参构造器:因为构造器是用来给成员变量初始化的,为了方便,所以形式参数的名称都与成员变量一致。
                      因此,在赋值时,this.不能省略。  
构造器的调用:只能是new关键字来调用
                         new 构造方法(有参传参)。

            
                 对象的实例化:是由new完成的(对象此时就存在了,但是成员变量都是默认值)
                 对象的成员变量初始化:是由new调用的构造器进行的(成员变量是第一次被赋值)
                 
构造器的重载
                       一个类中可以有多个构造器。
                      方法名相同,参数列表不同(形参类型顺序不同)


补充:

main方法内:
    引用数据类型与基本数据类型的区别:
    引用数据类型的数据,称之为对象。
        存储在内存中的某一个特定区域,即:堆
    引用类型的变量也存储在内存中的特定区域,即:栈
    引用类型的变量存储的内容 不是对象,而是对象在堆空间的位置信息

    基本数据类型的数据,不叫对象。
    基本数据类型的变量,存在栈里,存储的内容是基本类型的数据。

猜你喜欢

转载自blog.csdn.net/zoe_ranxiaosu/article/details/81260287