`
ypluck
  • 浏览: 76406 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

对于Java的null和""及ArrayList的理解

    博客分类:
  • JAVA
阅读更多
最近看了看《Thinking in Java》深有感触,把以前的迷惑解开了不少,今天就Java的null和""及ArrayList讲解下,希望对迷惑于此的朋友们有所帮助。

一。代码:
import java.util.ArrayList;


public class testNull
{
	/**
	 * @param args
	 */
	public static void main ( String[] args )
	{

		testNull a=new testNull();
		ArrayList<String> l=a.getTest("");

		if(l==null)
		{
			System.out.println("is null");
		}
		else
		{
			System.out.println("is not null");
		}
	}

	public ArrayList<String> getTest(String item)
	{
		ArrayList<String> list=new ArrayList<String>();
		if(item==null || "".equals(item))
		{
			return null;
		}
		else
		{
			return list;
		}
	}
}


二。讲解
   上述的代码中有两个地方可以测试。
    1.在public ArrayList<String> getTest(String item)方法中,如果if(item==null || "".equals(item))改成if(item==null )则会输出"is not null"
如果加上,则会输出"is null",这说明null和""是不一样的。

    2.if(item==null)则会输出"is not null",但为什么会输出不是空呢?因为这句代码“ArrayList<String> list=new ArrayList<String>();”,事实上,这句代码的意思已经代表在内存区域分配了内存,所以return list是不为空(null)的。但反过来说,如果把ArrayList<String> list=new ArrayList<String>();改成ArrayList<String> list=null;的话则会输出"is null"

   3.我们在用ArrayList和Iterator的时候,希望注意null的判断。

三。小小讲解,希望对大家理解上有所帮助。(^_^ )
2
2
分享到:
评论
2 楼 w2gavin 2009-09-07  
... 为了验证一个null和""的区别,不需要这么大费周章吧
1 楼 gals 2009-02-17  
null翻译过来是“空”
""翻译过来是零长度字符串
一个什么都不是,一个是String类实例

相关推荐

    Java 基础面试题

    15. Map的键和值可以为null吗,为什么 16. 集合排序,内排序,外排序 17. 动态代理和静态代理 18. 封装、继承、多态 19. static加载顺序 20. 代理和反射(3分钟),反射泛型还有用吗 21. final关键字 22. 线程...

    Java面试宝典2020修订版V1.0.1.doc

    28、Arraylist 和Linkedlist 的区别 76 29、List遍历方式有多少种 76 30、Map怎么遍历 76 31、怎么获取Map所有的key,所有的value 77 32、获取Class的实例有几种方式 77 33、怎么获取类中所有的方法,所有属性 77 34...

    涵盖了90%以上的面试题

    在ArrayList和LinkedList尾部添加元素,谁的效率更高 如果HashMap或者hashTable的key是一个自定义的类该怎么办 为什么重写equals还要重写hashCode? 介绍一下volatile jdk1.5新特性 jdk1.7新特性 jdk1.8新特性 java...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    Practical Java(中文版(繁体+简体))

    實踐41:優先使用array,然後才考慮Vector和ArrayList 138 實踐42:儘可能復用(reuse)對象 141 實踐43:使用緩式評估(延遲求值,lazy evaluation) 144 實踐44:以手工方式將代碼優化151 實踐45:編譯為本機代碼...

    JavaSE基础面试题.docx

    3.对于反射的理解 4.GC是什么?为什么要有GC 5.heap(堆)和stack(栈)的区别 6.内存泄漏和内存溢出 7.垃圾回收器的优点和原理,并考虑2中回收机制 8.加速垃圾回收的方式 9.JVM生命周期及体系结构 10.JVM如何调优 ...

    达内 coreJava 习题答案

    import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in...

    java 混淆工具,不可逆 jocky 也许是最好的了

    如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。 于是就出现了Java混淆编译器,它的作用是打乱class文件中的符号信息,从而使反向工程变得...

    最新JAVA编程题全集_50题及答案

    import java.util.ArrayList; import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";//原字符串 List&lt;String&gt; result = list(s, "");//列出字符的...

    大数据面试题.pdf

    HashTable 不允许有 null 值 key 和 value 都不允许,⽽ HashMap 允许有 null 值 key和 value 都允许 因此 HashMap 使 ⽤ containKey()来判断是否存在某个键。 HashTable 使⽤ Enumeration ,⽽ HashMap 使⽤ ...

    javalruleetcode-leetcode:leetcode刷题集合

    4.栈和队列(要分析java stack 和 queue,deque,priorty queue) 5.哈希表,映射,集合 6.树,二叉树,二叉搜索树 7.泛型递归、树的递归 ​ 实战题目 (需要重新看,多理解,中序遍历的一个应用) (要考虑没有叶子...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    8.2 理解null值和可空类型 139 8.2.1 使用可空类型 140 8.2.2 理解可为空类型的属性 141 8.3 使用ref和out参数 142 8.3.1 创建ref参数 142 8.3.2 创建out参数 143 8.4 计算机内存的组织方式 145 8.5 system....

    最大公共字符串leetcode-DataStructures-and-Algorithms-Cheatsheets:数据结构和算法备忘单

    Java中常用数据结构和方法的编译 树木 理解O(log n)和二叉树的基本递归算法: BFS DEQUEUE 使用 层序遍历 使用队列并放置左右孩子并将其出列并添加到结果中 一次所有连接 重复直到队列为空 时间复杂度:O(n) 空间...

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    jocky 混肴编译rar包(ant和插件俩个版本)

    如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。 于是就出现了Java混淆编译器,它的作用是打乱class文件中的符号信息,从而使反向工程变得...

    joc eclipse plugin

    如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。 于是就出现了Java混淆编译器,它的作用是打乱class文件中的符号信息,从而使反向工程变得...

    HttpClient以及获取页面内容应用

    List&lt;NameValuePair&gt; formparams = new ArrayList(); formparams.add(new BasicNameValuePair("username", "admin")); formparams.add(new BasicNameValuePair("password", "123456")); ...

    值类型和引用类型的区别

    我这人不善于背理论的教条,喜欢把书本上那些生硬的话跟现实生活中常见 的事物联系起来理解和记忆。 直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。 声明一个值类型变量,编译器...

Global site tag (gtag.js) - Google Analytics