当前位置: 代码迷 >> Java相关 >> 求java小程序的讲授
  详细解决方案

求java小程序的讲授

热度:52   发布时间:2016-04-22 21:07:23.0
求java小程序的讲解
 class test {
public static void main(String[]args)
{
String s1 = "java";
String s2 = "hello";
method_1(s1,s2);
System.out.println(s1+"...."+s2);

StringBuilder s11 = new StringBuilder("java");
StringBuilder s22 = new StringBuilder("hello");
method_2(s11,s22);
System.out.println(s11+"-----"+s22);

}
    public static void method_1(String s1,String s2)
    {
     s1.replace('a','k');
     s1=s2;
    }
    public static void method_2(StringBuilder s1,StringBuilder s2)
    {
     s1.append(s2);
     s1=s2;
    }
}

------解决方案--------------------

public static void main(String[]args) {
    String s1 = "java";
    String s2 = "hello";
    // 传递s1,s2的拷贝到method_1方法
    // 由于s1 和 s2 均为字符常量,故method_1里面的操作不会对外部的s1,s2造成任何影响
    method_1(s1,s2); 
    System.out.println(s1+"...."+s2); 

    StringBuilder s11 = new StringBuilder("java");
    StringBuilder s22 = new StringBuilder("hello");
    // 传递s11,s22的拷贝到method_2方法
    method_2(s11,s22);
    // s11 在方法内被修改为了javahello,s22 依然为hello
    System.out.println(s11+"-----"+s22);
    }
    
    // 此方法内的操作,操作的均为s1 和 s2 的拷贝
    public static void method_1(String s1,String s2){
         // 将a替换为k s1 为jkvk,但replace返回的是新字符串
         // 故此操作不会对s1 造成影响 s1 仍为 java 
         s1.replace('a','k'); 
         s1=s2; // 将s2的值赋给s1, s1 和 s2 同为 hello 
    }
    
    // 此方法内的操作,操作的均为s11 和 s22 的拷贝
    public static void method_2(StringBuilder s1,StringBuilder s2) {
        // s11的拷贝所指的对象后面添加字符hello,s11的拷贝即s1 为javahello
        s1.append(s2); 
        // 将s11的拷贝指向s22的拷贝,此时s11便不再影响s1了。
        // s11的拷贝 重新指向s22的拷贝所指的对象,s11的拷贝 和 s22的拷贝同为 hello
        s1=s2;  
    }