1,static 修饰的常量为静态常量,该常量属于该类【注意不是对象,因为没有创建该类的对象也能使用它】,该常量只会在类第一次加载的时候生成,被jvm分配内存空间。举个生活中的例子,我有一张银行卡,我去超市,商场,食堂都是需要这一张银行卡消费,那么这张银行卡就可以是一个静态常量【然后因为这个银行卡我不想信息能被更改,使用final修饰,那么就是一个不变的常量】
上代码 :
对象我自己
public interface People {
public static final String CardNo="1234567"; //使用static能保证被其他人即使不生成对象也难访问
//使用final能保证银行卡信息的全员共享是一样的,不被修改
}
超市
public class SuperMarket implements People{
{
System.out.println("超市使用的银行卡:"+People.CardNo);
}
}
商场
public class Market implements People {
{
System.out.println("商场使用的银行卡:"+People.CardNo);
}
}
食堂
public class Canteen implements People {
{
System.out.println("食堂使用的银行卡:"+People.CardNo);
}
}
消费
public class Constant {
public static void main(String[] args) {
SuperMarket superMarket = new SuperMarket();
Market market = new Market();
Canteen canteen = new Canteen();
}
}
生成结果:

2,static修饰方法
static修饰的方法也是会在类第一次加载的时候加载,
test1类
public class Test1 {
public Test1() {
System.out.println("test1的构造方法");
}
{
System.out.println("test1的初始化");
}
static {
System.out.println("test1的静态常量的加载");
}
}
test2类
public class Test2 extends Test1 {
public Test2() {
System.out.println("test2的构造方法");
}
{
System.out.println("test2的初始化");
}
static {
System.out.println("test2的静态常量的加载");
}
}
test3类
public class Test3 extends Test2 {
public Test3(){
System.out.println("test3的构造方法");
}
{
System.out.println("test3的初始化");
}
static {
System.out.println("test3的静态常量的加载");
}
}
测试类
public class StaticTest {
public static void main(String[] args) {
Test3 test3 = new Test3();
System.out.println("----------------------");
Test2 test2 = new Test2();
}
}
测试结果
本文通过实例讲解了Java中static修饰的常量和方法的特性。静态常量在类加载时即被初始化,全局唯一且不可变,如银行卡号。static方法也随着类的加载而加载,不依赖于对象实例。示例代码展示了多个类如何共享同一静态常量,并通过main方法执行验证了类加载顺序和静态块的执行。
2162

被折叠的 条评论
为什么被折叠?



