`public/protected/private`关键字对性能有影响吗?

ahm*_*kok 2 java performance access-modifiers

据我所知,public/protected/private关键字对创建时间没有影响.但我想知道保持公共对象/类可访问应该有成本.它有成本吗?

Bat*_*eba 6

不,他们没有.它们本质上是编译时构造.

也就是说,一些OOP语言(例如C++)可以基于某些东西做出优化决策private.但是由于反思,这不可能在Java中被利用,因为在Java中,private并不能保证它对类外的东西不可见.


Swe*_*per 5

保持公共对象/类可访问应该有成本。

是的,编译器需要检查您正在访问的内容是否是私有的、受保护的和公共的。然后它决定是否允许您访问它。

但是在运行时,运行时不需要检查您是否被允许访问该变量。为什么?因为程序要运行,它必须被编译(除非你使用像 JS 这样的解释型语言)。如果您尝试访问不允许访问的变量,它甚至不会运行!

因此在运行时,运行时不需要担心您是否可以访问该变量,因此对性能没有影响。