我知道,当我读到这个答案,我会看到,我已经忽视了一些东西

那是在我的眼睛下。但我花了最后30分钟试图弄清楚自己

没有结果。

所以,我在Java 6中编写一个程序,并发现了一些(对我来说)奇怪的功能。

为了尝试和隔离它,我做了两个小例子。

我第一次尝试以下方法:

private static int foo()

{

return null;

}

并且编译器拒绝它:类型mismatch:不能从null转换为int。

这对我很好,它尊重我熟悉的Java语义。

然后我尝试以下:

private static Integer foo(int x)

{

if (x < 0)

{

return null;

}

else

{

return new Integer(x);

}

}

private static int bar(int x)

{

Integer y = foo(x);

return y == null ? null : y.intValue();

}

private static void runTest()

{

for (int index = 2; index > -2; index--)

{

System.out.println("bar(" + index + ") = " + bar(index));

}

}

这个编译没有错误!但是,在我看来,应该有一个类型转换错误

在线

return y == null ? null : y.intValue();

如果我运行程序,我得到以下输出:

bar(2) = 2

bar(1) = 1

bar(0) = 0

Exception in thread "main" java.lang.NullPointerException

at Test.bar(Test.java:23)

at Test.runTest(Test.java:30)

at Test.main(Test.java:36)

你能解释这个行为吗?

更新

非常感谢你的许多澄清的答案。我有点担心,因为

这个例子不符合我的直觉。有一件事扰乱了我

一个null被转换为一个int,我想知道结果会是什么

be:0 like in C?这将是非常奇怪的。

很好,转换是不可能在运行时(空指针异常)。

java null转integer_java – 从null到int可以转换?相关推荐

  1. java date 转integer_java 中Date的各种格式转换

    把java.util.Date格式的时间转为java.sql.Date格式的时间 java.sql.Date sqldate = new java.sql.Date(date.getTime()); ...

  2. java word转二进制_DWORD WORD到INT的转换

    最近在做一个有关TCP/TP通信的消息解析,涉及到了这方面的转换,记录一下. 首先,如果是在网络传输.消息解析的情况下,要注意一下网络传送使用的是大端还是小端模式,这影响到我们的高低位的传输顺序. W ...

  3. java null转int_将String转换为int。如果String为null,则将int设置为0

    小编典典 不用编写自己的函数,而是使用try-catch的内部构造.您的问题是,jsonarrayor jsonarray.getJSONObject(i)或值本身是a,null并且您在null引用上 ...

  4. java反射的field.get(null)

    转载自  java反射的field.get(null) 在java的反射中,通过字段获取对象,是通过 public Object get(Object obj) 字段不是静态字段的话,要传入反射类的对 ...

  5. Java中switch参数传null会引起异常——Java 语法糖

    问题 switch 参数不能是null,swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢,查找一下原因: 找到编译后的class文 ...

  6. java判空null前后,关于java:引不要再使用null判空了

    以下文章来源于Hollis ,作者上帝爱吃苹果 对于Java程序员来说,null是令人头痛的货色.时常会受到空指针异样(NPE)的骚扰.连Java的发明者都抵赖这是他的一项微小失误. 那么,有什么方法 ...

  7. java读文件块会读出null,为什么?

    java读文件块会读出null,为什么? 可以确定这个块不是最后一块 /*** 从文件中读取一块数据* @param fs* @param seel:第几块* @param vChunkSize:块大 ...

  8. Databinding:setTag(java.lang.Object)‘ on a null object reference 问题处理。

    当自定义view使用databinding来赋值时,运行发现在BindingImpl类中报错:view.setTag(java.lang.Object)' on a null object refer ...

  9. 理论+实践轻松掌握nohup java -jar xxxx.jar /dev/null 21 意义

    前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...

最新文章

  1. 树莓派安装samba共享文件
  2. 超实用 Linux下通过VNC安装Oracle
  3. python字符串截取split-python实现字符串完美拆分split()的方法
  4. 剪映导出帧率选多少_剪映帧率怎么设置?剪映帧率设置方法
  5. 用自己的ID在appstore中更新app-黑苹果之路
  6. Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务
  7. labelme实例分割_GitHub:图像分割最全资料集锦
  8. Linux服务器性能分析
  9. MySQL在其版本迭代后Online DDL功能发生了哪些变化?
  10. linux怎么和windows互访,Linux和Windows操作系统远程互访的方法
  11. C语言将raw转为bmp,RAW格式数据转BMP格式数据
  12. 四川农大2020计算机专业录取分数线,四川农业大学2020年在全国各省市分专业录取分数线!含艺体类!...
  13. linux查看xfreedrdp指令,windows和linux的远程桌面
  14. 使用iptables进行流量控制
  15. 3D或游戏画面卡顿的解决方法
  16. win7安装oracle 黑屏,苹果电脑装Windows7黑屏的原因和解决方案
  17. 源码阅读|怒肝了9道 HashMap经典面试题,需要的快速来取(不包邮哦)
  18. zencart1.55stripe信用卡内嵌支付获取卡号
  19. 【CSS】vertical-align属性
  20. 新员工加入企业微信的2种方法:邀请和被邀请

热门文章

  1. 中国内鼻扩张器市场趋势报告、技术动态创新及市场预测
  2. 前端vue项目开发流程
  3. Serverless 场景排查问题利器:函数实例命令行操作
  4. 权限不足_十分钟掌握Linux文件属性及权限操作,不再担心权限不足!
  5. 从入门到入土:python爬虫|SCU每日打卡自动填写|测试训练|
  6. 大厂螺丝钉还是开源极客?开源新手该怎么选?
  7. ARM64 Linux 内核页表的块映射
  8. 低代码已至,传统开发方式是否还有必要?
  9. 打通语言理论和统计 NLP 两个世界,Transformers/GNNs 架构能做到吗?
  10. 微软水下数据中心“浮出水面”、GitHub代码保存在北极,数据黑科技贮藏方式大曝光!...