在 Java 中,在内存方面,使用私有与公共是不是有区别? [复制]

Posted

技术标签:

【中文标题】在 Java 中,在内存方面,使用私有与公共是不是有区别? [复制]【英文标题】:In Java, memory-wise does it make a difference to use private vs public? [duplicate]在 Java 中,在内存方面,使用私有与公共是否有区别? [复制] 【发布时间】:2015-09-09 17:37:12 【问题描述】:

假设我可以同时使用私有或公共,这对我来说没有任何区别。

对于内存使用,哪个更好?为什么?

【问题讨论】:

你是什么意思memory-wise?为什么会有疑问? 哪个会使用更少的计算机内存?我的意思是如果我可以用私人定义一些东西?应该一直努力吗?因为它使用的计算机内存更少? 我已经阅读了几个小时,并尝试应用我有限的知识,但还是有一些天才不被欣赏,因为我不如他们!我是不是在错误的地方问这些问题?我对每次尝试都会得到的负面结果感到沮丧! 我不相信你做过任何研究,无论多长时间。 证明我错了。 你假设你问了一个很好的问题。 4 人不这么认为。参观并阅读帮助中心。那里有信息可以帮助你写出正确的问题。 php 和 Java 到底是怎么回事?来吧,它不是重复的。 【参考方案1】:

不,在类中,public 或 private 的属性修饰符不会改变内存占用。

为项目预留的字节数与内存中类型(int、long等)的大小简单相关。

修饰符只限制了内存地址在类外不可访问(在私有的情况下)。

如果你有这样的课程:

class Point

     private int x;
     public int y;

这两个变量在访问时占用相同的字节数。 但是要访问 y,您可以这样做:

Point p = new Point();
p.y = 55;

但是,您不能对 x 执行此操作,因为它是私有的。

您可以从类中的代码中访问 x,如下所示。

class Point

     private int x;
     public int y;
     public Point ()
     
            // this is the contstructor but other member functions woud
            // work too
            this.x = 77;
            // or 
            x = 77;
     

【讨论】:

【参考方案2】:

这些是访问修饰符。内存方面(RAM)不,没有区别。 static 关键字不会发生这种情况。使用 static 将对象保留在内存中。

【讨论】:

【参考方案3】:

不,访问修饰符对运行时内存利用率没有影响 Java 或 PHP,也不是我听说过的任何其他语言。 可能由于访问,代码大小可能会增加几个字节 某些字节码中的修饰符取决于它们的编码方式。您的 程序必须在其他方面非常有效,然后才能 值得为此担心。

来自this的回答

【讨论】:

以上是关于在 Java 中,在内存方面,使用私有与公共是不是有区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

继承 Java 私有成员

缓存控制中的私有与公共

java 内存模型与volatile关键字

私有的嵌套类(内部或静态)是不是可能具有具有公共访问权限的方法?

带有 Getter/Setter 的私有列表与公共列表

Java 多线程安全机制