知识补充

关于null,你不得不知道的几件事:

1、null是Java中的关键字,像public、static、final。它是大小写敏感的,你不能将null写成Null或NULL,编译器将不能识别它们然后报错。

2、就像每种原始类型都有默认值一样,如int默认值为0,boolean的默认值为false,null是任何引用类型的默认值,不严格的说是所有object类型的默认值。就像你创建了一个布尔类型的变量,它将false作为自己的默认值,Java中的任何引用变量都将null作为默认值。这对所有变量都是适用的,如成员变量、局部变量、实例变量、静态变量(但当你使用一个没有初始化的局部变量,编译器会警告你)。为了证明这个事实,你可以通过创建一个变量然后打印它的值来观察这个引用变量。

3、null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型。

4、null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean。如果你那样做了,编译器将会报错。

5、任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针异常。(例如Integer拆箱成int时)

6、如果使用了带有null值的引用类型变量,instanceof操作将会返回false。(instanceof:用来在运行时指出对象是否是特定类的一个实例,例如:Integer num = null,那么,调用 num instanceof Integer时会返回false)

7、不能调用非静态方法来使用一个值为null的引用类型变量,它将会抛出空指针异常;可以使用静态方法来使用一个值为null的引用类型变量,因为静态方法使用静态绑定,不会抛出空指针异常。

8、你可以使用==或者!=操作来比较null值,但是不能使用其他算法或者逻辑操作,例如小于或者大于。跟SQL不一样,在Java中null==null将返回true。

举例

假设我们现在有一个类,例如String,对于如下代码:

String str = null;
 if (str.equals("Hello World!")){
     System.out.println("Yes");
 }else {
     System.out.println("No");
 }



就会抛出空指针异常,但是,如果我们把第二行的条件判断改为:

if ("Hello World!".equals(str))

就不会抛出空指针异常,因为String的equals方法不是Static方法

 

 

 

首先先说一下null 和 “” 的区别:

   

String str1 = null;
     String str2 = "";

空字符串("")已经分配了内存,而null没有分配内存。

   ""是一个空字符串(string),他在内存中是存在的,他可以使用Object对象中的方法("".equals()、"".toString()),null是一个空对象,他在内存中是不存在的,他不能使用Object对象中的方法。

在比较的时候,必须是str1==null,str2.equals(""),否则就会报错。

String a = "io i u j";
 String[] s =a.split(" ");

 boolean s =a.contains("io");

 String s =a.trim();

boolean s =a.contains("io");
        a.toCharArray();
        a.substring(1,3);


判断是否为null(使用“”)
        String s = "";
        String qa = new String();
       
        if(qa.equals("")){
            System.out.println("2");
        }
        if(s==""){
            System.out.println("1");
        }












 StringBuffer a = new StringBuffer("io i u j");
        a.substring(1,3);
        a.append("9");

/**
	 * 将字符串倒序
	 */
	public static void reverseStr() {
		StringBuffer sb = new StringBuffer("This is a StringBuffer!");
		System.out.println(sb.reverse()); // reverse方法将字符串倒序
	}


StringBuffer  sb=new StringBuffer("oo");(是对象所以使用null(不能是“”),且不能使用一个null.equals()null,会报空指针异常)

        if(sb!=null && sb.length()>0){

            System.out.println("证明sb不为空!");

        }