zoukankan      html  css  js  c++  java
  • 五(三)、方法

     一、方法:类应该具有的功能;比如 Math.random();Arrays.sort();....

      public void eat() {

        System.out.println("人可以吃饭");

      }

      public void talk(String lanuage) {

        System.out.println("人可以说话,使用"+lanuage+"语言。");

      }

      public String getName(){}

    1.1方法的声明:

      权限修饰符 返回值类型 方法名(形参列表){

        方法体

        };

      1.1.1 权限修饰符 private public 缺省 protected

      1.1.2 返回值类型 有返回值、没有返回值;

        ①若有返回值,在声明时需要指定返回值类型,在方法中使用return 返回指定类型的变量or常量

        ②若方法没有返回值,则方法声明时使用void来表示,通常没有返回值的方法中,就不用return返回;如果只用 只能 "return;"表示结束此方法;

      1.1.3 我们定义方法该不该有返回值?凭经验;

      1.1.4方法名 属于标识符;需要遵循标识符规范;

      1.1.5 形参列表:方法可以声明0个 1个或者多个形参;格式:数据类型1 形参1,数据类型2 形参二;

      1.1.6 方法体:方法功能的体现;

    二、再谈方法

      1.方法的重载:在同一个类中,允许存在一个以上的同名方法,只用他们的参数个数或者参数类型不同即可。“两同一不同”
    同类,同方法名;参数列表不同;参数个数不同,参数类型不同;
    重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。调用时感觉方法参数列表的不同来区分;
    举例;Arrays.sort,/binerySearch();
    判断是否是重载:跟方法的修饰符、返回值类型,形参变量名,方法体都没有关系;、
    在通过对象调用方法时,如何确定指定方法?1.方法名,2.参数列表
      2.可变个数的形参,
    a.格式:数据类型 ...变量名
    b.当调用可变个数形参方法时,传入的参数个数可以使 0个,1个,2个。。。
    c.可变个数形参方法与本类方法名相同,形参不同的方法之间构成重载;但是调用确定参数的方法
    d.可变个数形参的方法与本来方法相同,形参了下也相同的数组之间不构成重载,也就是说,二者不能共存。
    e.可变个数形参在方法的形参中,必须声明在末尾;
    f.可变个数形参在方法的形参中,最多只能声明一个可变形参;   

    public static void main(String[] args) {
            Day9Method10 day9Method10 = new Day9Method10();
            //重载
            day9Method10.getSum(1,2);//默认调用 getSum(int i, int j)若getSum(int i, int j)注释掉,则调用getSum(double i, double j)
            day9Method10.show(0, "A","B");
            day9Method10.show(0, "A");//优先调用确定参数的方法
        }
    
        public void getSum(int i, int j) {
    
        }
    
        public void getSum(double i, double j) {
    
        }
    
        public void getSum(String i, String j) {
    
        }
        
        //可变个数的形参 str参数个数可变
        public void show(int a,String ...str) {
            System.out.println("可变参数:"+str);
            for(int i=0;i<str.length;i++) {
                System.out.println(str[i]);
            }
        }
        public void show(int a,String str) {
            System.out.println(str);
            
        }

     三、关于变量的赋值

    1.如果变量是基本数据类型,此时赋值的是变量所保存的数据值;
    2.如果变量是引用数据类型,此时赋值的是所保存的数据的地址值

     
    四、方法形参的值传递机制
      1.形参:方法定义时声明的小括号里面的参数;
       实参:方法调用时,(实际传递给形参的数据)
      2.值传递机制;
              a.如果参数是基本数据类型,此时实参赋值给形参的是,实参真实存储的数据值
              b.如果参数是引用数据类型,此时实参赋值给形参的是,实参的地址值;

     1 public static void main(String[] args) {
     2         System.out.println("****************基本数据类型************************");
     3         int m = 10;
     4         int n = m;
     5         System.out.println("m = "+m+",n = "+n);//m = 10,n = 10
     6         n = 20;
     7         System.out.println("m = "+m+",n = "+n);//m = 10,n = 20
     8         
     9         System.out.println("****************引用数据类型************************"); 
    10         Order  o1 = new Order();
    11         o1.orderId = 1001;
    12         Order o2 = o1;
    13         System.out.println("o1.orderId = "+o1.orderId+",o2.OrderId = "+o2.orderId);//o1.orderId = 1001,o2.OrderId = 1001
    14         o2.orderId = 1002;
    15         System.out.println("o1.orderId = "+o1.orderId+",o2.OrderId = "+o2.orderId);//o1.orderId = 1002,o2.OrderId = 1002
    16         
    17         //交换两个变量的值
    18         Day9ValueTransfer15  day9ValueTransfer15 = new Day9ValueTransfer15();
    19         System.out.println("m = "+m+",n = "+n);
    20         day9ValueTransfer15.swap(m, n);
    21         System.out.println("m = "+m+",n = "+n);
    22         Data  data = new Data();
    23         data.m = 10;
    24         data.n = data.m;
    25         data.n = 20;
    26         System.out.println("m = "+data.m+",n = "+data.n);
    27         day9ValueTransfer15.swap1(data);
    28         System.out.println("m = "+data.m+",n = "+data.n);
    29     }
    30     
    31     //交换两个变量的值
    32     public void swap(int m,int n) {
    33         int temp = m;
    34         m = n;
    35         n = temp;
    36     }
    37     
    38     //交换两个变量的值
    39         public void swap1(Data data) {
    40             int temp = data.m;
    41             data.m = data.n;
    42             data.n = temp;
    43         }
    44 }
    45 class Order{
    46     int  orderId;
    47     
    48 }
    49 
    50 class Data{
    51     int m;
    52     int n;
    53 }

    基本数据类型,存的是数据值,所以n = m,改变n的值,不会影响m的值

    引用数据类型,传递的是地址值,所以”******************引用数据类型*************“,更改orderId会影响两对象相应的值;

    具体请查看内存解析的详解:堆内存 和 栈内存的简单理解

  • 相关阅读:
    0509操作系统
    0508数据结构
    计算机组成原理
    0510数据库--基础知识
    0508操作系统
    0507数据结构
    0506操作系统和数据结构
    机试题201702x--不定长数组的输入
    机试题201805--输入n个字符串,将其反转输出
    SSH框架--Hibernate配置
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13304565.html
Copyright © 2011-2022 走看看