导航:首页 > 源码编译 > null是编译期常量吗

null是编译期常量吗

发布时间:2025-04-26 01:23:46

‘壹’ java 中的编译期常量是什么使用它又什么风险

编译期常量就是所谓的 public final static 常量。
由于在编译时就确定了值,在使用的场合会直接写成值。而不是直接到原来的类中读取。
这样会有一个问题。 如果 类 A 提供了常量 类B使用了常量。并都进行了编译。
然后,修改了类A的源码,调用系统进行编译。
系统发现类A是新的代码,编译了,类B是旧的代码,就不进行编译,使用旧的类。
由于类B中直接编译进了旧的值,导致类A的修改无法反映到类B中。
这样造成了风险。

‘贰’ php中const和define的区别

define部分:
宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)

宏的语法为:

#define 宏名称 宏值
作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。

利用宏的优点:

1)让代码更简洁明了

当然,这有赖于你为宏取一个适当的名字。一般来说,宏的名字更要注重有明确直观的意义,有时宁可让它长点。

2)方便代码维护

对宏的处理,在编译过程中称为“预处理”。也就是说在正式编译前,编译器必须先将代码出现的宏,用其相应的宏值替换,这个过程有点你我在文字处理软件中的查找替换。所以在代码中使用宏表达常数,归根结底还是使用了立即数,并没有明确指定这个量的类型。

const部分

常量定义的格式为:

const 数据类型 常量名 = 常量值;
而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查。常量必须一开始就指定一个值,然后,在以后的代码中,我们不允许改变此常量的值。

两者之间的区别:
内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.

阅读全文

与null是编译期常量吗相关的资料

热点内容
平板的访客模式如何加密 浏览:139
钉钉加密有用吗 浏览:112
加密u盘好还是不加密的 浏览:349
微观经济学平狄克第八版pdf 浏览:404
linux查看实时流量 浏览:557
如何存档到服务器 浏览:548
flash编程书籍推荐 浏览:835
php获得数组键值 浏览:402
香港云服务器操作 浏览:303
wpe最新源码 浏览:857
自己购买云主服务器推荐 浏览:422
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:192
pdf劈开合并 浏览:29
不能修改的pdf 浏览:752
同城公众源码 浏览:489
一个服务器2个端口怎么映射 浏览:298
java字符串ascii码 浏览:79
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332