谁帮我分析下这个原因

在一个类里面写了下面内容,为什么输出结果还是 l ,而不是 ss ?

public static void main(String[] args) {
String s = "l";
change(s);
System.out.println(s);
}

public static void change(String ss ){
    ss = "ss";
}

change(s) 只是调用了这个方法,并没有要输出它

String类型是不可修改的,不明白的话可以百度一下:“String类型 不可修改”

你只是调用了下面方法一下,但是没有返回任何值,也没有给上面的重新赋值。

基本数据类型,引用数据类型 形参,实参的改练需要多了解,这都是基础知识

java 是值传递。百度一下java值传递。

因为你的change()方法没有返回值,所以你里面修改了SS的值不会影响到主函数中S的值得,所以S的值依旧还是1.你可以在change()中加个return SS,然后在主函数中S = change(S),这样S就会变成ss了

这是Java中的值传递问题,分两种:基本数据类型和引用类型,你用的是String,也就是引用类型,引用类型的话,如果不是对具体对象属性的更改,只是不会变化的,你可以试一下,把类型变为最简单的int,输出的值就不一样了