静态变量与静态方法和静态类之间有什么区别?

时间:2018-10-22 18:17:46

标签: java android performance

我在面试中,面试官问了我这个问题,我不能以他所寻求的正确答案让他满意,需要帮助,谢谢

2 个答案:

答案 0 :(得分:0)

在Java中,static是用于描述如何在内存中管理对象的关键字。这意味着静态对象专门属于该类,而不是该类的实例。变量,方法,类可以是静态的。它们之间的区别与通常一样(变量,方法和类之间的区别)。静态变量(容器,例如int或String),静态方法(存在于内存中并且是类的一部分的方法(可以在没有类Hello.staticMethod()的实例的情况下调用)),静态类有点在Java中独树一帜,请看以下Static Classes In Java

答案 1 :(得分:0)

静态变量是变量:

public static int whatever = 0;

静态方法是一种方法:

public static void whatever() {}

静态类是一个类:

public static class SomeInnerClass {}

(一个类嵌套在另一个类中时,只能具有static修饰符)


可以从任何其他类访问静态变量和方法,并且不与该类的实例绑定。例如,假设您有以下课程:

public class SomeClass {
    public static int myInt = 0;

    public static int add(int one, int two) {
        return one + two;
    }
}

在任何其他类中,您都可以直接访问变量和方法,而无需创建SomeClass的实例:

SomeClass.myInt = 23;
int sum = SomeClass.add(SomeClass.myInt, 2); //this will equal 25

如果变量和方法不是静态的,则必须首先实例化SomeClass,然后引用该实例:

SomeClass someClass = new SomeClass();
someClass.myInt = 23;
int sum = someClass.add(someClass.myInt, 2); //this will equal 25

静态类用于将嵌套类与其父级分离,并删除对该父级实例的依赖性。输入以下代码:

public class ParentClass {
    public class ChildClass {}
}

从另一个(父级的非子级)类中,您可以使用:

ParentCLass parent = new ParentClass();

但是您将无法做到:

ChildClass child = new ChildClass(); //this won't compile if it's not in ParentClass

但是,如果ChildClass变为静态:

public class ParentClass {
    public static class ChildClass {}
}

您将能够从另一个(父类的非子类)类实例化它:

ChildClass child = new ChildClass(); //this will compile when put in any class

我建议阅读一些有关类如何工作的Java基础知识:https://www.geeksforgeeks.org/classes-objects-java/