`
liweizlw
  • 浏览: 24581 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

数组的值是怎么传递的?

阅读更多
本人刚入门不久,最近在开发过程中发现了个问题不是很明白,
public class Test {
public static void main(String args[]){
String str = "String";
int [] arr = {1,2};
Test2 t2 = new Test2();
t2.fun(str);
t2.fun2(arr);
System.out.println(str);
System.out.println(arr[0]);
System.out.println(arr[1]);
}
}

class Test2 {
public void fun(String str){
str = "3333333";
}
public void fun2(int[] arr){
arr[0]=100;
arr[1]=200;
}
}


输出结果:
String
100
200

为什么只是调用了test2方法确使得数组的值发生了变化,String却没有变呢?
分享到:
评论
2 楼 橡树心 2008-03-20  
数组传的是对象的引用,是数组在内存中的地址
1 楼 jimiyiyi 2008-03-20  
String str = "String";这个"String"是在串池中,是个常量。而数组是NEW出来的 在堆空间。 对象的传递是按引用传递,也就是C中的传地址,因此会改变内存的值,而String是个常量 所以不能改变 你fun方法里只是改变引用的指向 去指向另外一个串池中"333333"的常量而已,对main方法里的引用不起任何作用。这里还有个概念就是实参和形参的问题,很基础的一个问题,也是新手比较容易迷惑的问题。

相关推荐

    VC++数组的传递方式

    本文将通过一个具体的示例程序来详细探讨数组的传递方式,并进一步解释该程序如何实现数组的传递以及如何使用这些数组计算平均值、最大值和最小值。 #### 示例程序分析 首先,我们来看一下给定的代码片段: ```...

    java【第4章:数组与方法】_数组的引用传递.

    在Java中,基本类型的变量(如int、char等)是按值传递的,而对象(包括数组)则是按引用传递。这意味着对方法参数的基本类型变量进行修改不会影响到原始变量,但对对象的修改则会。 了解这些基础知识后,开发者...

    使用php对二维数组按数组值进行排序

    本文将深入探讨如何在PHP中对二维数组按数组值进行排序,并提供一个实际的代码示例。 二维数组,顾名思义,是数组中的数组,可以理解为表格形式的数据结构,每一行是一个一维数组,所有行数组组成一个二维数组。...

    javascript数组与php数组的地址传递及值传递用法实例

    在编程语言中,数据的传递方式分为值传递和引用传递,这两种传递方式在JavaScript和PHP中对于数组的处理有所不同。本文将深入探讨JavaScript和PHP数组的地址传递(引用传递)和值传递的区别,并通过实例来解析它们的...

    JNA调用C++动态库,传入二维数组,通过C++返回二维数组,java调用C++完整案例

    这里我们声明了一个名为`processArray`的函数,它接受一个二维整型数组作为输入,另一个二维整型数组作为输出,返回一个整型值。 接下来,加载C++动态库。在Java中,我们可以通过以下方式加载库: ```java MyDLL ...

    Java数组传递及可变参数操作实例详解

    在方法 `method` 中,我们修改了数组的第一个元素的值为 6。最后,我们输出数组的所有元素,可以看到数组的第一个元素已经被修改为 6。 使用方法返回一个数组 方法不仅可以传递数组,还可以返回一个数组。方法返回...

    向DLL传递数组参数的实现方法

    静态`表示使用C调用约定,其中参数按值传递,由被调用者清理堆栈。如果DLL使用其他调用约定(如stdcall),需要在声明时指定。 6. **数据对齐**: 数组的元素可能需要按照特定的对齐方式进行存储,这取决于DLL的...

    用C#编程语言实现数据结构传递整形变量、字符串、数组的方法

    总结,C#编程中传递整型变量、字符串和数组涉及值传递和引用传递的概念,理解这些基础知识对于编写高效、灵活的代码至关重要。实际编程中,应根据需求选择合适的数据结构和传递方式,同时注意性能和代码的可读性。

    JavaScript如何获取数组最大值和最小值

    当需要从数组中寻找这些值时,可以使用`apply()`方法将数组作为参数传递给它们。 在提供的代码示例中,我们看到两个自定义函数:`findMax()`和`findMin()`,以及两个附加到Array对象的辅助函数:`Array.max()`和`...

    易语言DLL传递数组测试程序源码,易语言向DLL传递数组参数的实现

    然而,传递数组作为参数比传递基本类型的数据要复杂一些,因为数组不是单一的值,而是一系列连续存储的数据。 在易语言中,向DLL传递数组通常涉及以下几个步骤: 1. **定义数组类型**:根据需要传递的数组类型,如...

    2.1.1 C++和C#数据传递 -常用类型数组和List类型传递

    在C++中,数据传递主要通过值传递和引用传递。数组在C++中被视为对象,因此当作为参数传递时,实际上是传递了数组的首地址,也就是指针。这意味着,当你在函数内部改变数组元素的值时,这些更改会影响到原始数组。...

    asp.net中后台c#数组与前台js数组交互

    这个步骤是关键,我们使用 `数组%>` 将CS数组的值赋给前端JS数组。 ```javascript var jingdu = new Array(); var weidu = new Array(); for (int k = 0; k ; k++) { %> //赋值操作 } %> ``` 在上面的代码中...

    二维数组作为函数形参的两种方法

    这里我们使用了`const`关键字,以防止在函数内部修改数组的值。 ### 注意事项 - 在实际应用中,为了提高代码的可读性和通用性,通常会使用模板函数来处理不同大小的二维数组。 - 使用指针时,务必注意传递正确的...

    PHP数组传递是值传递而非引用传递概念纠正

    但实际上,在PHP中,数组传递的行为是值传递,而不是引用传递。这一点在设计和调试PHP程序时非常重要。 为了更深入地理解这一点,我们首先需要区分“值传递”和“引用传递”这两个概念。值传递是指在函数调用时,...

    易语言源码向DLL传递数组参数的实现方法.rar

    本篇将详细讲解如何在易语言中实现源码向DLL传递数组参数的实现方法。 首先,我们需要了解DLL的基本概念。DLL是一种可执行文件,包含一组可供其他程序调用的函数和数据。在易语言中,我们通常通过`系统.外部调用`...

    JAVA【第4章:数组与方法】_数组的定义及使用

    数组可以在方法中作为参数传递,也可以作为方法的返回值。这使得我们可以编写通用的函数来处理任何类型的数组。 总结来说,数组是Java中存储和操作数据的基本工具,熟练掌握数组的定义、初始化、访问、遍历、多维...

    函数、内存、一维数组、二维数组

    元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 示例:int[] arr = new int[5]; 格式2: 元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; int[] arr = new int[]{3,5,1,7}; int[] arr = {3,5...

    5-Java数组与方法

    而动态初始化则只指定数组长度,值在后续操作中赋给数组元素: ```java int[] dynamicArray = new int[5]; ``` 在Java中,数组的引用传递是一个重要的概念。当你把数组作为参数传递给方法时,实际上是传递了数组的...

    C++习题 6数组与指针

    - **答案**:当使用数组名作为函数参数时,C++只传递数组首地址而不检查数组边界,因此不需要指定数组长度。即使指定了长度,也不会起到实际作用。 **5.2.4 如何编写对多维数组通用的算法?** - **解决方案**:...

Global site tag (gtag.js) - Google Analytics