null

词语释义
1. 无效的;无价值的
2. 【数】零的

n.
1. 【数】零

vt.
1. 使无效


编程中解释

在编程中。null 值指出一个变量中没有包含有效的数据。

产生 null 的原因是:
在程序设计中是一个存在的变量的值
但是你应该问是在什么情况下用的或在什么地方用,
意义都不一样,表现出来也不一样。
对一个变量显式地赋值为 null。
包含 null 的表达式之间的任何操作。

Null在数据库中表示 不知道(Unknown) 的数据,主要有3种意思:
1)知道数据存在,但不知道具体值
2)不知道数据是否存在
3)数据不存在

定义:

null表示no valueunknown,它不表示0,也不表示一个空的字符串。

 

SQL函数中的NULL

       所有的函数,除了REPLACE , NVL , CONCAT以外,如果你用null作为它的参数,那么结果就是返回null

       大部分的聚集函数如(COUNTAVG),他们会忽略null,如一个列上面有10行记录,其中2行是null,那么count这个列的结果就是8

 

例如

在增加月份函数中使用null进行计算的情况:

SQL> select to_char(sysdate,'yyyy-mm-dd') today from dual;

TODAY

----------

2007-09-23

 

SQL> select to_char(add_months(sysdate,1),'yyyy-mm-dd') another_day from dual;

ANOTHER_DA

----------

2007-10-23

 

SQL> select to_char(add_months(sysdate,null),'yyyy-mm-dd') another_day from dual;

ANOTHER_DA

----------

 

       聚集函数的情况:

22:11:28 SQL> select empno,ename,comm from emp;

     EMPNO ENAME            COMM

---------- ----------            ----------

      7369 SMITH

      7499 ALLEN             300

      7521 WARD              500

      7566 JONES

      7654 MARTIN           1400

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER              0

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

已选择14行。

 

22:11:43 SQL> select count(empno) from emp;

COUNT(EMPNO)

------------------------

          14

 

22:12:05 SQL> select count(comm) from emp;

COUNT(COMM)

-----------------------

          4

 

条件中的null

NULL所进行的任何数学计算结果都是null,如10+null结果是null

oracle始终认为两个null是不相等的(除了少数情况),不能用null=null这个条件来进行判断两个null是否相等,null不等于其他的null,你只能用is null或者is not null来判断某个记录的某个字段是不是null

但是oracle在使用decode函数的时候,它认为两个null是相等的。

oracle还有一种情况也认为两个不同的null是相等的,就是在一个复合键中,如果这两个复合键值中非null部分是相等的,那么这两个复合键值是相等的。

下面给出null出现的条件表格:

如果a

比较条件是

那么结果是

10

a IS NULL

FALSE

10

a IS NOT NULL

TRUE

NULL

a IS NULL

TRUE

NULL

a IS NOT NULL

FALSE

10

a = NULL

UNKNOWN(其实就是null

10

a != NULL

UNKNOWN

NULL

a = NULL

UNKNOWN

NULL

a != NULL

UNKNOWN

NULL

a = 10

UNKNOWN

NULL

a != 10

UNKNOWN

 

例如:

22:25:00 SQL> select empno,ename,comm from emp;

    EMPNO ENAME            COMM

---------- ----------             ----------

      7369 SMITH

      7499 ALLEN             300

      7521 WARD              500

      7566 JONES

      7654 MARTIN           1400

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER              0

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

已选择14行。

已用时间:  00: 00: 00.09

 

22:25:06 SQL> select empno,ename,comm from emp where comm=null;

未选定行

已用时间:  00: 00: 00.01

 

22:25:14 SQL> select empno,ename,comm from emp where comm <> null;

未选定行

已用时间:  00: 00: 00.01

 

22:25:21 SQL> select empno,ename,comm from emp where comm is null;

     EMPNO ENAME            COMM

----------  ----------            ----------

      7369 SMITH

      7566 JONES

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

已选择10行。

已用时间:  00: 00: 00.04

 

22:25:27 SQL> select empno,ename,comm from emp where comm is not null;

     EMPNO ENAME            COMM

---------- ----------             ----------

      7499 ALLEN             300

      7521 WARD              500

      7654 MARTIN           1400

      7844 TURNER              0

已用时间:  00: 00: 00.01

java中null是所有类未实例化的一个对象 <script src="http://blog.csdn.net/count.aspx?ID=1502561&Type=Rank" type="text/javascript"></script>

public   class  Test  {  
    
private void print(Integer some){
        System.out.println(
"Integer");
    }
 
    
private void print(Object some){
         System.out.println(
"Object");
    }

    
public static void main(String[] args) 
    
{
        Test test 
= new Test();
        test.print(
null);
    }
 
}

 以上代码运行结果:Integer

两个问题1、null的向上转型

               2、null本质

null是所有类的未实例化的一个对象,所以他可以转型成由低向上的转型。

如果转型的几个类是有上而下继承下来,null转成最低层的那个类。

java.lang  
class   Integer
java.lang.Object
    ¦
    +--java.lang.Number
                ¦
                +--java.lang.Integer

在这里,NULL既是Integer的对象,也是Object的对象,而且Integer类继承于Object   类,所以在这种情况下,沿着继承的路线从下往上搜索匹配的情况 

1:null与“”

String aa =null 只是声明了一个引用,该引用没有指向任何对象(即没有开辟任何内存空间给aa)
String aa="" 不但声明了一个引用,而且该引用指向一String对象""

2:java.lang.NullPointerException(空指针异常)

String aa =null 你调用aa.toString()会有空指针异常
String aa="" 你调用aa.toString()是不会有空指针异常

3:null与数值0

null是对对象来说的,比如JTextField a=null,这时a并不指向任何对象,只是把它声明为一个可以指向JTextField 的对象变量,

而0是对数值类型来说的,比如int i=0,引用一个为null值得对象会产生NullPointException异常,但 引用一个值为0的数值不会产生错误

4:

null 是 Java 的保留字,表示无值。

示例
  Integer i;   i = null;
  
  String s;   if (s != null)
  {      <statements>
  }
  
注释
  • 将 null 赋给非原始变量相当于释放该变量先前所引用的对象。

  • 不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值