java - 静态方法 vs 非静态方法 java 更好的理解

标签 java

我还是不能完全理解这个静态和非静态。

public static void  main(String args[]){

    staticClass.setString("hey there");
    System.out.println(staticClass.getString2());
    //expecting to be blank
    NonStaticCalling nonStaticCalling = new NonStaticCalling();
}

static String aw = "";
public static void setString(String a){
    aw =a;
}

public String getString(){
    return aw;
}

public static String getString2(){
    return aw;
}


public class NonStaticCalling {
    staticClass staticClass = new staticClass();
    public NonStaticCalling(){
        staticClass.getString();
        System.out.println(staticClass.getString());
    }
}

如果我理解正确的话。我声明一个新对象非静态调用。所以我假设该类的输出值为“”(空白)

有人能给我一个更好的例子吗?谢谢

最佳答案

当设置静态变量时,该变量对于该类的所有实例都是相同的。静态变量也称为“类变量”。我认为您的困惑实际上更多地是关于变量而不是方法。以这个没有静态变量的例子为例。 “name”对于“myName”类的所有实例都是相同的(抱歉应该将其设为大写,因为它是一个类名)。

public class myName {
  public static String name;
  public void setName(String newName) {
    name = newName;
  }
  public String getName() {
    return name;
  }
  public static void main(Strings args[]) {
     myName first = new myName();
     myName second = new myName();
     first.setName("hello");
     System.out.println(second.getName());  //prints hello
  }
}

关于java - 静态方法 vs 非静态方法 java 更好的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20365060/

相关文章:

java - Android Java AppCompatTextView 无法转换为 LinearLayout

java - 想要将 Java 堆大小增加到 4GB+ : Physical Memory 8 GB, JVM 64 位

java - 覆盖 @autowired/@Inject Map<String,Object> 的键字符串?

Java:如何使滚动条以恒定速度滚动?

java - ExceptionInInitializerError : code size limit exceeded when loading a DLL in JNA

java - 如何在 Vaadin Flow 图表中应用 VaadinIcons 作为标记符号?

java - 基于多个参数的对象列表排序

java - Android:重写更高 API 级别的方法

java - Android onClickListener - Android Studio 错误还是我自己的错误?

java - JSON 数组不是从流创建的