欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中的static关键字

程序员文章站 2022-04-03 17:14:30
...

java中的static关键字

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

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

2.static的使用
使用范围:
在Java类中,可用static修饰属性、方法、代码块、内部类

被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用

class Circle {
	private double radius;
	public static String name = "这是一个圆";
	public static String getName() {
		return name;
	}
	public Circle(double radius) {
		this.radius = radius;
	}
	public double findArea() {
		return Math.PI * radius * radius;
	}
	public void display() {
		System.out.println("name:" + name + "radius:" + radius);
	}
}
public class StaticTest {
	public static void main(String[] args) {
		Circle c1 = new Circle(2.0);
		Circle c2 = new Circle(3.0);
		c1.display();
		c2.display();
	}
}

3.类变量
类变量(类属性)由该类的所有实例共享
java中的static关键字

class Person {
	private int id;
	public static int total = 0;
	public Person() {
		total++;
		id = total;
	}
	public static void main(String args[]){
		Person Tom=new Person();
		Tom.id=0;
		total=100; //  不用创建对象就可以访问静态成员
	}
}
public class StaticDemo {
	public static void main(String args[]) {
		Person.total = 100; //  不用创建对象就可以访问静态成员
		// 访问方式:类名. 类属性 , 类名. 类方法
		System.out.println(Person.total);
		Person c = new Person();
		System.out.println(c.total); // 输出101
}}

4.类变量 vs 实例变量内存解析
java中的static关键字
5.类方法
没有对象的实例时,可以用 类名. 方法名()的形式访问由static修饰的类方法。

在static 方法内部只能访问类的 的static 修饰的属性或方法, 不能访问类的非 static 的结构。

java中的static关键字 因为不需要实例就可以访问static 方法,因此static 方法内部不能有this 。(也不能有super ? YES!)

static修饰的方法不能被重写

class Person {
	private int id;
	private static int total = 0;
	public static void setTotalPerson(int total){
		this.total=total; //非法,在static方法中不能有this,也不能有super
}
	public Person() {
		total++;
		id = total;
	}}
public class PersonTest {
	public static void main(String[] args) {
		Person.setTotalPerson(3);
} }

6.static的应用场景
属性是可以被多个对象所共享的,不会随着对象的不同而不同。

操作静态属性的方法,通常设置为static的
工具类中的方法,习惯上声明为static的。比如:Math,Arrays,Collections