Java-static关键字修饰变量 方法 初始化块

涎涎原创约 611 字大约 2 分钟...JavaJava

102-Java-static关键字修饰变量&方法&初始化块.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

static: 静态的,该类的所有对象共享。

  • static关键字
    • static可以修饰的元素
示例      Chinese.java
class Chinese {
    String name;
    static String country;//属性
    String age;
    static{//代码块
        System.out.println("你好!");
    }
    static void sing(){//方法
        System.out.pringln("北京欢迎你!");
    }
}
  • 需要注意的问题

    • 只能修饰类成员,不能修饰局部变量。
  • 静态变量

    • 所有对象共享
      • 也称为类变量
    • 用static修饰的成员变量,它们在类被载入时创建,只要类存在,static变量就存在(参考java虚拟机视频)
    • 两种方式访问:
      • 直接访问:类名.属性;
      • 实例化后访问:对象名.属性

示例代码:

package static关键字;

public class Order {
	
//	public static Order() {//static 不能修饰构造方法
//	 
//	}

	/**
	 * 所有静态变量,通过类名,变量名可以调用Order.count;
	 * 也可以通过该类的实例化对象来访问到o1.count;
	 */
	static int count = 0;//订单的数量
	public Order() {
		count++;
	}
	/**
	 * 类加载器将Order.class加载进内存时,
	 * 会执行静态初始化块,并且只执行一次
	 */
	static {
		System.out.println("static{}");
	}
	
	/**
	 * 所有静态方法,通过类名,方法名可以调用Order.sort();
	 * 也可以通过该类的实例化对象来访问到o1.sort();
	 */
	static void sort(Order[] orders) {
		
		//id++;//不行 static方法不能访问非静态属性
		//getId();//不行 static方法不能访问非静态方法
		System.out.println("sort(Order[] orders)");
	}
	
	private int id;//订单的单号

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}
package static关键字;

public class Test {

	public static void main(String[] args) {

		Order o1 = new Order();
		
		Order o2 = new Order();
		
		Order o3 = new Order();
		
		System.out.println(Order.count);//3
		System.out.println(o1.count);//3
		System.out.println(o2.count);//3
		System.out.println(o3.count);//3
		
		Order.sort(new Order[3]);//sort(Order[] orders)
		o1.sort(new Order[3]);//sort(Order[] orders)
		o2.sort(new Order[3]);//sort(Order[] orders)
		o3.sort(new Order[3]);//sort(Order[] orders)
	}
}

分割线


相关信息

以上就是我关于 Java-static关键字修饰变量&方法&初始化块 知识点的整理与总结的全部内容,另附源码open in new window

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4