A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 dark_horse_xu 于 2014-10-3 00:01 编辑

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


评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

9 个回复

倒序浏览
都行   
回复 使用道具 举报
都可以的
回复 使用道具 举报
用对象调也可以,但是直接类名调用不是更方便吗?
回复 使用道具 举报
对象当然可以调用静态成员了,修饰成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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

回复 使用道具 举报
可以用对象调用静态成员的  毕老师在视频中讲过的 .
回复 使用道具 举报
朴日男 发表于 2014-10-2 20:37
对象当然可以调用静态成员了,修饰成static 也可以用类名直接访问,因为他在类加载时候就已经存在于方法区, ...

嗯。明白了。谢谢了!!
回复 使用道具 举报
谢谢。所有回答问题的朋友,问题解决了。
回复 使用道具 举报
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行数或者字段是不能调用对象的,应为,类只有一个而字段是有多个的,编译器将不知道调用那个字段
回复 使用道具 举报
两个方法都行,成员的值也可以更改,成员加final后才不可以修改的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马