知识补充
关于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不为空!");
}