java class 中变量的私有与默认范围 - 任何性能问题

private vs default scope for variables in java class - any performance issues

针对上述问题,我查阅了很多文章。

我能收集到的主要要点:

1.) 设为私有我们的意思是只有 声明 class 可以访问 .

2.) 除此 class 之外没有其他人可以访问这些变量。

大多数情况下,在创建 class 时,我们将变量范围保持为默认值,也许只是因为懒惰写额外的词 "private"。我们只保留默认范围的字段。

我想了解开发人员的这种疏忽到底是如何导致问题的,也许

1.) 性能问题

2.) 垃圾回收

3.) 编译时-运行时加载

...或任何其他参数。

Private 与 Public/etc 声明由 java 解释器和编译器处理相同。它们只是我们用来保持代码模块化的约定,但在内存中的处理方式完全相同 space.

懒得写 private 关键字的开发人员将字段打开,以便由同一包中其他 类 中的代码直接修改。

直接从知道如何正确处理字段的代码外部修改字段很麻烦,并且可能导致无意的错误。

通常应声明字段 private,以防止对值进行不受控制的操作。当然,这样的规则总是有例外,但是所有开发人员都应该写 private 想都没想,改成别的东西应该需要仔细考虑。

没有性能影响。纯粹是为了防止编码错误。

我认为这对性能没有任何影响。对代码结构会有一定的影响,如果没有强烈的动机,不建议使用过多的默认变量。

从垃圾收集和class加载的角度来看,它们是根据需要完成的。如果 JVM 认为需要该对象,那么它可能会保留在内存中。虽然默认访问对垃圾回收没有直接影响,但编程错误的可能性很高,可能导致内存泄漏。

涉及到封装、耦合、扩展开放修改关闭的原则。

例如 - 如果我正在编写一个库 class 并且有一个具有 public\ default 访问权限的 field。现在,一旦我发布了我的库并且我的库的客户开始使用它 - 我无法返回并更改客户端代码可以访问的 field 因为无法确定 - 它没有被使用或更改它不会破坏客户代码。

所以,我只能选择以同样的方式支持它。如果这是私有的并且我使用了 getter 和 setter - 我总是可以在未来的版本中做/添加一些额外的东西。