Java中instanceof关键字的用法
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
instanceof关键字的作用是判断一个对象是否是一个具体类的实例,我们在重写equals方法中要先判断是否是同一对象,之后再判断一个对象是否是另一个的实例,如果是判断各个属性值以判断是否是同一对象,不是一定不是同一对象。
下面是String中equals的方法源码:
也是先判断是否为同一对象,利用instanceof关键字判断是否是String的实例(任何字符串都是String的实例),如不是对字符串中每个字符进行比较
下面是instanceof的简单举例:
package dmeo_1; public class Student extends Person{ public static void main(String[] args) { if ("a" instanceof String) {
//所有的字符串都是String的实例
System.out.println("字符串是Stringde实例");
} //只是声明了对象并没有创建,所以instanceof判断是false
Student s1 = null;
Student s2 = null;
if (s1 instanceof Student) {
System.out.println("s1是Student的实例");
}
if (s2 instanceof Student) {
System.out.println("s2是Student的实例");
} //创建了对象实例,判断为true
s1 = new Student();
s2 = new Student();
if (s1 instanceof Student) {
System.out.println("s1是Student的实例");
}
if (s2 instanceof Student) {
System.out.println("s2是Student的实例");
} /*任何类的父类都是Object类,可以这样理解,我们在创建子类对象的时候,
调用子类的构造方法时会默认调用父类无参的构造方法,其实是会创建父类的对象的,,有继承关系的可以判断出为true*/
if (s1 instanceof Object) {
System.out.println("s1是Object的实例");
} Object obj = new Student();
if (obj instanceof Student) {
System.out.println("obj是Student的实例");
} Student s3 = new Student();
if (s3 instanceof Person) {
System.out.println("s3是Student的父类Person的实例");
}
}
} class Person{ }
输出:
字符串是Stringde实例
s1是Student的实例
s2是Student的实例
s1是Object的实例
obj是Student的实例
s3是Student的父类Person的实例
Java中instanceof关键字的用法的更多相关文章
- JAVA中INSTANCEOF关键字的用法总结
https://www.cnblogs.com/jay36/p/7519145.html https://www.cnblogs.com/zjxynq/p/5882756.html https://b ...
- java中synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...
- Java关键字-----------------java中synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...
- Java中instanceof关键字的理解
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: res ...
- 关于Java中static关键字的用法以及从内存角度解析
在Java中,static可以用来修饰成员变量和成员方法. 修饰成员变量,称为静态成员方法 修饰静态方法,称为静态成员方法 搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分 ...
- java中native关键字的用法
前言: 如果阅读过JDK的源码,我们会发现Thread.java类里有一个方法比较特殊 private native void start0(); 概念: native关键字说明其修饰的方法是一个原生 ...
- JAVA中 this关键字的用法
this 在类中就是代表当前对象,可以通过 this 关键字完成当前对象的成员属性.成员方法和构造方法的调用. 那么何时用 this? 当在定义类中的方法时,如果需要调用该类对象,就可以用 this来 ...
- Java中this关键字的用法
this关键字作用: 1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据. 2. 在一个构造函数中可以调用另外一个构造函数初始化对 ...
- Java中final关键字的用法
随机推荐
- caffe+GAN︱PPGN生成模型5则官方案例(caffe版)
一.效果与架构 PPGN 整合了对抗训练.cnn特征匹配.降噪自编码.Langevin采样:在NIPS2016得到了Ian Goodfellow的介绍. PPGN生成的图像同类差异化大,可根据指定生成 ...
- 使用mongoVUE删除大量数据的情况下失效问题
昨天有一个系统出现了问题,导致半夜时大量的错误数据产生,早晨一早接到上边通知让把这些数据尽数删除. 不可否认在数据操作时mongoVUE更加直观,因此一般情况下我也都是使用这个工具,但是今天却出现了问 ...
- SQLyog键盘快捷方式
SQLyog键盘快捷方式 连接 Ctrl+M 创建新连接 Ctrl+N 以当前连接属性创建新连接 Ctrl+F4/Ctrl+W 断开当前连接 Ctrl+Tab 切换到下一个连接 Ctrl+Shift+ ...
- No bean named 'hibernateTemplate' is defined
1.错误描述 WARN:2015-05-01 15:42:22[localhost-startStop-1] - Exception encountered during context initia ...
- (三十)java多线程一
我们通常在电脑中打开的应用称作进程,一个应用就是一个进程,而一个进程里边一般包含多个线程. 系统要为每一个进程分配独立的内存空间,而进程里的多个线程共用这些内存. 我们通常所写的main方法就是一个线 ...
- systemd 编写服务管理脚本
我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql.web server等.因此管理 linux 服务器主要工作就是配置并管理上面运行的各种服务程序.在 linux 系统中 ...
- 谈下spring下的 aop日志记录
在我们开发当中 我们需要对系统用户行为和 系统异常信息有个统一记录 以便后期的 用户行为分析和bug修复 当我们有这个需求时 我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...
- ASP.NET CORE的Code Fist后Models更改了怎么办?
上次我写到MVC的code fist后,自动生成数据库并自动生成web页面了 点击打开链接 那么随着项目需求的逐步明确,model变化了怎么办呢?其实和上次一样的,有两条关键的语句要记住 Add-Mi ...
- 通过回调函数的理解来进一步理解ajax及其注意的用法
一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...
- 极速搞定1小时不出结果SQL的优化(SQL Tuning)
今天帮用户做了一个SQL TUNING,原来为1个多小时不出结果,TUNING后为几秒,图片为我调优时参考的explain plan,隐去某些具体信息,虽然通过该计划,不能完全确定SQL慢的原因,但稍 ...