为什么第一个是java ,而第二个是 3 了?
  又是与对象有关吗?
  谢谢了!
package linhui1;
public class Test1 {
 public static void main(String[] args) {
  String s = "java";
  change1(s);
  System.out.println(s);
 }
 public static String change1(String s1) {
  String s2;
  s2 = s1 + " and html";
  return s2;
 }
}
   package linhui1;
public class Test3 {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
    int i=1;
    int s=2;
    
    int k=And(i,s);
    System.out.println(k);
 }
 public static int And(int a,int b){
 
 int w=a+b ;
 
 return w;
   }

解决方案 »

  1.   

    第一个是因为传值,s传进去再出来,s还是那个s,这么说明白吗?
    第二个是返回值,在方法内计算后有返回值出去,这个返回值不是3是几呢?
      

  2.   

    change1(s); -> s = change1(s); //楼主多用用string的方法,比如replace,substring
    int k=And(i,s);
      

  3.   

    1.方法的返回值没有赋值给任何变量,参数s没有改变也不会被改变
    2.方法的返回值赋值给了k所以k的值是方法And计算两个参数相加的结果
      

  4.   

    你虽然写了
    change1(s); 但是这个change1方法的返回值你并无处理,所以s的值并没有发生变化
    如果
    s=change1(s); 
    那末,s的值就不再是java了同样的道理,
    int k=And(i,s); 
    因为你把And方法的返回值赋给k了,所以打印出来的k的值就是3
      

  5.   

    1.方法的返回值没有赋值给任何变量,参数s没有改变也不会被改变 
    2.方法的返回值赋值给了k所以k的值是方法And计算两个参数相加的结果
      

  6.   

    如果把第一个改为 System.out.println(change1(s)); 
    你就知道是怎么回事了