java的值传递机制

Posted 小刚的视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的值传递机制相关的知识,希望对你有一定的参考价值。

一、练习:编写Java程序,将二维数组中的行列互调显示出来。

  代码1为自己编写:

 1 package com.xxgpra.CH6;
 2 
 3 public class Hangliehudiao_pra4 {
 4     
 5     public static void main(String[] args) {
 6         
 7         int[][] arr1 = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
 8         Hangliehudiao_pra4 hang = new Hangliehudiao_pra4();
 9         
10         System.out.println("数组原有内容: ");
11         hang.showArray(arr1);
12         
13         for(int i = 0;i< arr1.length;i++){      
14             for(int j = 0;j<3;j++){
15                 int temp = 0;
16                 temp = arr1[i][j];
17                 arr1[i][j] =arr1[j][i];
18                 arr1[j][i] = temp;
19             }
20             
21         }
22         
23         System.out.println("数组现有内容: ");
24         hang.showArray(arr1);     //变化后的数组指向同一地址,所以打印出来的结果一样
25 
26         
27     }
28 
29     private void showArray(int[][] arr1) {
30         
31         for(int i = 0;i<arr1.length;i++){
32             for(int j = 0;j<arr1.length;j++){
33                 System.out.println(arr1[i][j]);
34             }
35             System.out.println();
36         }
37         
38     }
39 }

代码2为参考答案:

 1 public class Eval { // 创建类
 2     public static void main(String[] args) {
 3         int arr[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
 4         System.out.println("数组原有内容:");
 5         for(int i = 0;i<arr.length;i++){
 6             for(int j=0;j<arr.length;j++){
 7                 System.out.print(arr[i][j]);
 8             }
 9             System.out.println();
10         }
11         System.out.println("行列互换后数组内容:");
12         for(int i = 0;i<arr.length;i++){
13             for(int j=0;j<arr.length;j++){
14                 System.out.print(arr[j][i]);
15             }
16             System.out.println();
17         }
18     }
19 }

代码1打印的结果,都为行列互调后的数组。它们指向了同一地址。

 

二、知识点:java的值传递机制

1.概念
形参:方法在声明时的参数
实参:方法在调用时,实际传递给参数的变量、值

2.java参数传递机制:值传递
规则:如果传递的是基本数据类型的变量,那么将基本数据类型的变量的值传递过去。
如果传递的是引用数据类型的变量,那么将引用数据类型的变量的地址值传递过去。

3.典型例题与内存解析:

 

以上是关于java的值传递机制的主要内容,如果未能解决你的问题,请参考以下文章

java 面向对象:类结构 方法 java的值传递机制

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

有关java参数的两种传递机制

一道 Java 方法传值面试题——Java方法传值的值传递概念和效果 + Integer 缓存机制 + 反射修改 private final 域

有关java参数的两种传递机制

方法的参数值传递机制