java中有地址参数传递吗?

 我来答
jamxval
推荐于2016-08-22 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1418万
展开全部
你需要明白,地址参数传递的真实含义,然后就明白了,只拿概念去套是没有意义的。套概念只会今天问 java 有没有,明天问其它的语言有没有。

java 的参数传递不同于按值传递,也不完全同于按地址传递,因为这需要区分基本类型和抽象类型。
名义上 Java 都是按值传递,但对于抽象类型来说又有引用传递的效果。指向原始对象,函数调用后的效果也导致了目标对象被改动,之后持有指向目标对象的符号的变量就跟着有了变化,这点就像引用传递。

所以 Java 的核心人士都说 Java 只有按值传递。但理解了 Java 的引用之后就明白,对于抽象类型的对象,这其实也是引用传递。所以在 Java 中没直接与 C++ 地址传递。

Java API 中有些类型的是 immutable,就是说它的状态在创建之后不再更改,所以修改需要创建一个全新的对象,比如 String, Integer 之类的,所以 str + "sest" 其实并未改变 str 对象本身,所以需要用 str = str + "test" 来接收改变之后的结果,它是一个新的 String 对象,不同于 str + "test" 调用之前的那个 str。
百度网友3ce83a3
2014-01-11 · 超过20用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:41.4万
展开全部
是这样的,java传参,举个例子:
public String test(String str){
str = str+"test";
return str;
}
在这个中间,你需要返回str才能得到str后改变后的值,如果要像c传地址那样的效果可以这样做:
public void test2(final String str){
str = str + "test";
}

然后测试下:
public void static main(String[] args){
String str = "123";
System.out.println(test2(str));
//打印出来的:123test,效果就是传地址一样
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fox000002
2014-01-11 · TA获得超过3827个赞
知道大有可为答主
回答量:2356
采纳率:97%
帮助的人:1180万
展开全部
没有,JAVA不能直接操作底层的内存地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
每天学点Java
2014-01-11 · TA获得超过5938个赞
知道大有可为答主
回答量:3547
采纳率:0%
帮助的人:1342万
展开全部
http://zhidao.baidu.com/question/1753634614165618348.html?push=keyword
看看就是你提问的这个网页地址栏的地址push=keyword就是地址参数传值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anglewang98
推荐于2018-05-10 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:282万
展开全部
  java中不能直接管理内存,都是直接由jvm本身来管理,内存资源也是由垃圾回收器来回收。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式