04_javaSE面试题:方法的参数传递机制

题目

import java.util.Arrays;

/**
 * @author kevin
 * @date 2019/7/10 9:46
 */
public class Exam4 {
    public static void main(String[] args) {
        int i= 1;
        String str = "hello";
        int[] arr = {1,2,3,4,5};
        MyData my = new MyData();
        change(i,str,arr,my);
        System.out.println("i=" +i );
        System.out.println("str=" + str);
        System.out.println("arr="+ Arrays.toString(arr));
        System.out.println("my.a="+my.a);
    }
    public static void change(int i,String str,int[] arr,MyData my){
        i +=1;
        str += "world";
        arr[0] += 1;
        my.a +=1;
    }
}
class MyData{
    int a = 10;
}

运行结果

i=1
str=hello
num=2
arr=[2, 2, 3, 4, 5]
my.a=11

分析

首先,不要纠结于Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。

  • 对象类型永远传引用;
  • 基本类型传值。

下面画了一张图更利于解释

玩的开心!

原文地址:https://www.cnblogs.com/zhenghengbin/p/11163721.html

时间: 2024-10-31 01:25:10

04_javaSE面试题:方法的参数传递机制的相关文章

JavaSE 面试题: 方法的参数传递机制

JavaSE 面试题 方法的参数传递机制 import java.util.Arrays; public class Test { public static void main(String[] args) { int i = 1; String str = "hello"; Integer num = 200; int[] arr = {1, 2, 3, 4, 5}; MyData my = new MyData(); change(i, str, num, arr, my); S

尚硅谷面试第一季-04方法的参数传递机制

面试题代码: 1 package 方法的参数传递机制; 2 3 import java.util.Arrays; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-03-27 9:37 9 * @Describe 方法的传递机制 10 * (1)形参是基本数据类型的 11 * 传递数据值 12 * (2)形参是引用数据类型的 13 * 传递地址值 14 * 特殊的类型:String.包装类等对象不可变性 15 */ 16 pu

方法的参数传递机制(C#)

六 方法的参数传递机制 值参数,引用参数,输出参数 //参数的传递机制 using System; class Method { //值参数,传递的是数值本身,不改变外部变量的值 public static void ValueMethod(int i) { i++; } //引用参数,传递的是数据地址,直接对数据进行操作,原值要变化 //要注意的是string类型,赋值以后原值就不好改变了 public static void ReferenceMethod(ref int i) { i++;

我的Java开发学习之旅------>Java语言中方法的参数传递机制

实参:如果声明方法时包含来了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时传给形参的参数值也被称为实参. Java的实参值是如何传入方法?这是由Java方法的参数传递机制来控制的,Java里方法的参数传递方式只有一种:值传递.所谓值传递,就是将实际参数的副本(复制品)传入方法内,而参数本身不会收到任何影响. 一.参数类型是原始类型的值传递 下面通过一个程序来演练 参数类型是原始类型的值传递的效果: public class ParamTransferTest { public sta

深入理解Java中方法的参数传递机制

形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. 在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义: 形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称"形参". 实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数称为"实际参数",简称"

java中方法的参数传递机制(值传递还是引用传递)

看到一个java面试题: 问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本.指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的. 以下是从其他文章里转的,只为加深理解 public class TempTest { private void te

方法的参数传递机制

Java中的参数传递机制

通过前一篇文章的介绍,我们从整体上明白了,Java类中变量的差异性.不同变量在内存中的存储位置,以及变量的生命周期等.今天,我们来看一下Java中参数传递的机制. 形参:方法声明时包含的参数声明 实参:调用方法时,实际传给形参的参数值 Java方法的参数传递机制: Java方法的参数传递只有一种:值传递.所谓值传递,就是将实际参数值的副本,传入方法内,而参数本身不会收到任何影响. PS:传入方法的时实际参数值的复制品,不管方法中对这个复制品如何操作,实际参数本身不会受到任何影响. 基本类型的参数

深入剖析C/C++函数的参数传递机制

2014-07-29 20:16 深入剖析C/C++函数的参数传递机制 C语言的函数入口参数,可以使用值传递和指针传递方式,C++又多了引用(reference)传递方式.引用传递方式在使用上类似于值传递,而其传递的性质又象是指针传递,这是C++初学者经常感到困惑的.为深入介绍这三种参数传递方式,我们先把话题扯远些: 1. C/C++函数调用机制及值传递: 在结构化程序设计方法中,先辈们告诉我们,采用“自顶向下,逐步细化”的方法将一个现实的复杂问题分成多个简单的问题来解决.而细化到了最底层,就是