前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础学习-static关键字

Java基础学习-static关键字

原创
作者头像
FutureTester
发布2021-12-19 15:43:33
2630
发布2021-12-19 15:43:33
举报
文章被收录于专栏:FutureTesterFutureTester

在类中,用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。

静态属性的访问形式:

  1. 对象名.属性
  2. 类名.属性
  • 它为该类的公用变量,类属性,被该类的所有实例共享,在类被载入时被显式初始化
代码语言:javascript
复制
public class StaticDemo {
    String name = "zhangsan";
    static int age = 30;

    public static void main(String[] args) {
        StaticDemo staticDemo = new StaticDemo();
        //使用对象进行调用
        System.out.println(staticDemo.name);
        System.out.println(staticDemo.age);
        //使用类名进行调用
//        System.out.println(StaticDemo.name);//name无法引用,因为name为非静态变量
//        System.out.println(StaticDemo.age);//age可以引用,age为静态变量
        StaticDemo.age = 80;
        System.out.println(StaticDemo.age); //结果为80
        System.out.println(staticDemo.age);//结果为80

        staticDemo.age = 70;
        System.out.println(staticDemo.age); //结果为70
        System.out.println(StaticDemo.age);//结果为70
    }
}

代码语言:javascript
复制
public class StaticDemo {
    String name = "zhangsan";
    static int age = 30;

    public static void main(String[] args) {
        StaticDemo staticDemo = new StaticDemo();
        //使用对象进行调用
        System.out.println(staticDemo.name);
        System.out.println(staticDemo.age);
        //使用类名进行调用
        System.out.println(StaticDemo.name);//name无法引用,因为name为非静态变量
        System.out.println(StaticDemo.age);//age可以引用,age为静态变量
    }
}
  • 对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享
  • 可以使用“对象.类属性”来调用。一般都是用“类名.类属性”
  • static变量置于方法区中的静态区,成员变量在堆中
  • 静态变量不能定义在静态方法中

static声明的方法为静态方法

代码语言:javascript
复制
访问修饰符 static 返回值类型 方法名(){
}

访问形式:

  1. 对象名.方法名();
  2. 类名.方法名();
  • 不需要对象,就可以调用(类名.方法名)
  • 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员
  • 静态方法不能以任何方式引用thissuper关键字
  • 静态方法可以在非静态方法中调用
代码语言:javascript
复制
public class StaticDemo2 {
    String name = "zhangsan";
    static int age = 30;
    //静态方法
    public static void test(){
        System.out.println("静态方法");
    }
    //普通方法
    public void test2(){
        test(); //静态方法可以在非静态方法中调用
    }

    public static void main(String[] args) {
        StaticDemo2 staticDemo2 = new StaticDemo2();
        staticDemo2.test();
        StaticDemo2.test();
        staticDemo2.test2();
    }
}
  • 静态方法中不能直接调用非静态方法,如果想调用,要使用new方法,但是不能直接new。

如下代码:不能使用这种方式:

代码语言:javascript
复制
public class StaticDemo2 {
    String name = "zhangsan";
    static int age = 30;
    //静态方法
    public static void test(){
        System.out.println("静态方法");
        new StaticDemo2().test2();//使用new方法,错误 错误
    }
    //普通方法
    public void test2(){
        test(); //静态方法可以在非静态方法中调用
    }

    public static void main(String[] args) {
        StaticDemo2 staticDemo2 = new StaticDemo2();
        staticDemo2.test();
        StaticDemo2.test();
        staticDemo2.test2();
    }
}

static可以修饰方法和成员变量

思考:

什么时候需要我们定义static方法?

答:一般工具类中的方法定义为static

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在类中,用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。
  • 用static声明的方法为静态方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档