服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java中对null进行强制类型转换的方法

Java中对null进行强制类型转换的方法

2021-05-30 14:48Asa_Prince Java教程

小编对null进行强转会不会抛错,非常的好奇,下面小编通过实例代码给大家介绍Java中对null进行强制类型转换的方法,感兴趣的朋友参考下吧

今天很好奇,对null进行强转会不会抛错。做了如下测试得到的结果是,如果把null强转给对象,是不会抛异常的,本身对象是可以为null的。但是如果是基本类型,比如 int i = (integer)obj的强转,其实内部会调用intvalue方法去赋值给基本类型,所以这时候是会报错的。

代码如下

?
1
2
object obj = null;
integer s1 = (integer)obj;

上面能正常执行,即把null赋值给一个对象或者强行类型转换赋值给对象都是没有问题的。如果s1是 int的基本类型呢?

代码如下,编译时不会报错,但是执行,则报java.lang.nullpointerexception错误。

?
1
2
int s1 = (integer)obj;
system.out.println(s1);

我们反编译后会发现调用了在 intvalue方法去获取value,所以抛出空指针错误。

反编译后的代码:

?
1
2
3
object obj = null;
int s1 = ((integer)obj).intvalue();
system.out.println(s1);

类似的,在有int 与 integer 互相转换,即自动拆装箱的时候,要尤其注意,会不会存在空指针异常。

补充:下面看下java的null类型强转

java中的null值是可以强制转换为任何java类型的,就像(string)null是合法的,但null强转后的是无效对象,其返回值还是为null,但是例如下面这种情况

?
1
2
3
4
5
6
7
8
public class null {
  public static void main(string[] args) {
    ((null)null).haha();
  }
  public static void haha(){
    system.out.println("haha");
  }
}

输出为

haha

原因是static方法的调用是和类名绑定的,不借助对象进行访问,所以能够正确输出,如果没有加上static修饰,就会报空指针的错误了

总结

以上所述是小编给大家介绍的java中对null进行强制类型转换,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://blog.csdn.net/Asa_Prince/article/details/82416967

延伸 · 阅读

精彩推荐
  • Java教程JAVA及相关字符集编码问题研究分享

    JAVA及相关字符集编码问题研究分享

    对于JAVA学习,或多或少都会遇到这样的问题:编码基本知识,java,系统软件,url,工具软件等 ...

    mdxy-dxy3132019-12-02
  • Java教程java实现登录验证码

    java实现登录验证码

    这篇文章主要为大家详细介绍了java实现登录验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    紫薇帝星的故事9092021-05-10
  • Java教程Spring boot怎么整合Mybatis

    Spring boot怎么整合Mybatis

    spring boot的简配置方便的开发,下面通过本文给大家分享Spring boot整合Mybatis的方法,需要的朋友参考下...

    茶爸爸3822020-11-30
  • Java教程Maven生命周期和及插件原理用法详解

    Maven生命周期和及插件原理用法详解

    这篇文章主要介绍了Maven生命周期和及插件原理用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料...

    护花使者2402020-08-05
  • Java教程详解Java二叉排序树

    详解Java二叉排序树

    这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉排序树的插入和查找等,感兴趣的小伙伴们可以参考一下 ...

    林炳文Evankaka1902020-03-19
  • Java教程Java中Lambda表达式之Lambda语法与作用域解析

    Java中Lambda表达式之Lambda语法与作用域解析

    这篇文章主要介绍了Java中Lambda表达式之Lambda语法与作用域解析重点介绍Lambda表达式基础知识,需要的朋友可以参考下 ...

    hwding3092020-08-18
  • Java教程Jenkins的安装配置详解

    Jenkins的安装配置详解

    这篇文章主要介绍了Jenkins的安装配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    咸鱼Boy9382021-05-11
  • Java教程springboot prototype设置多例不起作用的解决操作

    springboot prototype设置多例不起作用的解决操作

    这篇文章主要介绍了springboot prototype设置多例不起作用的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    tyilack_小小黑5132020-09-04