donglin_no1 2010-01-14 10:25
浏览 260
已采纳

java的基础问题

public class Test {

static void  func(int a, String b, String c) {
    a = 1;
    b.trim();
    c = b;
}

public static void main(String[] args) {
    int a = 0;
    String b = "Hello  World   ";
    String c = "OK";
    func(a, b, c);
    System.out.println("" + a + "," + b + "," + c);

}

}

打印结果:0,Hello World ,OK

为什么a、b、c的值都没有变化?
[b]问题补充:[/b]
可以再说的详细点么? 不是很理解

  • 写回答

6条回答 默认 最新

  • mginobili 2010-01-14 10:37
    关注

    因为在java中

    一些基础类型int char long这些在调用方法时是按照值传递的

    而对象则是按照引用传递的

    字符串虽然是对象,但是String是被特殊处理过的,传入方法时只不过是这个String对象的拷贝
    真正的String对象已经创建 是不可修改的

    [code="java"]
    String a = "abc";//创建了一个String对象a,内容为"abc"
    a = "b";//新创建了一个String对象,内容为"b",把这个对象的引用赋给了a
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案