static静态修饰符

目录

前言:

1.静态变量(Static Variables):

2. 静态方法(Static Methods):

3. 静态块(Static Blocks):

4.静态类(Static Classes):

5.静态导入(Static Imports):

6.静态修饰符 :

总结: 


前言:

在Java中,static是一个关键字,被用来创建类的变量和方法。这些静态变量和方法属于类本身,而不是类的任何对象。这意味着,无论我们创建多少类的对象,静态变量和方法都只有一个实例。下面是对Java中static关键字的深入分析:

1.静态变量(Static Variables)

也被称为类变量,它们在所有对象中共享相同的值。静态变量在内存中只有一份拷贝,所以一个对象对它进行的修改会影响到其他所有的对象。

例如:

public class MyClass {  
    public static int staticVar = 0;  
}

在这个例子中,staticVar是一个静态变量,所有的MyClass对象都共享这个变量。


2. 静态方法(Static Methods)

也被称为类方法,它们可以直接通过类名来调用,而不需要创建类的对象。静态方法只能访问静态数据,不能访问实例数据(非静态数据)。

例如:

public class MyClass {  
    public static void staticMethod() {  
        // some code here  
    }  
}

在这个例子中,staticMethod是一个静态方法,我们可以直接通过MyClass.staticMethod()来调用它,而不需要创建MyClass的对象。


3. 静态块(Static Blocks)

静态块是在类加载时执行的代码块。它们常用于初始化静态变量。静态块在类中的位置不影响其执行,它们总是在任何方法、构造函数或块之前执行。

例如:

public class MyClass {  
    static {  
        // this code will be executed first  
    }  
    public MyClass() {  
        // this is the constructor  
    }  
}

4.静态类(Static Classes)

在Java中,我们不能创建一个完全静态的类(即所有的方法都是静态的类),但是我们可以创建一个只包含静态方法和变量的类。这样的类通常被用作工具类,因为它们不需要创建对象就可以使用其中的方法。

5.静态导入(Static Imports)

从Java 5开始,我们可以使用静态导入来直接使用静态方法和变量,而不需要指定类名。例如,如果我们有一个包含静态方法printHello的类HelloUtil,我们可以使用静态导入来直接使用这个方法,而不需要通过类名来调用它。

例如:

import static com.example.HelloUtil.printHello;  
// Now we can use printHello method directly without using class name.  
public class Test {  
    public static void main(String[] args) {  
        printHello();  
    }  
}

6.静态修饰符 :

静态变量内容运行时出现在堆内存的静态存储位置(静态区)

注:静态变量是随着类的加载而加载的,优于对象出现的(意味着静态变量在堆内存出现后,也不一定有new关键字出现创建对象)详情见黑马程序员p121

选取用Static修饰的属性 要是被其他对象共享的

总结: 

  • 注意事项:静态变量和方法虽然方便,但过度使用可能导致代码难以管理和理解。因为静态变量在所有的对象中共享,所以修改它的值会影响到所有的对象。这可能会导致预期之外的副作用和错误。因此,我们应该谨慎地使用静态变量和方法。
  • //static的注意事项

    静态方法只能访问静态变量和静态方法

    非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法

    静态方法中是没有this关键字的==>静态方法中,只能访问静态

            非静态方法可以访问使用

            静态方法中没有this关键字(普通的方法会有隐藏的this关键字,因为一般成员方法不会和成员变量重名)

  • 内存管理:对于静态变量和方法,它们在程序开始运行时就被加载到内存中,直到程序结束运行时才被从内存中移除。因此,它们占用的内存空间比实例变量和方法要大。这也是我们在使用静态变量和方法时需要注意的一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值