亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

方法參數的值調用+引用調用

2019-11-14 15:18:30
字體:
來源:轉載
供稿:網友

##【0】README

0.1)本文描述+源代碼均 轉自 core java volume 1, 旨在理清值調用+引用調用;


##【1】參數傳遞給方法的專業術語:

1.1)值調用:它表示方法接收的是調用者提供的值;

1.2)引用調用:它表示方法接收的是調用者提供的變量地址;

##【2】看個荔枝:

2.1)設一個方法視圖將一個參數值增大3倍:

public static void tripleValue(double x){    x = 3 * x;}

2.2)然后調用這個方法:

double percent = 10; tripleValue(percent);

這里寫圖片描述

2.3)無論如何,調用這個方法后,percent的值還是10,下面看一下具體執行過程:

  • step1) x 被初始化percent值的一個copy;
  • step2) x 被乘以 3 后等于 30, 但是 percent 仍然是 10;
  • step3) 這個方法結束后, 參數變量x 不在使用;這里寫圖片描述
    ##【3】方法參數共有兩種類型:
  • type1) 基本數據類型(數字、布爾值);
  • type2) 對象引用;

3.1)可以看到, 一個方法不可能修改一個基本數據類型的參數;

3.2)對象引用作為參數就不同了,可以很容易地利用下面的方法實現將一個雇員的薪水提高兩倍:

package com.corejava;public class EmployeeTest {    public static void main(String[] args)     {        Employee e = new Employee(10);         Employee.tripleSalary(e);        System.out.PRintln("salary = " + e.getSalary());    }}class Employee{    private double salary;    public Employee(double salary)    {        this.salary = salary;    }    public static void tripleSalary(Employee e)    {        e.raiseSalary(200);    }    public void raiseSalary(double x)    {        this.salary = this.salary * x / 100;    }    public double getSalary() {        return salary;    }    }打印結果為: salary=20.0

3.3)上述程序的具體調用過程為:

  • step1) x 被初始化為 harry值的拷貝, 這里是一個對象的引用;
  • step2) raiseSalary方法應用于這個對象引用, x 和 harry 同時引用的那個 Employee對象的薪水提高了200%;
  • step3) 方法結束后,參數變量x 不再使用, 當然,對象變量harry繼續使用那個薪水漲了 200%的對象;這里寫圖片描述3.4) 讀者已經看到,實現一個改變對象參數狀態的方法并不是難事, 方法得到的是對象引用的copy, 對象引用和其它的copy同時引用同一個對象;
    ##【4】再看個荔枝:```javapackage com.corejava;

public class EmployeeTestOne { public static void main(String[] args) { EmployeeOne a = new EmployeeOne("Alice"); EmployeeOne b = new EmployeeOne("Bob"); System.out.println("before:" + a.getName() + b.getName()); EmployeeOne.swap(a,b); System.out.println("after:" + a.getName() + b.getName()); }}class EmployeeOne{ private String name;

public EmployeeOne(String name){    this.name = name;}public static void swap(EmployeeOne x, EmployeeOne y){    EmployeeOne temp = x;    x = y;    y = temp;}public String getName() {    return name;}

}打印結果為:before:AliceBobafter:AliceBob

<font size=4> **4.1)**顯然, 方法并沒有改變存儲在變量 a 和 b 中的 對象引用;swap 方法的參數x 和 y 被初始化為兩個對象引用的copy, 這個方法交換的是 兩個拷貝;在方法結束時參數變量x 和 y 被丟棄了, 原來的變量 a 和 b仍然引用這個方法調用之前所引用的對象;![這里寫圖片描述](http://img.blog.csdn.net/20151026094748165)<font size=4>**4.2)這個過程說明:** java程序設計語言對對象采用的不是引用調用, 實際上,對象引用進行的是 值傳遞;##**【5】下面總結下 java 中方法參數的使用情況:*** <font size=3>**5.1)**一個方法不能修改一個基本數據類型的參數(數值型和布爾型);* <font size=3>**5.2)**一個方法可以改變一個對象參數的狀態;* <font size=3>**5.3)**一個方法不能讓對象參數引用一個新的對象;<hr/>##**【6】最后一個綜合性荔枝:**```java/** * This program demonstrates parameter passing in Java. * @version 1.00 2000-01-27 * @author Cay Horstmann */public class ParamTest{   public static void main(String[] args)   {      /*       * Test 1: Methods can't modify numeric parameters       */      System.out.println("Testing tripleValue:");      double percent = 10;      System.out.println("Before: percent=" + percent);      tripleValue(percent);      System.out.println("After: percent=" + percent);      /*       * Test 2: Methods can change the state of object parameters       */      System.out.println("/nTesting tripleSalary:");      Employee harry = new Employee("Harry", 50000);      System.out.println("Before: salary=" + harry.getSalary());      tripleSalary(harry);      System.out.println("After: salary=" + harry.getSalary());      /*       * Test 3: Methods can't attach new objects to object parameters       */      System.out.println("/nTesting swap:");      Employee a = new Employee("Alice", 70000);      Employee b = new Employee("Bob", 60000);      System.out.println("Before: a=" + a.getName());      System.out.println("Before: b=" + b.getName());      swap(a, b);      System.out.println("After: a=" + a.getName());      System.out.println("After: b=" + b.getName());   }   public static void tripleValue(double x) // doesn't work   {      x = 3 * x;      System.out.println("End of method: x=" + x);   }   public static void tripleSalary(Employee x) // works   {      x.raiseSalary(200);      System.out.println("End of method: salary=" + x.getSalary());   }   public static void swap(Employee x, Employee y)   {      Employee temp = x;      x = y;      y = temp;      System.out.println("End of method: x=" + x.getName());      System.out.println("End of method: y=" + y.getName());   }}class Employee // simplified Employee class{   private String name;   private double salary;   public Employee(String n, double s)   {      name = n;      salary = s;   }   public String getName()   {      return name;   }   public double getSalary()   {      return salary;   }   public void raiseSalary(double byPercent)   {      double raise = salary * byPercent / 100;      salary += raise;   }}

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频导航| 色综合91久久精品中文字幕| 91极品视频在线| 亚洲性视频网址| 国产亚洲福利一区| 国产又爽又黄的激情精品视频| 欧美日韩国产精品一区二区不卡中文| 97在线视频免费观看| 成人黄色中文字幕| 狠狠干狠狠久久| 亚洲国语精品自产拍在线观看| 2019日本中文字幕| 中文亚洲视频在线| 国产精品尤物福利片在线观看| 欧美大荫蒂xxx| 欧美老女人性生活| 91久久国产精品| 日韩精品中文在线观看| 少妇高潮久久久久久潘金莲| 在线视频中文亚洲| 91chinesevideo永久地址| 欧美人成在线视频| 久久香蕉国产线看观看av| 美女福利精品视频| 91老司机精品视频| 亚洲性生活视频| 国产精品女主播视频| 影音先锋欧美在线资源| 57pao国产精品一区| 神马久久久久久| 大桥未久av一区二区三区| 日韩一区二区三区xxxx| 国产一区二区日韩精品欧美精品| 中文字幕国内精品| 国产精品人人做人人爽| 欧美大成色www永久网站婷| 亚洲欧洲在线免费| 国产美女精彩久久| 亚洲精选在线观看| 久久精品国产久精国产一老狼| 日韩成人激情视频| 欧美成人三级视频网站| 欧美性猛交xxxx免费看漫画| 日韩av影视在线| 色偷偷偷综合中文字幕;dd| 国产精品极品美女粉嫩高清在线| 日韩在线视频国产| 欧美做受高潮1| 91亚洲精品在线| 亚洲精品一区av在线播放| 一个色综合导航| 97久久久免费福利网址| 91久久国产精品91久久性色| 国产精品6699| 91av在线不卡| 欧美激情在线视频二区| 国产精品视频xxxx| 国产美女扒开尿口久久久| 久久亚洲欧美日韩精品专区| 亚洲精品午夜精品| 日韩美女视频免费看| 亚洲xxxx3d| 日韩第一页在线| 精品视频在线播放免| 日韩成人av一区| 久久久久久久久久久国产| 国产精品女主播| 欧美日韩视频免费播放| 亲爱的老师9免费观看全集电视剧| 日产精品99久久久久久| 亚洲国产成人久久综合| 中文字幕综合一区| 91在线观看免费| 亚洲深夜福利网站| 日韩av手机在线观看| 91九色单男在线观看| 国产日韩精品在线| 亚洲第一色中文字幕| 92国产精品视频| 欧美尺度大的性做爰视频| 91沈先生作品| 久久久久久有精品国产| 久久精品国产精品| 国产精品视频内| 欧美精品在线视频观看| 国产一区二区三区久久精品| 欧美激情一区二区三区久久久| 中文字幕一精品亚洲无线一区| 中文字幕自拍vr一区二区三区| 中文字幕最新精品| 清纯唯美亚洲激情| 午夜精品一区二区三区视频免费看| 亚洲国产欧美久久| 欧美日韩国产在线播放| 亚洲性日韩精品一区二区| 日本精品一区二区三区在线播放视频| 欧美人在线视频| 久久久亚洲影院你懂的| 亚洲成**性毛茸茸| 欧美巨猛xxxx猛交黑人97人| 欧美日韩精品在线播放| 欧美猛男性生活免费| 国产欧美va欧美va香蕉在| 亚洲男女自偷自拍图片另类| 国产91精品视频在线观看| 久久99视频免费| 欧美激情国内偷拍| 亚洲国产精彩中文乱码av| 红桃av永久久久| 精品国产一区二区三区四区在线观看| 国产69精品久久久久99| 69**夜色精品国产69乱| 国产成人精品av| 欧美性猛交xxxx乱大交| 亚洲图片欧洲图片av| 国产成人精品av在线| 国产亚洲精品美女久久久| 亚洲电影免费观看| 国产精品久久久久久久av电影| 亚洲欧洲午夜一线一品| 国产成人精彩在线视频九色| 国产精品精品久久久| 欧美高跟鞋交xxxxxhd| 亚洲国产精品久久久| 欧美高清自拍一区| 国产91精品久久久久久久| 黑人巨大精品欧美一区免费视频| 91日韩在线播放| 欧美多人乱p欧美4p久久| 国产精品久久久久久亚洲调教| 日韩免费av一区二区| 亚洲香蕉成视频在线观看| 成人a在线观看| 欧美激情国产高清| 亚洲精品久久在线| 国产欧美婷婷中文| 亚洲毛片在线免费观看| 国产精品自拍偷拍视频| 中文字幕少妇一区二区三区| 国产精品爽爽爽爽爽爽在线观看| 国产亚洲精品91在线| 精品自在线视频| 日韩视频免费观看| 国产精品视频色| 日韩福利视频在线观看| 91国产中文字幕| 亚洲性日韩精品一区二区| 国产日韩在线精品av| 日韩av电影手机在线| 精品国产美女在线| 欧美激情免费看| 成人精品一区二区三区电影黑人| 久久久最新网址| 亚洲欧美国产精品专区久久| 亚洲国产成人在线视频| 免费91麻豆精品国产自产在线观看| 国产一区二区三区直播精品电影| 欧美激情一区二区久久久| 98精品国产自产在线观看| 国产日韩欧美日韩| 欧美一区二区三区艳史| 欧美大全免费观看电视剧大泉洋| 成人国产在线视频| 国产精品久久久久久久一区探花|