“空”和“没有”的区别

自然语言是有多义性的,“空”和“没有”有时候意思相同,但在编程语言里,这两者是有区别的。

“空”比较容易理解,就是变量存在但是是空值,在ABAP里用两个单引号或者initial来表示空字符串。比如DATA lv_xyz TYPE C.这个变量定义,当没有赋值时,变量lv_xyz就是一个空值。用lv_xyz = ''或者lv_xyz IS INITIAL进行判断都是true。对于字符串这种基本变量来说,只要定义了,就是“存在”,哪怕是空值也是“存在”。

怎么样理解“没有”,“没有”是“不存在”,对于对象类型的话,有这种“不存在”的情况,当定义了一个对象,DATA lr_xyz TYPE REF TO CL_ABC.,如果只是定义,而没有实例化的话,这时这个对象就是“不存在”,如果这时使用了这个对象(比如调用了对象方法),就会抛出常见的“空引用”这种错误(在C里面叫空指针),这种对象用IS INITIAL判断依然是true,但是跟字符串的IS INITIAL是有区别的。简单来说,字符串类型的INITIAL,是“存在”的状态,对象的INITIAL,是“不存在”的状态,这个就是标题中“空”和“没有”的意思。

在自然语言里,“不存在”是一种连提都没提到的状态,比如嫌疑犯说“我没有杀人”,在他说出这句话以前,杀人是一种“不存在”的状态,也就是标题里的“没有”的意思,在他说出这句话之后,因为他已经提到”杀人“这个词了,哪怕他没有杀人,状态也从“不存在”转换成了“存在”,说“没有杀人”只是类似于“字符串=空值”的概念。

在编程语言里,“不存在”是指是某个对象被定义或者声明了,但是还没有实例化。当然如果连定义都没有当然也是一种“不存在”,但是这样没有意义。

在Java等一些常见编程语言里,“空"是双引号“”,和ABAP类似,而”没有“是null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值