时间:2015-05-05 来源:

Java中有关null的9件事 【移动开发】

Java中有关 null 的9件事 对于Java程序员来说网页外包接活,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.

我越发感到惊奇,网页外包接活因为java的设计原理是为了简化事情,网页切图价格那就是为什么没有浪费时间在指针、操作符重载、多继承实现的原因,div+css制作null却与此正好相反.好吧,div+css报价我真的不知道这个问题的答案,兼职手机网页制作我知道的是不管null被Java开发者和开源社区如何批评,html静态页面制作我们必须与null共同存在.与其为null的存在感到后悔,web切图报价确保正确使用null.

但是当你运行上面的代码片段的时候,html切图制作你会在控制台上看到主线程抛出空指针异常.在使用HashMap和Integer键值的时候会发生很多这样的错误.当你运行下面代码的时候就会出现错误. importjava.util.HashMap; importjava.util.Map; /** * An example of Autoboxing and NullPointerExcpetion * * @author WINDOWS 8 */ publicclass Test { publicstatic void main(String args[]) throwsInterruptedException { Map numberAndCount = newHashMap<>(); int[] numbers = {3,7,11,17,2,5,12, count++); // NullPointerException here } } } 输出:

正如我说过的那样承接网页制作,null是Java中一个很重要的概念.null设计初衷是为了表示一些缺失的东西,兼职手机网页制作例如缺失的用户、资源或其他东西.但是web切图报价,一年后,网站div+css令人头疼的空指针异常给Java程序员带来不少的骚扰.在这份材料中符合w3c标准,我们将学习到Java中null关键字的基本细节,符合w3c标准并且探索一些技术来尽可能的减少null的检查以及如何避免恶心的空指针异常.

Exceptioninthread "main"java.lang.NullPointerException at Test.main(Test.java:25)

2)就像每种原始类型都有默认值一样网页外包接活,boolean的默认值为false,不严格的说是所有object类型的默认值.就像你创建了一个布尔类型的变量承接网页制作,Java中的任何引用变量都将null作为默认值.这对所有变量都是适用的web切图报价,如成员变量、局部变量、实例变量、静态变量(但当你使用一个没有初始化的局部变量,web切图报价编译器会警告你).为了证明这个事实符合w3c标准,你可以通过创建一个变量然后打印它的值来观察这个引用变量,html切图制作如下图代码所示:

Object obj = NULL; // Not Ok Object obj1 = null //Ok

这是关于Java中null的全部.通过Java编程的一些经验和使用简单的技巧来避免空指针异常网页外包接活,它是困惑的源头.对于方法而言web前端制作,记录下null作为参数时方法有什么样的行为也是非常重要的.总而言之,web前端制作记住承接网页制作,在java中你不能使用null引用来调用任何的instance方法或者instance变量.

输出:

privatestatic Object myObj; publicstatic void main(String args[]){ System.out.println("What is value of myObjc : " + myObj); }What is value of myObjc : null

I am static method, can be called by null reference Exceptioninthread "main"java.lang.NullPointerException at Testing.main(Testing.java:11)

正如你看到的那样,web切图报价当你直接将null赋值给基本类型符合w3c标准,然后将object赋给各自的基本类型网页外包接活,编译器不会报,jpg或psd转html但是你将会在运行时期遇到空指针异常.这是Java中的自动拆箱导致的web前端制作, can be called by null reference"); } privatevoid iAmNonStaticMethod(){ System.out.println("I am NON static method,但是不能使用其他算法或者逻辑操作web切图报价,例如小于或者大于.跟SQL不一样,网站div+css在Java中null==null将返回true,如下所示:

5) 任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针异常.一些程序员犯这样的错误,符合w3c标准他们认为自动装箱会将null转换成各自基本类型的默认值,布尔类型转换成false,但是那是不正确的,div+css制作如下面所示:

连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了承接网页制作,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,兼职手机网页制作但是null仍然陪伴着Java.

Integer iAmNull = null; inti = iAmNull; // Remember - No Compilation Error

6)如果使用了带有null值的引用类型变量web切图报价, no error

输出:

1)首先符合w3c标准,null是Java中的关键字,html切图制作像public、static、final.它是大小写敏感的网页外包接活,编译器将不能识别它们然后报错.

3)我们要澄清一些误解web前端制作,null既不是对象也不是一种类型,web前端制作它仅是一种特殊的值,你可以将其赋予任何引用类型,div前端切图你也可以将null转化成任何类型web切图报价,来看下面的代码:

这对静态和非静态的object来说都是正确的.就像你在这里看到的这样,web切图报价我将myObj定义为静态引用符合w3c标准,所以我可以在主方法里直接使用它.注意主方法是静态方法,符合w3c标准不可使用非静态变量.

4)null可以赋值给引用变量网页外包接活,你不能将null赋给基本类型变量,jpg或psd转html例如int、double、float、boolean.如果你那样做了web前端制作,编译器将会报错,web前端制作如下所示:

AmNull is NOT an instance of Integer

7)你可能知道不能调用非静态方法来使用一个值为null的引用类型变量.它将会抛出空指针异常承接网页制作,但是你可能不知道,兼职手机网页制作你可以使用静态方法来使用一个值为null的引用类型变量.因为静态方法使用静态绑定web切图报价,不会抛出空指针异常.下面是一个例子:

这是instanceof操作一个很重要的特性,网站div+css使得对类型强制转换检查很有用

i

8)你可以将null传递给方法使用符合w3c标准,这时方法可以接收任何引用类型,符合w3c标准例如public void print(Object obj)可以这样调用print(null).从编译角度来看这是可以的网页外包接活,但结果完全取决于方法.Null安全的方法,网页外包接活如在这个例子中的print方法web前端制作,不会抛出空指针异常,div+css制作只是优雅的退出.如果业务逻辑允许的话承接网页制作,推荐使用null安全的方法.

Integer iAmNull = null; if(iAmNullinstanceofInteger){ System.out.println("iAmNull is instance of Integer"); }else{ System.out.println("iAmNull is NOT an instance of Integer"); }

输出:

为什么在Java中需要学习null?因为如果你对null不注意,兼职手机网页制作Java将使你遭受空指针异常的痛苦web切图报价,并且你也会得到一个沉痛的教训.精力充沛的编程是一门艺术,web切图报价你的团队、客户和用户将会更加欣赏你.以我的经验来看符合w3c标准,导致空指针异常的一个最主要的原因是对Java中null的知识还不够.你们当中的很多已经对null很熟悉了,html切图制作但是对那些不是很熟悉的来说网页外包接活, but NullPointerException at runtime

你可以看到在编译和运行时期web前端制作,将null强制转换成任何引用类型都是可行的,web前端制作在运行时期都不会抛出空指针异常.

publicclass Test { publicstatic void main(String args[]) throwsInterruptedException { String abc = null; String cde = null; if(abc == cde){ System.out.println("null == null is true in Java"); } if(null!= null){ System.out.println("null != null is false in Java"); } // classical null check if(abc == null){ // do something } // not ok, compile time error if(abc > null){ } } }

这段代码看起来非常简单并且没有错误.你所做的一切是找到一个数字在数组中出现了多少次,div前端切图这是Java数组中典型的寻找重复的技术.开发者首先得到以前的数值,然后再加一,web切图报价最后把值放回Map里.程序员可能会以为符合w3c标准,调用put方法时,符合w3c标准自动装箱会自己处理好将int装箱成Interger,但是他忘记了当一个数字没有计数值的时候,jpg或psd转htmlHashMap的get()方法将会返回null,因为Integer的默认值是null而不是0.当把null值传递给一个int型变量的时候自动装箱将会返回空指针异常.设想一下承接网页制作,如果这段代码在一个if嵌套里,兼职手机网页制作没有在QA环境下运行web切图报价,但是你一旦放在生产环境里,网站div+cssBOOM:-)

使用其他语言的程序员可能会有这个问题符合w3c标准,但是现在IDE的使用已经使得这个问题变得微不足道.现在,符合w3c标准当你敲代码的时候网页外包接活,这个问题却会浪费你宝贵时间的.

点击次数:6368
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日体验三大网络安全在线检测服务2014年01月29日【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作 【Web前端】2014年11月20日PS画笔预设的应用详解2014年01月28日httpd.conf文件内容翻译【编程语言】2015年03月12日Adobe将向使用FlashPlayer高级功能的开发者收取费用 ,,2016年06月23日导致战略失败的三大原因【编程语言】2015年06月11日网络流 【综合】2015年04月17日Android项目javadoc时出现的几个错误解决 【云计算】2015年06月17日鸟哥的Linux私房菜-----12、学习使用Shellscripts 【数据库】2015年07月08日在系统安全方面,Android8.0做出了一些重要改变 ,,2017年09月07日基于EasyDarwin实现幼儿园监控类项目 【移动开发】2015年08月07日HDU1232畅通工程(并查集) 【编程语言】2014年12月10日Linux---chroot命令的用处 【编程语言】2015年01月13日django资料网址【数据库】2015年03月09日eclipse点击后出现exitcode=13 【编程语言】2015年07月30日生成N个不同的随机数(C++,范围0~N-1) 【综合】2014年12月11日常用css单位【编程语言】2015年04月13日(每日算法)LeetCode--SetMatrixZeroes(矩阵置零)【编程语言】2014年11月26日【D3.js进阶系列—5.0】直方图 【互联网】2014年12月18日Uploadify控件上传图片+预览【综合】2014年12月09日C_Me音乐播放器源码【移动开发】2014年12月11日Web存储技术--WebStorage 【Web前端】2015年01月12日2010到2015,我的6年投资理财经验总结和反思 【移动开发】2015年08月25日NoSQL数据库MongoDB2.1开发分支发布了! ,,2016年06月23日前Oracle及SAP高管推出AnyPresence,让企业DIY移动应用 ,,2016年06月23日HoorayOS2.0开源的Web桌面应用框架 ,,2016年07月24日著名Java开发工具IntelliJIDEA11.1正式版发布 ,,2016年06月23日三个角度看SVM(1)——最大间隔分类器 【编程语言】2015年07月09日无法启动MYSQL服务”1067进程意外终止”解决办法——汇总及终极方法 【编程语言】2015年07月16日《AndroidStudio每日一贴》2.快速查看项目中最近的变更 【编程语言】2015年08月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)