黑马程序员技术交流社区

标题: 创建完对象,可以用对象调用静态成员吗?还是只能用类名.... [打印本页]

作者: dark_horse_xu    时间: 2014-10-2 15:25
标题: 创建完对象,可以用对象调用静态成员吗?还是只能用类名....
本帖最后由 dark_horse_xu 于 2014-10-3 00:01 编辑

如题!!创建完对象,可以用对象调用静态成员吗?还是只能用类名调用????
PS:对象无法更改静态成员变量的值吗?例如 static String country = "CN"; Person   p = new Person(); p.country = "USA";



作者: 水竹    时间: 2014-10-2 15:27
都行   
作者: liu951753xz    时间: 2014-10-2 15:39
都可以的
作者: 雨下阳光    时间: 2014-10-2 17:11
用对象调也可以,但是直接类名调用不是更方便吗?
作者: 朴日男    时间: 2014-10-2 20:37
对象当然可以调用静态成员了,修饰成static 也可以用类名直接访问,因为他在类加载时候就已经存在于方法区,
静态修饰的成员变量只要不是被private修饰的就能直接访问,并赋值且修改,
  1. class Person
  2. {
  3.         int age;
  4.         String name;
  5.         static String country = "cn";
  6.         Person(int age,String name)
  7.         {
  8.                 this.age = age;
  9.                 this.name = name;
  10.         }
  11.         public void speak()
  12.         {
  13.                 System.out.println("我叫"+this.name+",今年"+this.age+"岁,"+"我的国籍是"+country);
  14.         }
  15. }
  16. class Temp2
  17. {
  18.     public static void main(String[] args)
  19.     {

  20.         Person p = new Person(20,"小五");
  21.                 p.country = "usa";
  22.                 p.speak();
  23.     }
  24. }
复制代码

作者: 光头强    时间: 2014-10-2 21:22
可以用对象调用静态成员的  毕老师在视频中讲过的 .
作者: dark_horse_xu    时间: 2014-10-3 00:00
朴日男 发表于 2014-10-2 20:37
对象当然可以调用静态成员了,修饰成static 也可以用类名直接访问,因为他在类加载时候就已经存在于方法区, ...

嗯。明白了。谢谢了!!
作者: dark_horse_xu    时间: 2014-10-3 00:01
谢谢。所有回答问题的朋友,问题解决了。
作者: 838598737    时间: 2014-10-6 20:24
class Demo3
{
        public static void main(String[] args){
                Car car =new Car();
                car.a+=1;
                System.out.println(car.a);
        }

}

class Car
{
          public static int a=1;

}

如上面代码所示,是可以调用到static的字段的。
static的函数或者是字段是属于类的,而类的而不是属于一个对象的,类中的static行数或者字段是不能调用对象的,应为,类只有一个而字段是有多个的,编译器将不知道调用那个字段
作者: 14年7月想去it    时间: 2014-10-6 20:39
两个方法都行,成员的值也可以更改,成员加final后才不可以修改的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2