Core Java (九) Java的方法参数

释放双眼,带上耳机,听听看~!

在各种程序设计语言中方法的参数有两种,分别是:值调用,引用调用。

Java程序设计语言总是采用
值调用,即方法得到了所有参数值的一个拷贝。

细分的话,方法参数一共两种类型:

  1. 如果参数是基本数据类型,那么传递的是一个基本数据类型的值;
  2. 如果参数是对象,那么传递的是一个

对象引用的拷贝,注意不是C++中的对象引用。这个引用的拷贝和其他的拷贝一样,同时引用了一个对象。

一个方法不可能修改一个基本数据类型的参数,但是可以修改一个对象的状态。

一定要注意,Java中对对象采用的是引用的拷贝,并不是引用调用,反例如下:

测试程序:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
1package com.xujin;
2
3public class Test {
4   public static void main(String[] args) {
5       Employee[] staff = new Employee[2];
6       staff[0] = new Employee("Bob", 1000);
7       staff[1] = new Employee("Jim", 2000);
8      
9       //doesn't work
10      swap(staff[0], staff[1]);
11      System.out.println(staff[0].getName());//Bob
12      System.out.println(staff[1].getName());//Jim
13     
14      staff[0].raiseSalary(0.5);//涨50%的工资
15      System.out.println(staff[0].getSalary());//1500.0
16     
17      System.out.println(staff[0].getId());//1
18      System.out.println(staff[1].getId());//2
19  }
20 
21  public static void swap(Employee x, Employee y){
22      Employee temp = x;
23      x = y;
24      y = temp;
25  }  
26 
27}
28
29class Employee{  
30  public Employee(String name, double salary){
31      this.name = name;
32      this.salary = salary;
33      id = nextId;
34      nextId++;
35  }
36 
37  public String getName(){
38      return name;
39  }
40 
41  public double getSalary(){
42      return salary;
43  }
44 
45  public int getId(){
46      return id;
47  }
48 
49  public void setName(String name){
50      this.name = name;
51  }
52 
53  public void setSalary(double salary){
54      this.salary = salary;
55  }
56 
57  public void raiseSalary(double percent){
58      this.salary *= (1 + percent);
59  }
60 
61  private String name;
62  private double salary;
63  private int id;
64  private static int nextId = 1;
65}
66

给TA打赏
共{{data.count}}人
人已打赏
安全技术

用node.js从零开始去写一个简单的爬虫

2021-12-21 16:36:11

安全技术

从零搭建自己的SpringBoot后台框架(二十三)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索