同样的两次操作,在方法中执行一下,为什么输出结果却不同?

2020-11-06 20:39发布

public class API_Boolean {

public static void main(String[] args) {

    // 第一次操作
    String str = "aaa";
    String newStr = test(str);
    System.out.println(str);     // "aaa"

    // 第二次操作
    String a = "xxx";
    a = a + "yyy";
    System.out.println(a);       // "xxxyyy"

}

public static String test(String s) {
    s = s + "bbb";
    return s;
}

标签: java
9条回答
甜甜的少女心
2楼-- · 2020-11-06 21:22

把 String newStr = test(str);
改成 str = test(str);

查看更多
太酷不给撩
3楼-- · 2020-11-06 21:24

你的本意是第一次应该输出newStr,误写成str,test方法并未改变main方法的str值,因为test方法参数不是引用类型

查看更多
贪生不怕死
4楼-- · 2020-11-06 21:25

String属于值传递,所以调用test()方法后str的值未改变,第二次是直接在当前函数中操作赋值,值会改变

查看更多
倾城 Initia
5楼-- · 2020-11-06 21:29

照这个逻辑,每次调用方法,我的参数都可能被修改?还要ref,out关键字干嘛?

查看更多
Summer. ? 凉城
6楼-- · 2020-11-06 21:31

请将第一句输出改成: System.out.println(newStr);

查看更多
迷人小祖宗
7楼-- · 2020-11-06 21:33

String是引用类型,只是编译器对其做了特殊处理。

查看更多
登录 后发表回答