`
jsbylibo
  • 浏览: 11225 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

static关键字

 
阅读更多

1.类属性和类方法的设计思想

1.1类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。

1.2如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。

2.static,静态的,可以用来修饰属性、方法、代码块(或初始化块)

 

 

package com.atguigu.java;

/*
 * static,静态的,可以用来修饰属性、方法、代码块(或初始化块)
 * 
 * static修饰属性(类变量)
 * 1.由类创建的所有的对象,都共用一个属性
 * 2.当其中一个对象对此属性进行修改,会导致其它对象对此属性的一个调用。
 * vs 实例变量(非static修饰的属性)
 * 3.类变量随着类的加载而加载的。而且独一份
 * 4.静态的变量可以直接通过"类.类变量"形式调用
 * 5.类变量的加载是要早于对象。所以有了对象后可以"对象.类变量"使用,但是"类.实例变量"是不行的。
 * 6.类变量存在于静态域中。
 * 
 * static修饰方法(类方法):
 * 1.随着类的加载而加载,在内存中也是独一份
 * 2.可以直接通过"类.类方法"方式调用
 * 3.内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法;
 * 反之,非静态的可以调用静态的
 *   >静态方法里不可以有this或super关键字的
 * 注:静态的结构(static的属性、方法、代码块、内部类)的生命周期早于非静态的结构,
 * 同时被回收也晚于非静态的。
 */
public class TestSportsMan {
	public static void main(String[] args) {
		SportsMan s1 = new SportsMan("dada", 11);
		SportsMan s2 = new SportsMan("erer", 12);
		s1.name = "sasa";
		s1.nation = "China";
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(SportsMan.nation);
		SportsMan.show();
		s1.show1();
	}
}

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 [age=" + age + ", name=" + name + ", nation=" + nation + "]";
	}

	public void show1() {
		System.out.println("age:" + this.age);
		System.out.println("我是中国人");
	}

	public static void show() {
		// System.out.println("age:"+this.age);
		System.out.println("nation:" + nation);
		System.out.println("我是中国人");
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics