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,一经查实,立即删除!

相关文章

怎么从mysql注册表删除用户_mysql 创建和删除用户

1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名登录主机 identified by "密码";例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所…

服务报错:java.sql.SQLException: Field ‘***‘ doesn‘t have a default value

完整异常 java.lang.RuntimeException: org.springframework.dao.DataIntegrityViolationException:Error updating database. Cause: java.sql.SQLException: Field ‘***’ doesn’t have a default value 问题原因 后端接实体类无默认值,但是前端未传参&#xf…

centos php-mysql_centOS 下安装php和mysql

使用yum install php,yum install mysql安装apache:yum install httpd httpd-devel启动apache:/etc/init.d/httpd start此时输入服务器的IP地址,应该看到apache的服务页面,端口不用输,apache默认就是使用80端口安装mysql:yum install mysql m…

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需要登录数据…

HTTP状态码——413

status code:413 Request Entiry Too large上传文件失败,报上面的错:请求实体太大。 原因:nginx有个参数client_max_body_size在限制请求实体的大小,把它改大点就好了。 {如果配置文件没有这个参数,应该会…

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

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

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

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

maven clean install命令报错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin

如果在确认命令书写正确的情况下(不同IDE使用的命令有些许差别,比如IDEA不需要加maven,直接clean),最大的可能就是target目录被占用,有进程正在读或写该目录下的文件,导致clean命令在删除该文件时失败. 意思就是: 这个问题报错一般是被占用掉了,后面提…

mysql partition 性能_通过分区(Partition)提升MySQL性能

几年前,俺写过一篇题为“The Foundation of Excellent Performance”的文章(现在仍然可以在http://www.tdan.com/i016fe03.htm看 到),俺对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,…

JAVA---jdk1.8之后的接口(接口中定义默认方法和静态方法,私有方法)

JAVA—jdk1.8之后的接口(接口中定义默认方法和静态方法) 从jdk1.8开始,接口里允许定义默认方法 格式:public default 返回值类型 方法名(参数列表){ 方法体 } public interface Demo1 {public default void method2(){System.out.println("Hello…

node 后台重定向_登录后重定向到用户原本要访问的页面《 Node.js 应用:重构与改进 #3 》...

现在我是未登录的状态 ... 可以先试着打开一个内容的编辑界面 ... 会被重定向到登录页面 ... 输入用户名 ... 密码 .. 确认登录 ... 成功以后会把用户重定向到这个用户页面上 ... 现在我想用户登录以后,可以把他重定向到他原本要访问的页面 ..回到项目 .. 打开 hook…

端口号被占用: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…

mysql截取字符串去重_mysql 截取字符串 去重 拼接

1:字符串截取LEFT(guid_,LENGTH(guid_) - 5)//1001-1002-1003 截取为 1001-10022:判断是否存在某字符串中IN(1001,1002,1003)// where id in(xxxx) 可以用查询的某个字段直接 where id in (select id from xxxx)3:根据某个字段去重复在查询结…

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。 原因:磁盘满了,不能创建临时文件。 解决方法:(逐级查看占用空间过多的目录…