导航:首页 > 源码编译 > 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是编译期常量吗相关的资料

热点内容
盛达是什么APP 浏览:194
android计算屏幕高度 浏览:649
自己做红包解压球 浏览:470
pdf很贵吗 浏览:490
如何抢购腾讯云服务器 浏览:384
电子书app源码 浏览:865
程序员在上班的时候 浏览:403
游戏压缩文件夹怎么删除 浏览:415
百度新闻app是什么 浏览:885
自动化对初级编程的影响 浏览:103
单片机综合课程设计 浏览:598
程序员小严 浏览:811
如何下载欢乐走app 浏览:436
程序员节公司请美女 浏览:14
三本程序员好吗 浏览:21
la78040场幅压缩 浏览:900
MFC经典游戏编程 浏览:787
在线申请小额贷款源码 浏览:333
多个文件夹如何批量删除内容 浏览:251
电力载波单片机 浏览:596