首页 > 解决方案 > dName 应该显示“Beta”,但由于某种原因它显示“kamran2”,为什么?

问题描述

我正在练习静态类和数据成员。我创建了一个静态字符串(名称)并以 2 种不同的方法为其赋值。一个是行走(非静态),另一个是说话(静态)。现在在我调用“dName”的主方法中,它应该给我在“说话”方法中启动的值,但它没有给我那个值。

class Human{
        int age;
        double height;
        static String name;
        
        public void walking(){
            System.out.println("This person can walk");
            name = "Alpha";
        }
        
        public static void talking(){
            System.out.println("This person can talk");
            name = "Beta";
        }
    }
    
    public class MyClass {
        public static void main(String args[]) {
          Human kamran = new Human();
          Human adnan = new Human();
          
          kamran.name = "kamran";
          adnan.name = "kamran2";
          
          String dName = kamran.name;
          
          kamran.walking();
          kamran.talking();
          
          
          System.out.println(adnan.name);
          System.out.println(dName);
        }
    }

标签: javaconstructor

解决方案


不,因为您在执行方法之前分配了值。

public static void main(String args[]) {
      Human kamran = new Human();
      Human adnan = new Human();
      
      kamran.name = "kamran";
      adnan.name = "kamran2";
        String dName = kamran.name;
      kamran.walking();
      kamran.talking();
      
      
      System.out.println(adnan.name);
      System.out.println(dName);
}

推荐阅读