静态的引入:
为什么会引入静态的概念呢?
通过代码测试,我们在创建对象的时候,利用有参构造进行赋值的时候,姓名和年龄是变化的,而国家是不变的。如果照目前的做法来写的话,造100个对象,就得占用400个字节的空间。这个时候,就太浪费了内存空间了,如果我们想办法用一个让他们都具备这个值就好了。也就是说,这100个对象共用这一个空间-------“中国”。
为了满足这样的要求,java就提供了一个关键字,static。
Static是一个关键字,可以修饰成员变量和成员方法。
特点:
A:随着类的加载而加载
B:优先于对象存在,静态方法不能使用this关键字
C:静态方法是可以通过类名直接调用的,非静态的内容必须通过对象调用。
静态的内容可以通过对象调用,也可以通过类名调用,推荐使用类名调用。
D:静态的内容是被所有对象共享的。
举例: 饮水机和水杯,教师和学生。前者都是被共享的。
静态方法只能访问静态变量或者静态方法。(静态只能访问静态)
错误:无法从静态上下文引用非静态变量xxx。
原因:因为在静态方法中使用了非静态的变量或者方法。
那么既然无法直接通静态方法调用非静态方法,若想调用,采取什么途径呢?
此时只能通过创建对象,用对象调用非静态方法。