Java中到底是传值还是传址?
Java中到底是传值还是传址?
1:既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2:java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))
public class String01 {
String str = new String("xhp");
final char[] ch = {'j','a','v','a'};
public void change(String str , char ch[]){
str = "java";
ch[0] = 'h';
}
public static void main(String[] args) {
String01 ex = new String01();
ex.change(ex.str,ex.ch);
System.out.print(ex.str + " and " );
System.out.println(ex.ch);
}
}
传入的是str的地址值,指向value ,ch指向数组,
str = "java" 会在常量池中寻找“java”,没有则创建并且指向
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通