`
ynp
  • 浏览: 437803 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的参数传递总结

阅读更多
Java的参数传递总结

JAVA的参数传递总是传"值",但是传值方式也分为两种方式,它们是靠传递参数的类型区分的。这两种类型分别为JAVA的基础类型和Object(对象)类型;基础类型包括boolean,byte,short,char,int,long,float,double,而Object就是对象,如数组.在参数为基础类型时,见代码:
   public class A{
     public static void main(String arg[]){
       int a=3;
       method1(a);
       System.out.println(a);
     }
     public static void method1(int a){
      a=4;
     }
   }
此时结果的输出将是3,而且只要你的值在Main函数中没变,a的值不管怎么传都不回变,这是因为a是传值,而这个"值"是a的一个拷贝,a的值在传递后的改变只是改变了a的拷贝的内容,并没有改变真正的a的值;对于参数为对象
    public class A{                                   public class A{
     public static void main(String arg[]){    public static void main(String arg[]){
       int[] a=new int[1];                                int[] a=new int[1];
       a[0]=3;                                               a[0]=3;
       method1(a);                                        method1(a);
       System.out.println(a[0]);                       System.out.println(a[0]);
     }                                          }
     public static void method1(int[] a){         public static void method1(int[] a){
      a[0]--;                                                  a=new int[0];
     }                                                           a[0]=4;
   }                                                            }
                                                              }
左边的结果将是2,右边的结果将是3(未变),原因是:在传递的参数为对象时,这个传递的"值"中放的内容实际上是对向所在的地址,左边的情况是指针定位到对象的地址后,在上面把内容给改了,所以数组的值后会改变,而右边的情况为给对象新分配了一个指针到新的地址上面去,所以所有的操作都在新的地址上面,并不会影响原来的值。注:对于String,Interger,Boolean,Double等的系统对象,它们虽然是Object,但是任何方式的传递参数的值得改变并不会影响原来的值。 

转自 http://www.newsmth.net/pc/pccon.php?id=2206&nid=215001

=============================
一道面试题
	public static void main(String arg[]) {
		String str = "hello";
		method2(str);
		System.out.println(str);
	}

	public static void method2(String str) {
		str += "world";
	}

结果是hello

结论(可能不对啊) 参数传递的是值传递,string比较特殊。基本类型是不会改变值的,对象是会改变的属性值的,但string也是传递的对象啊,还得研究下,写个例子

package co.xx;

public class Hello {
	public static void main(String arg[]) {
		int a = 3;
		String str = "hello";
		int[]aa = {1};
		Test test = new Test();
		method1(a);
		method2(str);
		method3(aa);
		method4(test);
		System.out.println(a);
		System.out.println(str);
		System.out.println(aa[0]);
		System.out.println(test.i);
//		结果
//		3
//		hello
//		0
//		99
	}

	public static void method1(int a) {
		a = 4;
	}
	
	public static void method2(String str) {
		 str += "world";
	}	
	
	public static void method3(int[] aa) {
		aa[0]--;
	}	
	
	public static void method4(Test test) {
		test.i--;
	}

}

	class Test{
		
		int i = 100;
	}
分享到:
评论
1 楼 cuisuqiang 2012-06-29  
值传递还是对象传递的问题

相关推荐

    Java参数传递PPT

    总结来说,Java参数传递的核心是值传递,但对于对象参数,传递的是对象引用的副本。理解这一点对于避免常见的编程错误至关重要,特别是涉及到对象的状态更改时。因此,当在方法中处理对象参数时,必须谨慎操作,因为...

    Java参数传递的经典示例

    Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...

    java 参数传递

    Java 中的参数传递机制,可以简单地总结为:基本类型作为参数传递时,是传递值的拷贝;对象作为参数传递时,是传递对象的引用。如果你在方法内改变了对象的值,那么原对象也跟着改变,但是如果你重新分配了对象的...

    java方法的参数传递其二.docx

    Java 方法参数传递之引用类型 Java 方法参数传递是 Java 编程语言中的一种基本机制,在方法调用时将参数传递给方法体内的变量,但是在传递过程中,参数的类型会对传递结果产生影响。在本文中,我们将讨论 Java 方法...

    java参数传递 java 参数.doc

    总结来说,Java中的参数传递分为值传递(基本类型)和引用传递(对象)。值传递不会改变原始变量,而引用传递会根据对象是否可变来决定是否影响原始对象。在处理String对象时,虽然看起来像是引用传递,但由于String...

    JNI中C和Java参数传递详细例子

    ### JNI中C和Java参数传递详解 #### 一、引言 Java Native Interface (JNI) 是Java平台标准的一部分,用于让Java代码与其他语言写的代码进行交互。本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,...

    java参数传递

    根据题目要求,我们将详细解析如何使用Java Applet来接收HTML文件中的参数,并计算矩形的面积与周长,最后将结果展示在...但理解Java Applet的基本原理仍然有助于我们更好地理解和学习软件工程中的参数传递等概念。

    Java的引用和函数参数传递

    ### Java的引用与函数参数传递详解 #### 一、Java中的引用基础 在Java中,对象的引用扮演着类似于其他编程语言(如C/C++)中指针的角色,但是Java的引用比传统的指针更加安全且易于管理。这是因为Java的设计者们...

    Jni中C++和Java的参数传递

    总结来说,JNI中的参数传递涉及以下步骤: 1. 在Java中定义与C++结构体匹配的类。 2. 使用`javah`生成C/C++头文件。 3. 在C++中实现本地方法,注意使用正确的JNI类型和函数来处理参数和返回值。 4. 转换C++数据类型...

    java参数传递(经典).docx

    Java参数传递机制是一个经常引起讨论的话题,尤其是在初学者和经验丰富的开发者之间。Java中参数传递的基本原则可以总结为:对于所有类型的参数,Java总是进行值传递。然而,对于基本类型和对象引用,"值传递"的概念...

    Jni中C和Java的参数传递.doc

    总结一下,JNI 参数传递的关键点包括: 1. **类型映射**:Java 和 C++ 的数据类型不同,需要使用 JNI 提供的类型映射,如 `jint`、`jstring` 等。 2. **字段访问**:使用 JNI 的 `GetFieldID` 和 `GetObjectField`...

    java值传递与引用传递

    总结来说,Java中的参数传递主要有以下特点: 1. 基本数据类型按值传递,函数内部无法改变实际参数的值。 2. 引用类型看似按引用传递,实际上传递的是对象引用的副本,因此函数可以影响实际对象的值。 3. `String`...

    JAVA参数传递方式实例浅析【按值传递与引用传递区别】

    JAVA 参数传递方式实例浅析【按值传递与引用传递区别】 JAVA 参数传递方式实例浅析【按值传递与引用传递区别】是 JAVA 编程语言中的一种基本概念,对于 JAVA 开发者来说是非常重要的。本文将通过实例形式分析 JAVA ...

    关于java的传递方式问题

    Java中方法参数的传递总是采用值传递的方式,即使对于引用类型的变量也是如此。 ##### 3.1 值传递 对于原始类型,传递的是值的副本。这意味着在方法内部对参数的任何改变都不会影响到原变量。 **示例**: ```java...

    访问网站的参数传递代码

    总结,访问网站的参数传递涉及到多种方法,选择哪种取决于具体需求,如数据的安全性、跨域支持、页面是否刷新等因素。在实际开发中,常常结合使用这些方法,以实现更高效、安全的数据交换。文件中的"参数传递-网址...

    wxh java中传递数组参数.rar

    在Java编程语言中,传递数组作为方法参数是一个常见的操作,特别是在处理批量数据或者进行集合操作时。本资源“wxh java中传递数组参数.rar”包含了关于这个主题的详细信息,特别是文档“java中传递数组参数.doc”。...

    走进Java中方法的参数传递.pdf

    总结起来,Java中的参数传递机制遵循以下规则: 1. **基本数据类型**:按值传递,传递的是变量值的副本,方法内部的修改不会影响到原始变量。 2. **对象类型**:按值传递,传递的是对象引用的副本,方法内部对对象...

    参数传递的总结——构造函数

    本文将对"参数传递的总结——构造函数"这一主题进行详细阐述,主要关注如何在构造函数中有效地管理和传递参数。 首先,让我们理解什么是参数传递。在编程中,当我们调用一个函数或方法时,我们可以向其提供一些值,...

Global site tag (gtag.js) - Google Analytics