static关键字修饰属性
Posted afangfang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static关键字修饰属性相关的知识,希望对你有一定的参考价值。
static 静态的,可以修饰属性,方法,代码块(或初始化块) , 内部内
非static修饰的属性(实例变量):各个对象各自拥有一套各自的副本
static修饰属性(l类变量):
1.由类创建的所有的对象,都共用一个属性
2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。
3.类变量随着类的加载而加载的。而且独一份
4.静态的变量可以直接通过 “类.类变量” 的形式来调用
5. 类变量的加载要早于对象,所以当有对象以后, 可以 "对象.类变量" 的使用,但是 "类.实例变量" 是不行的
6.类变量存在于静态域
static修饰方法(类方法):
1.随着类的加载而加载,在内存中也是独一份
2. 可以直接通过 "类.类方法" 的方式来调用
3.内部可以调用静态的属性或者静态的方法,而不能调用非静态的,反之非静态的是可以调用静态的
4.静态的方法内不能有 this 或者 super 关键字
注意:静态的结构(static的属性,方法,代码块,内部类)的生命周期要早于非静态的结构,同时回收也要晚于非静态的结构。生命周期比较长
TestSportsMan:
package com.aff.wrapper; public class TestSportsMan { public static void main(String[] args) { SportsMan s1 = new SportsMan("苗苗", 25); SportsMan s2 = new SportsMan("芳芳", 26); s1.name = "文静"; s1.nation = "China"; System.out.println(s1); System.out.println(s2); System.out.println(SportsMan.nation);// 类变量随着类的加载而加载的。而且独一份 // SportsMan.show1();//无法直接调用 SportsMan.show2(); } } class SportsMan { // 实例变量 String name; int age; // 类变量 static String nation; public SportsMan(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "SportsMan [name=" + name + ", age=" + age + ", nation=" + nation + "]"; } public void show1() { System.out.println("我喜欢芳芳"); } public static void show2() { System.out.println("我喜欢苗苗"); } }
输出结果:
SportsMan [name=文静, age=25, nation=China]
SportsMan [name=芳芳, age=26, nation=China]
China
我喜欢苗苗
以上是关于static关键字修饰属性的主要内容,如果未能解决你的问题,请参考以下文章