首先,我的结论是,如果是对对象进行 操作的话,传的是地址,如果是对基本数据类型进行操作的话,传的是值!
下面,我再用一个小的实例来测试我的结论:
class Person {
int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
public class Test{
public static void main(String[] args){
Person p = new Person();
p.setAge(1);
changeObj(p);
System.out.println(p.getAge());
int a = 1;
change(a);
System.out.println(a);
}
static void changeObj(Person p){
p.setAge(12);
}
static void change(int a){
a = 123;
}
}
如果,我上面的结论是猜测是正确的话,输出的结果应该是
age=12
a=1
下面截图表示一下:
![](http://img.my.csdn.net/uploads/201209/09/1347159107_2652.gif)
因此,说明了我的结论是正确的。可是突然想到,如果是基本数据类型的包装类的话会是什么结果呢?下面我们进行一个小的测试来寻找一下结论
public class Test{
public static void main(String[] args){
Integer b = new Integer(90);
change(b);
System.out.println(b);
}
static void change(int a){
a = 123;
}
}
如果是值传递的话,那么结果应该是90,如果是地址传递的话,那么结果应该是123,下面贴图说明问题:
![](http://img.my.csdn.net/uploads/201209/09/1347158543_1757.gif)
上面说明了传递的是值,而不是地址,但是有一点,程序里面,change()方法这的参数是int,而不是Integer,这会不会影响结果呢?那么我们就再写一个例子测试,看一下结果:
public class Test{
public static void main(String[] args){
Integer b = new Integer(90);
change(b);
System.out.println(b);
}
static void change(Integer a){
a = 123;
}
}
下面来看结果,还是贴图查看:
![](http://img.my.csdn.net/uploads/201209/09/1347158741_8282.gif)
可以看出,结果依然没有变化,由此我们可以得到结论:基本数据类型,包括其包装类,在进行参数传递的时候传的是值。
综上所述,我们可以得到结论:在java中进行参数传递的时候,基本数据类型,包括其封装类,进行的是值传递,而对于对象,传递的是引用。
以上是本人的一个测试与结论,如果大家发现有什么不正确的地方,欢迎批评指正。
分享到:
相关推荐
- 在 Java 中,参数是以值传递的方式进行的。 - **示例**: - 调用 `switchCoords` 方法后,局部变量 `x` 和 `y` 的值并未发生改变。 - 输出结果为 `(5,3)(5,3)(5,3)`。 ### 9. do-while 循环 - **do-while ...
总结一下,这个“RabbitMQ Java测试客户端”项目是一个实践示例,展示了如何在Java应用程序中使用RabbitMQ进行消息传递。它涵盖了连接管理、消息发送与接收的基本流程,对于学习和理解RabbitMQ在Java环境下的应用...
有说有值传递和引用传递两种,也有说只有值传递的,这里只说下个人见解 先看一个例子 public class Test1 { public static void main(String[] args) { int a = 10; changeNum(a); System.out.println("main...
### JNI中C和Java参数传递详解 #### 一、引言 Java Native Interface (JNI) 是Java平台标准的一部分,用于让Java代码与其他语言写的代码进行交互。本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,...
本文意在终结这个话题,Java 中有说法:Java 里面参数传递都是按值传递,怎么理解这句话? 按值传递和按引用传递是来自 C++ 语言的概念。引用不是汉语词典中的一个词,而是 C++ 的概念——“&”这个符号。为什么有...
java代码中做如下测试: String charEncode = java.net.URLEncoder.encode(“&”); System.out.println(“字符& 转译后的值为:” + charEncode ); //输出:& 所以,解决方法出现了—在传送参数前, 将&全部替换为...
- 源码:在Java Vuser测试中,测试者需要理解和操作Java源代码,以便能够精确地模拟应用程序的行为。 - 工具:LoadRunner作为主要的工具,提供了VuGen和Controller等组件,帮助测试人员编写、运行和分析Java Vuser...
至于压缩包中的`META-INF`和`showimg`,`META-INF`是一个标准的Java存档(JAR)文件目录,通常包含关于JAR文件元数据的信息,比如清单文件(MANIFEST.MF),这在Java类库或应用程序的打包和运行中很重要。...
方法的参数传递机制测试类,以供大家交流之用。
JUnit 4.7是该框架的一个早期稳定版本,它引入了一些改进,比如更灵活的测试异常处理,支持参数化测试,以及允许在测试中使用可选的注解。4.8版本进一步增强了对注解的支持,包括修复了一些bug和改进了性能。而4.11...
在测试文件中,你可能还会看到一些关于异常处理的示例,比如当试图访问不存在的键或尝试将非JSON兼容类型转化为JSON时,程序会抛出`JSONException`。这有助于确保数据的正确性和完整性。 总的来说,`jsonjava`库是...
在Java编程中,ActiveMQ提供了API,使得开发者能够轻松地将消息传递功能集成到应用程序中。 首先,我们要理解JMS(Java Message Service)。JMS是一种标准接口,定义了生产、发送、接收和消费消息的一套API,这些...
测试题中提到“所有标识符都是有效的”,这意味着Java中可以使用的变量名和标识符都可以是有效的。 Java语言对变量名和标识符的命名规则是,变量名可以由字母、数字、下划线和美元符号组成,但不能以数字开头。 ...
Java 技能测试题主要涵盖了三个核心领域:线程、Socket和I/O以及算法和数据库操作。这些知识点在Java编程中至关重要,对于软件工程师的角色尤其重要。以下是对这些知识点的详细解释: 1. **线程**: 线程是程序中...
4. **值传递与引用传递**: 当对象作为参数传递给方法时,实际上是传递了对象的引用,而不是对象本身。因此,任何对对象内部状态的修改都会反映回原对象。 5. **switch语句的作用**: `switch`语句主要用于整型和字符...
在并发性能测试中,通常会使用线程池(如`ExecutorService`)来启动多个并发线程,每个线程执行不同的数据库操作。测试的目标是评估在高并发环境下,MongoDB的响应时间、吞吐量以及系统资源的使用情况。这有助于了解...
总结来说,这个"Java小小测试例题-计算器"涵盖了Java Web开发中的基础概念和技术,包括SSH框架的使用、MVC架构的理解、以及简单的业务逻辑实现。对于初学者,这是一个很好的实践项目,可以帮助他们理解Java企业级...
在标题和描述中提到的问题,主要是关于在使用javadbf处理中文数据时遇到的乱码问题以及如何解决这个问题。中文乱码通常发生在字符编码不匹配的情况下,例如当文件以一种编码存储,但程序试图以另一种不同的编码读取...