gpt4 book ai didi

java - 静态变量和实例变量之间的性能差异

转载 作者:行者123 更新时间:2023-11-30 06:46:53 24 4
gpt4 key购买 nike

An instance variable is one per Object, every object has its own copy of instance variable.

A static variable is one per Class, every object of that class shares the same Static variable.

class MyStaticClass{
private static int myStaticInt;

public static int getMyStaticInt() {return myStaticInt;}
}

class MyInstanceClass{
private int myNonStaticInt;

public int getMyNonStaticInt() {return myNonStaticInt;}
}

两者之间有性能差异吗?打电话比打电话更贵吗?

int i = MyStaticClass.getMyStaticInt();

或:

int i = new MyInstanceClass().getMyNonStaticInt();

最佳答案

这不是性能问题。静态变量和实例变量有不同的用途。

使用

int i = new MyInstatnceClass().getMyNonStaticInt();

几乎肯定是无用的,因为每次调用 new MyInstatnceClass() 时,您都会创建一个新的 MyInstatnceClass 实例,并拥有一个新的 myNonStaticInt 实例多变的。由于您没有保留对创建的实例的引用,因此您无法两次检索相同的实例变量,这使得它毫无用处。

如果您需要在类的所有实例之间共享变量的单个副本,则静态变量是最佳选择。

也就是说,后一个调用的范围也更大,因为它涉及 MyInstatnceClass 类的实例的创建和初始化(此外,如果是第一次访问该类,还需要加载和初始化该类) )。

另一方面,MyStaticClass.getMyStaticInt() 仅在第一次访问 MyStaticClass 类时加载并初始化该类。它不必创建该类的任何实例。

关于java - 静态变量和实例变量之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com