Dynamic 值和文字之间的差异

Dynamic 值和文字之间的差异,dynamic,static,literals,Dynamic,Static,Literals,值和文字之间有什么区别?根据中第一页的幻灯片4,值显然具有动态类型,而文本显然具有静态类型。但是文字不是一个值吗?使用幻灯片中使用的术语-文字是一种容器,所以最好在值和容器之间进行比较 容器“包含”一个值。如果你写intx=1,那么x是一个容器,数字1是一个值。但是1也是一个容器——更准确地说,是一个文本。幻灯片强调值1和文字1之间存在差异 当您编写代码时,实际上无法直接访问值—只能通过容器来访问。这就是为什么您可以写入x和1,但不能写入第一个值 文本是一个容器,可以直接转换为值,而无需查看它的

值和文字之间有什么区别?根据中第一页的幻灯片4,值显然具有动态类型,而文本显然具有静态类型。但是文字不是一个值吗?

使用幻灯片中使用的术语-文字是一种容器,所以最好在值和容器之间进行比较

容器“包含”一个值。如果你写
intx=1
,那么
x
是一个容器,数字1是一个值。但是
1
也是一个容器——更准确地说,是一个文本。幻灯片强调值1和文字
1
之间存在差异

当您编写代码时,实际上无法直接访问值—只能通过容器来访问。这就是为什么您可以写入
x
1
,但不能写入第一个值

文本是一个容器,可以直接转换为值,而无需查看它的周围环境-例如
1
可以直接转换为数字1
x
不能以这种方式转换为值,因为它是一个变量,我们不知道它包含什么,除非我们查看周围的代码

至于动态类型与静态类型,容器有一个静态类型,即编译时已知的静态类型。如果它是一个变量,那么它就是声明的变量类型。如果是表达式,则是表达式的推断类型。如果它是一个文本,那么它就是文本的直接类型。编译器可以告诉每个容器的类型,而无需运行程序,也无需关心程序运行后它将保存哪些值

另一方面,值作为一系列字节存储在内存中。类型数据也存储在值附近的内存中(除非它是基元值),这就是为什么值的类型是动态的——因为如果要发现值的类型,必须在运行时查看内存


尽管值的类型是动态的,但Java是一种静态语言,因为您通常不看动态类型。由于只能通过容器引用值,因此在处理值时使用容器的静态类型。

使用幻灯片中使用的术语-文本是一种容器,因此最好在值和容器之间进行比较

容器“包含”一个值。如果你写
intx=1
,那么
x
是一个容器,数字1是一个值。但是
1
也是一个容器——更准确地说,是一个文本。幻灯片强调值1和文字
1
之间存在差异

当您编写代码时,实际上无法直接访问值—只能通过容器来访问。这就是为什么您可以写入
x
1
,但不能写入第一个值

文本是一个容器,可以直接转换为值,而无需查看它的周围环境-例如
1
可以直接转换为数字1
x
不能以这种方式转换为值,因为它是一个变量,我们不知道它包含什么,除非我们查看周围的代码

至于动态类型与静态类型,容器有一个静态类型,即编译时已知的静态类型。如果它是一个变量,那么它就是声明的变量类型。如果是表达式,则是表达式的推断类型。如果它是一个文本,那么它就是文本的直接类型。编译器可以告诉每个容器的类型,而无需运行程序,也无需关心程序运行后它将保存哪些值

另一方面,值作为一系列字节存储在内存中。类型数据也存储在值附近的内存中(除非它是基元值),这就是为什么值的类型是动态的——因为如果要发现值的类型,必须在运行时查看内存

尽管值的类型是动态的,但Java是一种静态语言,因为您通常不看动态类型。由于只能通过容器引用值,因此在使用该值进行操作时,将使用容器的静态类型