美文网首页Java干货分享
不是我打击你,你可能真的不会用Java中的static

不是我打击你,你可能真的不会用Java中的static

作者: 淡定_蜗牛 | 来源:发表于2019-09-25 10:30 被阅读0次

静态可以是:

  1. 静态变量
  2. 静态方法
  3. 静态代码块

我们先来看一下静态变量和静态方法。

什么是Java中的静态变量?

Java中的静态变量是变量,属于类,并且在执行开始时仅初始化一次。

  • 它是属于类的变量而不是对象(实例)
  • 静态变量仅在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量
  • 要由类的所有实例共享的单个副本
  • 静态变量可以由类名直接访问,不需要任何对象

句法:

<class-name>.<variable-name>

什么是Java中的静态方法?

Java中的静态方法是属于类而不是对象的方法。静态方法只能访问静态数据。

  • 它是属于类的方法而不是对象(实例)
  • 静态方法只能访问静态数据。它无法访问非静态数据(实例变量)
  • 静态方法只能调用其他静态方法,不能从中调用非静态方法。
  • 静态方法可以通过类名直接访问,不需要任何对象
  • 无论如何,静态方法不能引用“this”或“super”关键字

句法:

<class-name>.<method-name>

注意: main方法是静态的,因为在任何实例化发生之前,应用程序必须可以访问它。

让我们通过做一些练习来了解静态关键词的细微差别!

示例:如何调用静态变量和方法

步骤1)

将以下代码复制到编辑器中

public class Demo {
    public static void main(String args[]) {
        Student s1 = new Student();
        s1.showData();
        Student s2 = new Student();
        s2.showData();
        //Student.b++;
        //s1.showData();
    }
}

class Student {
    int a; //initialized to zero
    static int b; //initialized to zero only when class is loaded not for each object created.

    Student() {
        //Constructor incrementing static variable b
        b++;
    }

    public void showData() {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
    //public static void increment(){
    //  a++;
    //}

}

步骤2)保存并编译代码。运行代码为java Demo

步骤3)

预期输出如下所示

image

下图显示了如何创建引用变量和对象,以及不同实例访问静态变量。

image

步骤4)可以使用语法ClassName.Variable_Name从类外部访问静态变量。取消注释第7和8行。保存,编译和运行。观察输出。

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

步骤5)取消注释第25,26和27行。保存,编译和运行。

     error: non-static variable a cannot be referenced from a static context a++; 

第6步)错误=?这是因为无法从java静态类方法“ increment ” 访问实例变量“ a ”。

Java静态块

静态块是Java类中的语句块,它将在类首次加载到JVM时执行

class Test{
    static {
        //Code goes here
    }
}


一个静态块有助于初始化静态数据成员,就像构造有助于初始化实例成员

以下程序是java静态块的示例。

示例:如何访问静态块


public class Demo {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
    public static void main(String args[]) {

        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);

    }
}

您将获得该程序的以下输出。

Value of a = 10
Value of b = 20

相关文章

  • 不是我打击你,你可能真的不会用Java中的static

    静态可以是: 静态变量 静态方法 静态代码块 我们先来看一下静态变量和静态方法。 什么是Java中的静态变量? J...

  • 腾讯工作近十年大佬:不是我打击你!你可能真的不会写java

    腾讯工作近十年大佬:不是我打击你!你可能真的不会写java 本文较长,但小编希望你可以耐心的读完!请看到最后!你不...

  • java - 关键字 static

    一 static 代表着什么 在 java 中,static 表示静态的意思,并不是全局的意思,在 java 中不...

  • Java中的static和final

    java中的static和final 此篇文章是记录我在学习Java中static和final关键字的笔记。 st...

  • 2018-12-12

    不是看不起你,你可能真的不如她 初见安安,和我想象中的她完全不一样,原以为经受这么多的打击一定会是内向敏感脆弱,和...

  • java面试问题总结与分享,很乱

    java中static关键字的作用 在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员...

  • 【JAVA】Java中的static

    0x01 static的作用 static代表它修饰的那个东西是属于整个类的。 0x02 static的特点 st...

  • Kotlin学习2

    1.Kotlin中static在kotlin中 没有static关键字,但是有类似java中static的用法例如...

  • 1.3 static 关键字

    static 关键字 《Java编程思想》 中:static方法就是没有this的方法 static 修饰的方法或...

  • Java中的static

    1、 static在java中到底代表什么,为何要用它? static――静态――“指定位置“ 首先,我们来看看j...

网友评论

    本文标题:不是我打击你,你可能真的不会用Java中的static

    本文链接:https://www.haomeiwen.com/subject/cnzcyctx.html