java中的static关键字(详解)

java中的static关键字(详解)

static 关键字的几种常见用法:

1.修饰成员变量

一起来看一下代码中的例子:

public class javaSe0217 {
     int age;
    String name;

    @Override
    public String toString() {
        return name+"==>"+age;
    }

    public static void main(String[] args) {
        javaSe0217 p1=new javaSe0217();
        p1.name="琪琪";
        p1.age=10;
        javaSe0217 p2=new javaSe0217();
        p2.name="哈哈";
        p2.age=20;
        System.out.println(p2);
        System.out.println(p1);

    }
}

运行结果为:
在这里插入图片描述
其内存布局为:
在这里插入图片描述
从上面的内存布局可以知道P1和P2的引用分别对应堆区的两个对象,两者之间互不干扰,所有的成员属性由每个对象持有。但是两者共享toString()方法!

加上Static关键字后:

package javaSe0204;

public class javaSe0217 {
    static int age;
    String name;

    @Override
    public String toString() {
        return name+"==>"+age;
    }

    public static void main(String[] args) {
        javaSe0217 p1=new javaSe0217();
        p1.name="琪琪";
        p1.age=10;
        javaSe0217 p2=new javaSe0217();
        p2.name="哈哈";
        p2.age=20;
        System.out.println(p1);
        System.out.println(p2);


    }
}

运行结果为:
在这里插入图片描述
其内存布局为:
在这里插入图片描述

从内存布局可以知道,成员变量加上Static关键字后,这个属性变成类所持有的,跟对象无关,此时这个属性就是跟类相关,由所有的对象共享!

2.修饰成员方法

static修饰成员方法的用法比较简单,可以通过类.方法名进行调用,这样节省了创建对象的开销!通过代码来感受一下:

public class javaSe0217 {
    static int age;
    String name;

    @Override
    public String toString() {
        return name+"==>"+age;
    }
    public static  void eat(String name){
        System.out.println(name+"正在吃饭!");
    }

    public static void main(String[] args) {
        javaSe0217 p1=new javaSe0217();
        p1.name="琪琪";
        p1.age=10;
        javaSe0217.eat(p1.name);//通过类直接调用
        javaSe0217 p2=new javaSe0217();
        p2.name="哈哈";
        p2.age=20;
        p2.eat(p2.name);//通过对象调用
    }
}

运行结果为:
在这里插入图片描述

需要注意的是,在static修饰的方法中调用没有用static修饰的方法需要依托对象,否则就不能就会报错,可以加上static关键字即可!

3.静态代码块

参考里面的初始化顺序即可!

4.静态导包

我们一下面一段代码为例:

package javaSe0204;
public class Test {
    static void print(){
        System.out.println("O");
    }
}
package javaSeWork;
import static javaSe0204.Test.*;
public class jinTai {
    public static void main(String[] args) {
        print();
    }
}

运行结果为:
在这里插入图片描述

上面的代码来自于两个java文件,其中的Test很简单,包含了一个用于打印的static方法。而在jinTai文件中,我们首先将Test类导入,这里在导入时,我们使用了static关键字,而且在引入类的最后还加上了**“.*”**,它的作用就是将Test类中的所有类方法直接导入。不同于非static导入,采用static导入包后,在不与当前类的方法名冲突的情况下,无需使用“类名.方法名”的方法去调用类方法了,直接可以采用"方法名"去调用类方法,就好像是该类自己的方法一样使用即可。

总结:

static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:

  1. 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;这里可以理解成类独有的一份,如果那个对象修改了其属性,之前的对象给这个属性的赋值操作就也跟着改变了!
  2. 用来修饰成员方法,将其变为类方法,可以直接使用**“类名.方法名”**的方式调用,常用于工具类;
  3. 静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;其中要注意的是静态代码块只在类加载的时候执行一下,且只会执行一遍!!
  4. 静态导包用法,将类的方法直接导入到当前类中,从而直接使用**“方法名”**即可调用类方法,更加方便。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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 关键字主要用于在类级别上创建变量和方法。它可以让你在不创建类的实例的情况下,直接访问类的成员变量和成员方法,或者在类的实例之间共享变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值