package learning.java.keyword.Static;
public class StaticUsage {
//记录static的用法
/*声明为static的方法有如下限制
* 它们仅能调用其他的static 方法。
* 它们只能访问static数据。
* 它们不能以任何方式引用this 或super。
* 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
*/
static void test(){
System.out.println("我是一个静态方法");
}
//--------------------------------------------
/*声明一个静态变量
* 该类所有的实例变量共用同一个static变量,只分配一块存储空间
*/
static int a = 1;
//---------------------------------------------------
/*
* static块在类初始化的时候执行一次。
* Java虚拟机(JVM)加载类时,就会执行该代码块。
*/
static{
a = 2;
}
//-------------------------------------------------
/*通常一个普通类不允许声明为静态的,只有一个内部类才可以。
* 这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
*/
static class s{
s(){
System.out.println("我是一个静态内部类,只有内部类才能是静态的");
}
}
//-----------------------------------------------
/*
* static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
*/
static final int b = 1;
public static void main(String[] args) {
StaticUsage.test();//无需本类的对象就能够调用静态方法,简直太方便了,java中大量的静态方法作为其他类的工具而存在
System.out.println(a);
//b = 2;无法改变b的值
System.out.println(b);
}
}
package learning.java.keyword.Static;
public class StaticUsage {
//记录static的用法
/*声明为static的方法有如下限制
* 它们仅能调用其他的static 方法。
* 它们只能访问static数据。
* 它们不能以任何方式引用this 或super。
* 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
*/
static void test(){
System.out.println("我是一个静态方法");
}
//--------------------------------------------
/*声明一个静态变量
* 该类所有的实例变量共用同一个static变量,只分配一块存储空间
*/
static int a = 1;
//---------------------------------------------------
/*
* static块在类初始化的时候执行一次。
* Java虚拟机(JVM)加载类时,就会执行该代码块。
*/
static{
a = 2;
}
//-------------------------------------------------
/*通常一个普通类不允许声明为静态的,只有一个内部类才可以。
* 这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
*/
static class s{
s(){
System.out.println("我是一个静态内部类,只有内部类才能是静态的");
}
}
//-----------------------------------------------
/*
* static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
*/
static final int b = 1;
public static void main(String[] args) {
StaticUsage.test();//无需本类的对象就能够调用静态方法,简直太方便了,java中大量的静态方法作为其他类的工具而存在
System.out.println(a);
//b = 2;无法改变b的值
System.out.println(b);
}
}