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的值传递机制的主要内容,如果未能解决你的问题,请参考以下文章
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
一道 Java 方法传值面试题——Java方法传值的值传递概念和效果 + Integer 缓存机制 + 反射修改 private final 域