static详解

static详解

1、静态变量

public class Test {
    private int age=19;
    private static String name="cqw";
/*
private是私有的意思,不加也没影响,加了是只在这个类里面和在继承关系
里可用(继承即extants,在我博客前面有发过关于继承的详细解释)
*/
    public static void main(String[] args) {
        
        System.out.println(Test.name);
        Test test = new Test();
        System.out.println(test.age);
        
        System.out.println(new Test().age);
/*
  当我们在主函数里要调用Test的静态变量name时,并不需要使用new,
  直接Test.name.sout就可以输出,这叫类名访问,但是当我们要选择
  动态变量时我们必须使用new,这是其中一个区别  推荐使用类名访问
  
  (注意我们对单一一个变量并不一定要写得那么复杂,使用快捷写法
     new Test().age    就可以调用类变量了)
*/
    }

}

下面的对方法的调用也是一样的意思

public class Test {
       public static void main(String[] args) {
      go();           
      new Test().run();/*同时跑了run、come和go方法*/   
     }
    
    
    public static void go(){
        System.out.println("go");
    }
     public void come(){
        System.out.println("run");
    }
    
    public void run(){
        System.out.println("run");
        come();
        go();
    }
    
}
/*
非静态方法可以调用->非静态方法和静态方法
静态方法可以调用->静态方法
如果静态调用非静态则要new
注意主函数本身也是静态方法,所以可以调用go方法
这是类加载机制的问题,在以后会发的博客注解和反射里会详细讲解
*/

2、静态代码块

public class Test1 {
    {
     System.out.println("匿名代码块");    
    }
     /* 
     只有一个括号没有前缀叫匿名代码块,创建类的时候就自动创建了
     而且在构造器之前
     */  
    static {
      System.out.println("静态代码块");
    }
     /*
     静态代码块,类一加载就执行并且永久只执行一次
     */
    
    /*让我们来看看运行先后顺序*/
     public Test1() {
        System.out.println("构造方法");
    }
     public static void main(String[] args) {
       Test1 test1 = new Test1();
       System.out.println("++++++++++++++++++++++");  
       Test1 test2 = new Test1();
    }
}
/*
输出结果:
静态代码块
匿名代码块
构造方法
++++++++++++++++++++++
匿名代码块
构造方法

可以看到,静态只执行了一次
*/

静态代码块主要运用于赋初始值

3、静态倒入包

这被用的比较少

首先看一个Math类里的参数PI

在这里插入图片描述

/*如果导入静态包的写法   (import是用于导入包的)*/
import static java.lang.Math.PI;

public class Test1 {
 public static void main(String[] args) {
       System.out.println(PI);   
 }
 }

/*如果不导入包的写法*/
public class Test1 {
public static void main(String[] args) {
       System.out.println(Math.PI);   
 }
 }

所以区别就是。。。em。。。哈哈,就是在本类里面需要大量引用时少写了一个

如Math. 这样的前缀

所以很少被用。。

另外提一个无关本题目的点:通过final修饰的类不能被继承(突然看到上面PI那有个final,提一下)

Java 中,static 是一个关键字,它可以用来修饰类、方法和变量。这里将详细介绍 static 的用法。 1. 修饰类 当 static 修饰一个类时,它意味着这个类是静态的,也就是说,这个类的所有成员都是静态的,包括它的成员变量和成员方法。这意味着,你可以在不创建类的实例的情况下,直接访问这个类的成员变量和成员方法。例如: ``` public class MyClass { public static int myStaticVariable = 10; public static void myStaticMethod() { System.out.println("This is a static method."); } } // 访问静态变量和静态方法 int x = MyClass.myStaticVariable; MyClass.myStaticMethod(); ``` 2. 修饰方法 当 static 修饰一个方法时,它意味着这个方法是静态的,也就是说,这个方法属于类而不是属于实例。这意味着,你可以在不创建类的实例的情况下,直接调用这个方法。例如: ``` public class MyClass { public static void myStaticMethod() { System.out.println("This is a static method."); } } // 调用静态方法 MyClass.myStaticMethod(); ``` 3. 修饰变量 当 static 修饰一个变量时,它意味着这个变量是静态的,也就是说,这个变量属于类而不是属于实例。这意味着,所有这个类的实例都共享这个变量,也就是说,如果你修改了这个变量的值,那么所有实例都会受到影响。例如: ``` public class MyClass { public static int myStaticVariable = 10; } // 修改静态变量的值 MyClass.myStaticVariable = 20; ``` 总之,static 关键字主要用于在类级别上创建变量和方法。它可以让你在不创建类的实例的情况下,直接访问类的成员变量和成员方法,或者在类的实例之间共享变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值