Java 在硬件上强制的变量作用域

Java 在硬件上强制的变量作用域,java,logic,hardware,hardware-programming,Java,Logic,Hardware,Hardware Programming,有没有人能给我解释一下或指导我找到一个资源来解释软件是如何在硬件上工作的,例如,如果我声明了一个私有或公共变量,那么这个变量是如何在硬件上执行的,换句话说,是什么强制了它们是公共和私有的,因为每个指令都必须在硬件上执行,如何保持这种完整性?是编译器强制执行privatevspublic。不是机器 Java是一种编译语言,当它编译时,它会被翻译成机器代码 私有-公共作用域在程序编译时强制执行是编译器强制执行privatevspublic。不是机器 Java是一种编译语言,当它编译时,它会被翻译成机

有没有人能给我解释一下或指导我找到一个资源来解释软件是如何在硬件上工作的,例如,如果我声明了一个私有或公共变量,那么这个变量是如何在硬件上执行的,换句话说,是什么强制了它们是公共和私有的,因为每个指令都必须在硬件上执行,如何保持这种完整性?

是编译器强制执行
private
vs
public
。不是机器

Java是一种编译语言,当它编译时,它会被翻译成机器代码


私有-公共作用域在程序编译时强制执行

是编译器强制执行
private
vs
public
。不是机器

Java是一种编译语言,当它编译时,它会被翻译成机器代码


私有-公共作用域在程序编译时强制执行

这不在硬件上强制执行,而仅在编译时强制执行。变量只是内存中的一个点,这意味着您可以从任何地方访问它,只要您有一个指向它的指针(或者通过jni,如果您在java=D中)。换句话说,在编译.class文件时,会处理并强制执行访问权限

这不在硬件上强制执行,而仅在编译时强制执行。变量只是内存中的一个点,这意味着您可以从任何地方访问它,只要您有一个指向它的指针(或者通过jni,如果您在java=D中)。换句话说,在编译.class文件时,会处理并强制执行访问权限

在Java中,访问权限(
public
/
private
等)由编译器和Java虚拟机(JVM)管理。e、 g如果加载Java库,则可以动态更改对字段的访问权限,并使其
公开
。没有直接的硬件模拟

Java程序和硬件之间有很多层,这个问题很难回答。Java代码产生Java字节码(类似于机器代码),并且您没有直接的内存访问。JVM提供这个接口,并根据需要将代码重新编译成机器代码,但这在很大程度上是隐藏的

如果你对硬件和软件之间的接口感兴趣,我会考虑用C和C++编写一些代码,并生成所生成的机器代码/汇编程序。C/C++更接近于硬件,它会让您了解正在发生的事情

在Java中,访问权限(
public
/
private
等)由编译器和Java虚拟机(JVM)管理。e、 g如果加载Java库,则可以动态更改对字段的访问权限,并使其
公开
。没有直接的硬件模拟

Java程序和硬件之间有很多层,这个问题很难回答。Java代码产生Java字节码(类似于机器代码),并且您没有直接的内存访问。JVM提供这个接口,并根据需要将代码重新编译成机器代码,但这在很大程度上是隐藏的


如果你对硬件和软件之间的接口感兴趣,我会考虑用C和C++编写一些代码,并生成所生成的机器代码/汇编程序。C/C++更接近于硬件,它会让您了解正在发生的事情

此信息的处理级别高于机器代码。机器本身只了解内存地址和值-它不关心您是否尝试访问另一个类中的私有字段。编译器负责跟踪可见性规则,并使用类的内部表示来强制执行这些规则。在编译时,将检查访问其上的方法和属性的对象类型,以确定是否可以解析这些名称(例如
foo.bar()
)中的
bar
)。这将考虑范围和其他一些因素,具体取决于语言。

此信息的处理级别高于机器代码。机器本身只了解内存地址和值-它不关心您是否尝试访问另一个类中的私有字段。编译器负责跟踪可见性规则,并使用类的内部表示来强制执行这些规则。在编译时,将检查访问其上的方法和属性的对象类型,以确定是否可以解析这些名称(例如
foo.bar()
)中的
bar
)。根据语言的不同,这需要考虑范围和其他一些因素