Java中常见null简析

对于每一个Java程序员来说,null肯定是一个让人头痛的东西,今天就来总结一下Java中关于null的知识。

  • 1.null不属于任何类型,可以被转换成任何类型,但是用instanceof永远返回false.

  • 2.null永远不能和八大基本数据类型进行赋值运算等,否则不是编译出错,就是运行出错.

  • 3.null可以和字符串进行运算.

  • 4.同种类型的null,比较都返回true,null==null也返回true.

下面将用例子来验证上面的四点

首先来看看下面的一道题:

public class Null{public static void nihao(){System.out.println("你好陌生人");}public static void main(String[] args){((Null)null).nihao();}}

A、你好陌生人

B、编译不通过

C、编译通过,执行报错

D、内存溢出

答案是A

img

下面的总结将使你很清晰的了解到上面程序为什么成为这样的结果:

1.null是Java中的关键字,它不属于任何类型,只是一种特殊的值,也可以说说代表一个不确定的对象.

2.null是所有引用类型的默认值.

img

3.null可以被转化为任何类型,输出null不会抛出任何异常,这和println()的源代码有关.

img

4.null可以被转化为任何类型,所以可以调用静态方法.
在这里插入图片描述

5.null可以被转化为任何类型,但是不能调用非静态方法,运行时会出错.

6.null被强转化任何类型后,它还仅仅是一个特殊值,并不属于任何类型.

在这里插入图片描述

7.null==null返回true,被转换为同种类型的null,都返回true,不同类型直接编译报错.

在这里插入图片描述

8.用String转换后的null可以进行字符串运算,这是因为字符串进行连接的时候,编译器对null进行了特别的优化,其实就是例化StringBuilder,在调用append()方法时对null的一个特别处理,当为null时,转化为“null”,最后调用toString()返回一个String对象.

9.用八大基本类型转换后的null,不可以进行基本类型的运算,否则会出现编译或者运行错误.

在这里插入图片描述

10.null和“”并不相等,因为下面的s并没有指向某一块内存,而s1指向了一块空字符串的内存.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome浏览器F5和ctrl+F5的区别

一、正常重新加载(F5,Ctrl R,在地址栏回车,点击链接) 本节中的操作:根据缓存的缓存策略,进行处理。如果缓存没过期,就不向浏览器发请求,而是直接使用缓存。 F5或Contr…

mysql 自动生成mapper_自动生成实体类、Mapper、Mapper.xml文件

自动生成实体类、Mapper、Mapper.xml文件搭建Spring Boot Mysql MyBatis 项目核心配置pom.xml创建表配置文件生成文件结果项目结构搭建Spring Boot Mysql MyBatis 项目idea 可直接创建相应的项目及配置核心配置pom.xmlmysqlmysql-connector-java5.1.38org.springframework.…

使用Postman进行简单压力测试

使用Postman可以对服务端接口进行简单的压力测试,步骤如下: 1.配置好一个请求接口,保存在一个collection中; 2.点击Tests,添加断言检查点; 3.点击Runner按钮,打开Collection Runner界面&#…

mysql取消主从配置_mysql主从配置

搭建环境:master 192.168.127.131slave 192.168.127.128主从配置的前提:两个数据库的数据需要一模一样所以我们:在主上面建立一个数据库 在这里我们用mysql备份一下mysqldump db1 >123.sql (备份)在主上面建立一个数据库db1需要登录数据…

利用Java zip进行对文件的压缩和解压

利用Java JDK自带 进行对文件的压缩和解压 实现一个文件的zip压缩,过程可以简单地表示为: ZipEntry:表示 ZIP 文件条目 构造方法: public ZipEntry(String name) 可以用文件的相对路径来构造ZipEntry对象 ZipOutputStream: ZIP 文件格式…

mysql数据库设计教材_mySQL教程 第1章 数据库设计

E-R设计很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白。因此在学SQL语句之前,先介绍一下数据库设计。下面举例说明数据库设计&…

谷歌浏览器Network详解

Network用F12打开后,出现以下页面。5个部分分别讲解。 控制器过滤器时间轴资源内容资源概况 1.控制器 Preserve log:页面刷新也不会清空请求 Disable cache:停用浏览器缓存 Online:有网 Fast 3G、Slow 3G:自定义网速 Offline:离线模拟 2.过滤器 2.1按字符串过…

mysql5.7.14安装版_MySql5.7.14安装教程详解(解压版)_MySQL

下面进入正式的教程:第一步:下载最近的MySQL文件并且解压:下载最新版的MySQL–mysql-5.7.12下载地址将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是D:\MySQL\mysql-5.7.12-winx64第二步:配置环境变量这里不…

Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

public static void main(String[] args) {}或者 public static void main(String args[]) {}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,…

端口号被占用:Disconnected from the target VM, address: ‘127.0.0.1:XXXX‘, transport: ‘socket‘

debug启动Spring boot项目的时候,项目没有启动起来。log最后一行,显示Disconnected from the target VM, address: ‘127.0.0.1:XXXX’, transport: ‘socket’。 解决方式!!! 1、看看是谁占用了我的端口号&#xff…

Linux系统tab自动补全快捷键的时候显示cannot create temp file for here-document: No space left on device解决方案

登陆linux系统之后,使用tab自动补全快捷键的时候显示:cannot create temp file for here-document: No space left on device。 原因:磁盘满了,不能创建临时文件。 解决方法:(逐级查看占用空间过多的目录…

python画二维数组散点图_2个numpy二维数组的散点图

IIUC,你不需要zip步骤:s (arr1.ravel(), arr2.ravel())plt.scatter(*s)plt.show()或者,你也可以通过策划arr1和arr2:plt.scatter(arr1, arr2)plt.show()原因是,通过压缩,可以创建许多坐标元组:>>> list(zip(*s))[(0.5233576831070681, 0.3622905772322086), (0.67714…

双表联查mysql_MySQL的双表多表联查

最近在做EC-Mall的二次开发,遇到这么一个需求,将挂件单独显示成一个页面。由于EC-Mall的挂件是用数据模块模块类库的方式进行的,就是使用类似smarty的形式。而单独一个页面的话,数据读取需要自己写SQL语句。 现在的问题是&#xf…

Linux中的通配符

Linux中的通配符 Linux中的通配符 *匹配任意长度的任意字符,可以没有?匹配任意单个字符,至少有1个[ ]匹配指定字符范围内的任意单个字符[a-z,A-Z,0-9]匹配所有数字和字母[a-z]匹配a-z中的一个[A-Z]匹配A-Z中的一个[a-Z]匹配所有大小写字母[:upper:]所…

mysql区间段_解决针对MySQL中对于某一个区间段范围的数据更新的情况

(1)在使用更新update的过程中,我们可能会想要更新比如id段在某一个指定范围内的数据,如果我们是想要更新前面多少行的数据的话可以直接:UPDATE tb_name SET column_name‘value‘ ORDER BY id ASC LIMIT 20;比如我想要把下面的这个员工信息表…

SpringBoot实现执行sql语句打印到控制台

SpringBoot实现执行sql语句打印到控制台 1.简介 每当写完持久化语句时肯定免不了要查漏补缺一波。这里就可以将执行的sql打印到控制台来检查sql语句哪里出了问题。 2.配置 配置非常简单,只需要在配置文件中设置下mapper日志级别就可以了 application-test.prop…

BigDecimal中divide(除)方法注意问题_BigDecimal 判断大于小于

BigDecimal中divide方法抛异常: Non-terminating decimal expansion; no exact representable decimal resultIdea也会给出警告 原因是在做除法的时候出现了无限不循环小数如:33.333333333333 解决方案 在做除法的时候指定保留的小数的位数: BigDecimal rate …

python 字符串操作速度_强者一出,谁与争锋?与Python相比,C+的运行速度究竟有多快?|python|编程语言|字符串|示例|算法...

对于数据科学家而言,热爱Python的理由数不胜数。但你是否也曾问过这样的问题:Python和C或C等更专业的低级编程语言究竟有何不同呢?我想这是很多数据科学家或者Python用户曾经问过或者将来会问自己的问题。Python和C类语言之间存在许多区别,本…

Maven私有仓库、上传jar包、引用私服jar包、上传本地项目到私服_将已有jar包部署到私服

Maven私有仓库、上传jar包、引用私服jar包、上传本地项目到私服 搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找—>私有仓库—>中心仓库… 然而,我们…

java水泡_JAVA图像处理系列(八)——艺术效果:水泡

艺术效果水泡通过对图像进行变形或叠加其他图片,能够实现许多有趣的艺术效果,本文介绍类似水泡效果的实现方式,下面先看一下实现的效果。第一张为原始图像,第二张为叠加水泡效果的图像。cat.jpgcat_belb.jpg算法原理图像中的水泡效…