好象 变量不加修饰符,java中是自动定为 private的吧. 一个private的变量应该是不能直接被它的对象来访问的. public String str; 改一下看看呢

解决方案 »

  1.   

    public class Hello {
    String str;
    public Hello(String s){
     String str=s;
    System.out.println(s);
    }
    char c;
    public static void main(String args[]) {
      Hello sri = new Hello("aaa");
        System.out.println("sri.str = " + sri.str);
        
    }
    }
      

  2.   

    public class E15_StringRefInitialization {
    String str="";
    public E15_StringRefInitialization(String s){
    str=s;
    }public static void main(String args[]) {
      E15_StringRefInitialization sri =
        new E15_StringRefInitialization("aaa");
        System.out.println("sri.str = " + sri.str);}
    }
      

  3.   

    你声明了两个变量,一个在类里面,一个在方法里面,而你复值是给方法中的变量赋值,输出的时候是类中的那个变量,当然是空值了,帮你改了下。public class E15_StringRefInitialization {
    String str;
    public E15_StringRefInitialization(String s){
      str=s;
    }
    char c;
    public static void main(String args[]) {
      E15_StringRefInitialization sri =
        new E15_StringRefInitialization("aaa");
        System.out.println("sri.str = " + sri.str);
        
    }
    }
      

  4.   

    String str=s;改成
    str =s ;
    纠正一楼的错误
    不加修饰符,不是private 是属于friendly 至于和public private protected 有什么不同你可以找本书看看
      

  5.   

    我帮你修改一下,不知道会不会是错的。
    public class E15_StringRefInitialization 
    {
    String str;
    public E15_StringRefInitialization(String str)
    {
           this.str=str;
    }
    char c;
    public static void main(String args[])
    {
      E15_StringRefInitialization sri = new E15_StringRefInitialization("aaa");
      System.out.println("sri.str = " + sri.str);
    }

      

  6.   

    public E15_StringRefInitialization(String s){
     String str=s;
    }
    ------------------------------------因为你的构造函数只是给该函数内的局部变量赋值
    而不是对E15_StringRefInitialization类的str属性赋值
      

  7.   

    public class E15_StringRefInitialization {
    String str;
    public E15_StringRefInitialization(String s){
     String str=s;//其实你在构造器中又声明了一个方法内的局部变量str,你对其赋值为s,这个变量并不是先前你定义的类变量str,你可以用this.str=s将s赋给类变量
    }
    char c;
    public static void main(String args[]) {
      E15_StringRefInitialization sri =
        new E15_StringRefInitialization("aaa");
        System.out.println("sri.str = " + sri.str);//sri.str中的str是类变量str
        
    }

      

  8.   

    public E15_StringRefInitialization(String s){
     String str=s;
    }
    构造函数中定义str为局部变量,不是你一开始定义的str了,把前面的String去掉就可以!