关键词:
【中文标题】公共静态变量和私有静态变量之间的区别【英文标题】:Difference between public static and private static variables 【发布时间】:2012-05-14 15:03:12 【问题描述】:class Employee
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development";
public static void main(String args[])
salary = 1000;
System.out.println(DEPARTMENT+ " average salary:"+salary);
这个java程序包含一个静态变量。但是我无法理解。
【问题讨论】:
【参考方案1】:public
变量可以从任何地方访问(嗯,任何可以访问类的地方)。
private
变量只能在类内部访问。
static
变量属于类而不是类的实例。
注意变量DEPARTMENT
也是final
,也就是说一旦设置就不能修改了。这在这里很重要,因为这可以避免成为糟糕的代码——变量是一个常量,所以可以让类之外的东西访问它。
【讨论】:
太棒了。我对决赛感到困惑。【参考方案2】:在代码中任何地方都可以访问公共变量 - 私有变量只能在类本身内访问。在这种情况下,您在 Employee
类中使用 Employee.salary
,这很好。
请注意,静态变量是完全独立的问题 - 方法和类与变量一样具有可访问性。
还有其他可用的访问级别 - protected
和默认的“包”访问(无法明确指定)。见section 6.6 of the Java Language Specification for more details。
(顺便说一句,还值得了解static
的含义 - 您几乎可以肯定不希望这些变量是静态的,因为它们适用于每个 em> Employee
而不是一般的 Employee
概念。DEPARTMENT
在这里也是一个常数很奇怪。)
【讨论】:
我认为我们不需要私有静态变量 @Sameer:我完全不同意。虽然我一般不喜欢静态变量,但我当然不会声称它们从不需要。您使用常量的唯一静态变量是什么? (有时,即使常量也可以更好地作为私有......) @JonSkeet 如果我使用私有静态变量,那么即使类没有实例化,它会在应用程序(例如 Android 应用程序)启动时获得内存吗?就像公共静态变量获取内存一样? @Dharmendra:是的,公共/私有在内存方面没有区别。 @AustinWBryan:仅仅因为一个词 can 被用作关键字并不意味着它应该总是在 Markdown 的代码字体中指定。在这种情况下,public 和 static 都更适合作为常规词阅读,IMO。【参考方案3】:private static double salary
仅在类中可用,并且可以作为访问
salary or Employee.salary
虽然
public static final String DEPARTMENT
也可以从此类外部访问,如下所示
Employee.DEPARTMENT
【讨论】:
【参考方案4】:public static
- 可以从类内和类外访问。
private static
- 只能从类中访问。
静态被认为是 OOPS 中的反 OO。
class Dog
public static string X;
private static string y;
y
只能通过Dog.y
或y
从Dog
内部访问。
X
可以通过Dog.X
在任何地方访问,或者,如果您在课堂上或使用using static Dog
作为标题,只需X
。
【讨论】:
【参考方案5】:很明显,你不能从类外访问private
静态变量,你可以从任何地方访问public
静态变量。
【讨论】:
再看一下。变量salary是私有的。但是如果是私有的,这行“public static void main(String args[])salary = 1000;”怎么办?访问工资? @Androidmaid:因为您是从同一个班级(员工)中访问它。 使用当今的计算机/技术,少量内存不会造成任何伤害用于存储简单数据的“公共静态”和“私有静态”之间的区别。啥是更好的? [复制]
】用于存储简单数据的“公共静态”和“私有静态”之间的区别。啥是更好的?[复制]【英文标题】:Differencebetween"publicstatic"and"privatestatic"forstoringsimpledata.Whatisbetter?[duplicate]用于存储简单数据的“公共静态”和“... 查看详情
本地和实例变量之间有啥区别
...有,某一个对象将其值改变,不影响其他对象。类变量是公共变量。 查看详情
将私有变量传递给公共静态变量c#
】将私有变量传递给公共静态变量c#【英文标题】:Passaprivatevariabletoapublicstaticvariablec#【发布时间】:2017-06-3012:46:23【问题描述】:我有一个名为_scoreTotal的私有int变量我已经分配了一个名为score的新公共变量来将私有变量_scoreTot... 查看详情
java示例代码_Java公共/私有和静态修饰符如何影响一行中声明的多个变量
java示例代码_Java公共/私有和静态修饰符如何影响一行中声明的多个变量 查看详情
私有静态变量
...们必须声明静态成员函数才能访问?为什么不简单地使用公共函数来访问s_nValue?我的意思是为什么使用静态成员函数而不是非静态公共函数更好?classSomethingprivate:staticints_nValue;;intSomething::s_nValue=1;//initializer 查看详情
在块内,__block 变量和静态变量之间的实际区别是啥?
】在块内,__block变量和静态变量之间的实际区别是啥?【英文标题】:Withinablock,whatisthepracticaldifferencebetweena__blockvariableandastaticvariable?在块内,__block变量和静态变量之间的实际区别是什么?【发布时间】:2013-01-2621:41:24【问题... 查看详情
清理单元测试之间的私有静态变量
】清理单元测试之间的私有静态变量【英文标题】:Cleanupprivatestaticvariablesbetweenunittests【发布时间】:2020-06-1705:45:22【问题描述】:我有一个类似这样的类:publicclassDiscoveryDocumentCachestaticDiscoveryDocumentCache()cache=newMemoryCache(discovery... 查看详情
“公共静态”和“静态公共”之间的区别
】“公共静态”和“静态公共”之间的区别【英文标题】:Differencebetween\'publicstatic\'and\'staticpublic\'【发布时间】:2013-06-2307:50:40【问题描述】:在Java中,我发现有些开发者这样写:publicstaticfunctionName()但其他人写道:staticpublicfu... 查看详情
公共,私有和受保护之间有啥区别?
】公共,私有和受保护之间有啥区别?【英文标题】:Whatisthedifferencebetweenpublic,private,andprotected?公共,私有和受保护之间有什么区别?【发布时间】:2011-05-2016:18:48【问题描述】:何时以及为什么应该在类中使用public、private和pr... 查看详情
js:私有变量和静态私有变量|访问私有属性
是否可以访问私有静态变量和方法?
】是否可以访问私有静态变量和方法?【英文标题】:Isitpossibletoaccessaprivatestaticvariableandmethod?【发布时间】:2021-11-2402:09:25【问题描述】:我们可以通过编写className.propertyName来访问一个类的静态属性,但是如果该属性(方法/变... 查看详情
公共变量和属性之间的VBA区别
】公共变量和属性之间的VBA区别【英文标题】:VBAdifferencebetweenpublicvariableandproperty【发布时间】:2014-08-2200:19:14【问题描述】:有什么区别PublicVariableAsInteger和PrivatepVariableAsIntegerPublicPropertyLetVariable(ByVallVariableAsInteger)pVariable=lVaria 查看详情
C# winform:从其他表单访问公共属性以及静态和公共属性之间的区别
】C#winform:从其他表单访问公共属性以及静态和公共属性之间的区别【英文标题】:C#winform:Accessingpublicpropertiesfromotherforms&differencebetweenstaticandpublicproperties【发布时间】:2013-01-1719:02:09【问题描述】:我试图了解静态属性和公... 查看详情
静态变量和成员变量的区别&&成员变量和局部变量的区别
...=======================================================================1)静态变量和成员变量的区别: (1):所属不同: 静态变量:属于类,也称为类变量。 成员变量:属于对象,也称为对象变量或实例变量。 (2):... 查看详情
静态变量和实例变量的区别?
语法区别:静态变量需要static关键字修饰,实例变量不需要。程序运行时的区别:静态变量从属于类,实例变量从属于对象。 实例变量必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量; 静... 查看详情
私有字符串还是公共静态字符串?
】私有字符串还是公共静态字符串?【英文标题】:privateStringorpublicstaticString?【发布时间】:2013-03-1821:53:43【问题描述】:在我实习的时候,我的一位同事给了我一个提示。我想知道这是否是好的做法。我所做的是创建仅用于... 查看详情
c#静态变量和非静态变量的区别
静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量... 查看详情
访问私有变量的 Java 静态方法
】访问私有变量的Java静态方法【英文标题】:Javastaticmethodsaccessingprivatevariables【发布时间】:2011-07-0423:40:54【问题描述】:我的印象是私有非静态变量只能通过在变量所在的对象上调用的方法来访问,但事实并非如此。有人可... 查看详情