把个人其他博客的文章慢慢搬过来,主要是能上传代码附件。
(1)Java中的基本类型比如int,bool等是值传递。
(2)对象类型则类似于C中的指针传递:
2.1当修改参数的指向时不影响函数外部的变量,其仍然指向原来的对象。
2.2但是修改参数指向的对象的成员变量时,此修改作用的对象实际上与函数外部的对象是同一个,修改被保存。
class Test{
public static void testChangeInt(int a) {
System.out.println("Old value:"+a); //Old value:5
a = ++a;
System.out.println("New value before return:"+a); //a:6。只在此函数内为6
}
public static void swap(String a, String b) {
String t;
t = a;
a = b;
b = t;
System.out.println("a New value before return:"+a); //bbbb
System.out.println("b New value before return:"+b); //aaaa。只在此函数内交换了
}
public static void appendWorld(StringBuffer sb) {
System.out.println("sb Old value:"+sb);
sb.append("world."); //改变成员变量
System.out.println("sb New value before return:"+sb); //hello world。
}
public static void main( String[] args ) {
System.out.println("Main func start.");
int ti = 5;
testChangeInt(ti);
System.out.println("New value after return:"+ti); //ti:5。不被函数改变
System.out.println("----------------------------");
String a = new String("aaaaa");
String b = new String("bbbbb");
swap(a,b);
System.out.println("a New value after return:"+a); //aaaa
System.out.println("b New value after return:"+b); //bbbb 变量指向的目标不被函数改变。
System.out.println("----------------------------");
StringBuffer sb = new StringBuffer("Hello ");
appendWorld(sb);
System.out.println("sb New value after return:"+sb.toString()); //Hello world。变量指向的目标没变,但是目标的成员变量被改变了。
System.out.println("----------------------------");
}
}
Java中的“引用”和C++中的引用的对比:
C++代码:
#include <iostream>
using namespace std;
int main(int,char**)
{
int other = 8;
int target = 5;
int& ref = target;
target = other;
cout << ref << endl;
}
输出:8. 就是当引用的目标改变了后,引用也跟着改变,所以把ref当做target的别名更容易理解,即ref就是target。
Java代码:
class Ref {
public static void main(String[] args) {
int other = 8;
int target = 5;
int ref = target;
target = other;
System.out.println("ref="+ref);
}
}
输出ref=5。即ref和target是独立的。ref指向的目标不受target的影响。
分享到:
相关推荐
例如,你可以创建一个shell脚本来执行DataX的同步任务,并将where条件作为参数传递。当条件包含特殊字符(如单引号 `'`、双引号 `"`、反斜杠 `\` 或者管道符号 `|` 等)时,必须正确转义以防止shell解释器错误解析。...
在Java编程语言中,参数分析是一项关键的技能,它涉及到函数调用时的参数传递、类型检查、值的计算以及方法重载等多个方面。本文将深入探讨Java中的参数...通过不断实践和学习,你将能更好地掌握Java参数分析的精髓。
本主题聚焦于使用“一般参数传递方式”来创建一个能够处理加、减、乘、除运算的后端接口。这里我们将深入探讨如何实现这个功能,并通过具体的HTTP请求地址`Http://localhost:8080/simplecalculator`来演示其工作原理...
在Java Web开发中,我们经常需要处理HTTP请求,其中包含了客户端传递给服务器的数据。这些数据通常以请求参数的形式存在,例如URL查询参数、POST表单数据等。在某些情况下,我们可能需要在服务器端动态地修改这些...
例如,可以使用Java的`System.identityHashCode()`方法来验证不同引用是否指向同一个对象,或者使用调试器来查看方法调用时的实际参数传递。 总的来说,理解Java中的值传递和对象引用传递对于编写高效、无误的代码...
Java 调用 Python 脚本传递参数是指在 Java 应用程序中调用 Python 脚本,并将参数传递给 Python 脚本,以实现特定的功能。在本篇文章中,我们将详细介绍 Java 调用 Python 脚本传递参数的方法,并提供示例代码,...
- 参数校验:解密后,应用应验证数据的完整性,例如通过哈希值或时间戳。 7. **实战应用**: 在实际的J2EE项目中,这些方法可以集成到服务器端的过滤器或拦截器中,自动处理所有出站和入站的URL参数加密解密。 8...
在Java编程中,有时我们需要对一组参数按照字典顺序(ASCII码值从小到大)进行排序,例如在创建签名或构建URL查询字符串时。这里提供了一个名为`createSign`的方法,它接受一个`Map, Object>`类型的参数,并返回一个...
以上就是Java后台生成支付宝支付参数的详细步骤,涉及到的知识点包括:支付宝API接口的调用、请求参数的构建、签名算法的实现、异常处理、响应解析以及支付通知的验证等。在实践中,需要不断优化和调整,以适应不断...
4. **动态生成验证码**:根据从服务器获取的参数,后端需要生成动态的验证码图片或交互式验证元素,并将其传递给前端展示。这涉及到图像处理或HTML/CSS/JavaScript的组合使用,以便在用户界面上呈现验证界面。 5. *...
### Weka中参数传递的深度解析与应用 #### 引言 Weka,全称Waikato Environment for Knowledge Analysis,是一款开源的数据挖掘软件工具包,主要用于机器学习和数据挖掘任务。它提供了丰富的算法集合,包括分类、...
本教程将详细解释如何使用POST方法附带身份验证和自带参数来调用接口,这在开发中非常重要,尤其是在涉及到用户登录、数据提交等场景。 首先,我们要理解身份验证的概念。身份验证是确认用户或应用程序是否具有访问...
Java 中的参数传递有两种类型:基本类型和引用类型。基本类型参数是典型的值传递,而引用类型参数则是将引用变量的值传递给形参,实参和形参指向了同一个对象。如果利用形参进行操作,操作的就是实参指向的对象,...
当需要传递数组作为参数时,可能会遇到一些挑战,特别是在数组中包含复杂对象的情况。本文将深入讲解如何在jQuery AJAX中向后台传递数组参数,并提供示例代码。 首先,理解问题的关键在于JavaScript数组在传递给...
前端通过HTML收集用户输入,JavaScript进行初步校验,然后通过JSP将数据传递给Java后台,后台连接MySQL数据库进行最终验证。如果验证通过,用户会被认为已成功登录,否则将返回错误信息。这只是一个基础的实现,实际...
`multipart/form-data`是用于处理包含二进制数据(如文件)的表单提交的编码类型,但它默认情况下不支持传递额外的文本参数。 在描述中提到了使用Apache Commons IO和Commons Fileupload这两个Java库来解决这个问题...
5. **OosDsParamsVO**: 这可能是一个数据传输对象,用于封装传递给WebSocket的参数。这些参数可能包含连接标识、消息内容等信息。 6. **IOosAgentSendNewsService**: 这是服务接口,定义了发送消息的方法,方便其他...
在Java中,通过责任链模式,我们可以将多个处理者对象串联起来,每个处理者都有机会处理请求,或者将请求传递给下一个处理者。这种模式的优点在于解耦了发送者和接收者,使得系统更具灵活性,能够添加、删除或改变...
- 通常,我们在表单提交后验证成功或失败,会使用重定向来显示一个确认页面,此时就需要传递验证结果或错误信息。 7. **源码分析** - 深入理解Spring MVC的源码,可以了解`RedirectAttributes`是如何将数据封装并...
本教程将深入探讨如何在Java中使用Axis2构建一个包含SOAP Header验证的客户端。 首先,理解SOAP Header至关重要。SOAP Header是SOAP消息的一部分,用于传递非处理信息,如认证、交易、安全等。与SOAP Body不同,...