HTML5技术

【java】关于java类和对象,你想知道的在这里! - 外婆的彭湖湾(5)

字号+ 作者:H5之家 来源:H5之家 2017-09-17 14:05 我要评论( )

public class People { private String name; peopleTotal = 0 ; // 和上面的例子不同,这里的静态变量是私有的 public People (String name) { this .name = name; peopleTotal ++; // 每次调用构造函数时候,使得

public class People {    private String name;      peopleTotal = 0; // 和上面的例子不同,这里的静态变量是私有的    public People (String name) {    this.name = name;    peopleTotal++; // 每次调用构造函数时候,使得类的peopleTotal静态变量加1    }    getPeopleTotal () {    return peopleTotal; // 通过静态方法访问私有静态变量    } }

 

Test.java:

public class Test {    main(String args []) {      People people1 = );      People people2 = );      People people3 = );      System.out.print(People.getPeopleTotal()); // 输出peopleTotal    } }

 

 

结果 输出3

 

静态方法的各种性质和静态变量类似,它也是隶属于类而不是对象

 

上面我们都在强调一点,静态变量, 静态方法隶属于类而不是对象,那么你可能会因此问几个问题:

 

1.对象能够访问静态变量和静态方法吗? (静态变量/方法是否一定要由类调用?)

2.类内定义的实例方法能访问静态变量吗? (类内的静态变量是否一定要由静态方法调用?)

 

下面我将对这两个问题一一解答:

对象能够访问静态变量和静态方法吗?

可以!

实际上,你可以用对象访问静态变量或方法,但你最好不要这样做,因为这容易造成混淆,具体一点说是混淆我们对“静态”的认知,实际上和对象毫无关系的静态变量用对象来调用,会造成我们在理解上的一种矛盾,这降低了程序的可读性。 用类名调用静态方法才是建议的操作

 

// 虽然能达到相同效果但不要这么做!! Test.java public class Test {    main(String args []) {      People people1 = );      People people2 = );        People people3 = );      System.out.print(people1.getPeopleTotal()); // 用people1对象调用了静态方法    } }

 

 

类内定义的实例方法能访问静态变量吗?

(类内的静态变量是否一定要由静态方法调用?)

可以!

答案当然是可以的,但请注意,如果一个方法仅仅只使用到静态变量(例如我们这个例子),那它应该作为一个静态方法,而不是实例方法,原因和上面相同,这容易混淆我们对于静态变量的认知

 

// 虽然能达到相同效果但不要这么做!! People.java: public class People {    private String name;      peopleTotal = 0;    public People (String name) {    this.name = name;    peopleTotal++; // 每次调用构造函数时候,使得类的peopleTotal静态变量加1    }    public  int getPeopleTotal () {    return peopleTotal; // 通过实例方法访问私有静态变量    } }

 

Test.java:

public class Test {    main(String args []) {      People people1 = );      People people2 = );            People people3 = );      System.out.print(people1.getPeopleTotal()); // 用people1对象调用了实例方法!!    } }

 

【注意】上面说法的前提“一个方法仅仅只使用到静态变量”,如果一个方法不仅仅用到静态变量,情况就不一样了

 

main方法

 

我想每一个写java的筒子们应该都很熟悉的一段代码是public static void main(String args []){ ....}

1.在Java中,main()方法是Java应用程序的入口方法

2. java规范要求必须写成public static void main(String 字符串 []){ ....}的形式

除了字符串数组名称可以任意取,static,void和参数一律不可缺少

 

例如我如果省略static就会导致这一段报错:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【Java IO流】字节流和字符流详解 - 云开的立夏

    【Java IO流】字节流和字符流详解 - 云开的立夏

    2017-09-15 15:06

  • this的用法 – JavaScript深入浅出(二) - OkayChen

    this的用法 – JavaScript深入浅出(二) - OkayChen

    2017-09-15 12:00

  • JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    2017-09-14 08:04

  • 大龄程序员肉翻记录【一】 - JavaNerd

    大龄程序员肉翻记录【一】 - JavaNerd

    2017-09-13 09:01

网友点评
'