instanceof

Java instanceof的进一步理解

走远了吗. 提交于 2020-03-10 23:34:50
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。 instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类: public class Bill {//省略细节} public class PhoneBill extends Bill {//省略细节} public class GasBill extends Bill {//省略细节} 在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断: public double calculate(Bill bill) { if (bill instanceof PhoneBill) { /

Java里isInstance,instanceof和isAssignableFrom的区别

邮差的信 提交于 2020-03-10 18:15:04
网上搜的,觉得这段很不错,贴过来了。来源: http://bbs.csdn.net/topics/300208631 功能上没有什么区别,但是适用范围不一样。instanceof 是全静态的,isInstance() 是半静态半动态的,isAssignableFrom 是全动态的。(注——这段话没搞懂?) instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: String s=new String("javaisland"); System.out.println(s instanceof String); //true Class类的isInstance(Object obj)方法,obj是被测试的对象,如果obj是调用这个方法的class或接口 的实例,则返回true。这个方法是instanceof运算符的动态等价。 形象地:自身类.class.isInstance(自身实例或子类实例) 返回true 例:String s=new String("javaisland"); System.out.println(String.class.isInstance(s)); //true

Java中instanceof和isInstance的具体区别

て烟熏妆下的殇ゞ 提交于 2020-03-10 18:14:17
Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考SOF上的一些回答如下: obj.instanceof(class) 表示对象obj是否是class类或其子类的对象 一个对象是自身类的一个对象 一个对象是自身类父类和接口的一个对象 所有对象都是Object类的对象 凡是null有关的都是false class.isInstance(obj) 文档中这样描述 Determines if the specified Object is assignment-compatible with the object represented by this Class. This method is the dynamic equivalent of the Java language instanceof operator. 即对象obj能否转化为类class的对象,动态等价于instanceof 一个对象能转化为自身类的对象 一个对象能被转化为自身类的父类和实现的接口的对象 所有对象都能转化为Object类的对象 凡是null有关的都是false 可见与instanceof用法相同,关键在于动态等价 动态等价性 class Father{}

instanceof, isinstance,isAssignableFrom的区别

巧了我就是萌 提交于 2020-03-10 18:13:42
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: String s=new String("javaisland"); System.out.println(s instanceof String); //true Class类的isInstance(Object obj)方法,obj是被测试的对象,如果obj是调用这个方法的class或接口 的实例,则返回true。这个方法是instanceof运算符的动态等价。 形象地:自身类.class.isInstance(自身实例或子类实例) 返回true 例:String s=new String("javaisland"); System.out.println(String.class.isInstance(s)); //true Class类的isAssignableFrom(Class cls)方法,如果调用这个方法的class或接口 与 参数cls表示的类或接口相同,或者是参数cls表示的类或接口的父类,则返回true。 形象地:自身类.class.isAssignableFrom(自身类或子类.class) 返回true 例:System

instanceof, isinstance,isAssignableFrom的区别

人盡茶涼 提交于 2020-03-10 18:12:29
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: String s=new String("javaisland"); System.out.println(s instanceof String); //true Class类的isInstance(Object obj)方法,obj是被测试的对象,如果obj是调用这个方法的class或接口 的实例,则返回true。这个方法是instanceof运算符的动态等价。 形象地:自身类.class.isInstance(自身实例或子类实例) 返回true 例:String s=new String("javaisland"); System.out.println(String.class.isInstance(s)); //true Class类的isAssignableFrom(Class cls)方法,如果调用这个方法的class或接口 与 参数cls表示的类或接口相同,或者是参数cls表示的类或接口的父类,则返回true。 形象地:自身类.class.isAssignableFrom(自身类或子类.class) 返回true 例:System

认识class Class及其应用

有些话、适合烂在心里 提交于 2020-03-10 18:09:44
一. Class类 1. class Class对象描述了运行中的classes和interfaces。通过Class对象可以取得运行中的classes和interfaces的相关信息。 2. 每个class都有一个相应的Class对象。每个class的Class对象存储于编译后的class所在的文件中。所以,当JVM装载一个.class文件时就会装载一个Class对象。所以,一个class只有一个Class对象。 二. Class类的基本应用 1. 如何获取一个class的Class对象 1.1 通过Class.forName(classname)方法,该方法接收一个String参数,用以指定要生成哪个class的Class对象.,如Class.forName(“Dog”)。 1.2 通过类字面常量(class literals)来获得。 1) 字面常量的形式为:classname.class。如Dog.class。 2) 对于基本类开,每种基本类型的外覆类都有一个名为TYPE的标准数据,能够产生一个指向相应的基本类型的Class对象的reference。如int.class等同于Integer.TYPE。 1.3 通过Object.getClass()方法来获得,如 Dog dog = new Dog(); dog.getClass(); 1.4 一个产生Class对象的例子

js里面的对象继承几种方法

China☆狼群 提交于 2020-03-09 15:24:39
1原型链继承 所有的javascript 都会继承一个prototype原型对象 继承原型对象上的属性和方法。 例如: date 对象 从Date.prototype 原型对象上继承属性和方法 array 对象 从Array.prototype 原型对象上继承属性和方法 要继承 必须有父类 ----子类继承父类 继承父类的属性和方法 特点:实例可以继承自身实例的属性 父类里面的构造函数属性 父类的原型属性 缺点:不能继承子类的原型属性和方法 太单一 只能单继承 不能进行多继承 继承之后原型对象上的属性全部是共享的 子类不能直接向父类传递参数 function Person() { this.name; this.sex; this.sleep = function () { return "睡觉"; }; this.eat = function () { return "吃饭" } } //给父类添加原型属性和方法 Person.prototype.job = function () { return "工作"; }; Person.prototype.color = "黄"; function Child() { this.age = 20; } Child.prototype = new Person(); //核心 让子类的原型 等于 父类的实例对象 var child =

js复习之基础总结-数据类型;数据,变量,内存。

情到浓时终转凉″ 提交于 2020-03-09 01:37:16
本篇内容主要包括一下几点 1. 数据类型的分类和判断 基本(值)类型 Number ----- 任意数值 -------- typeof 返回i字符串 String ----- 任意字符串 ------ typeof Boolean ---- true/false ----- typeof undefined — undefined ----- typeof/=== null -------- null ---------- === symbol------symbol(str) ------typeof 对象(引用)类型 Object ----- typeof/instanceof Array ------ instanceof Function ---- typeof/instanceof typeof ,instanceof === 用来判断数据类型 js内存的主要俩大类: 栈内存:主要存放全局/局部变量的内存 堆内存:可以存放的是对象的内容 注意:如果是引用类型:栈内存中有一块空间存放着堆内存某个对象的地址信息 2. 相关问题 var a = xxx, a内存中到底保存的是什么? xxx 是一个基本数据时:存放的就是一个基本值 xxx是一个对象时:存放的就是一个对象在堆内存中存在的地址值 xxx是一个变量时:参考1,2 引用变量赋值问题: 这个比较简单

js 面向对象

主宰稳场 提交于 2020-03-08 07:55:20
1.对象的表现形式 // new Object() var person = new Object(); person.name = "sdf"; person.age = "23"; person.job = "Enginer"; person.sayName = function () { alert(this.name) } person.sayName(); //对象字面量模式 var person = { name: "sdf", age: 23, job: "Enginer", sayAge: function () { alert(this.age) } } person.sayAge();   Reflection:如果有多个对象需要创建多次 2.创建对象工厂模式 func:解决了创建多个对象模式,但是没有解决对象识别的问题(即怎么知道一个对象的类型) function creatPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function () { alert(this.name) } return o; } var person1 = creatPerson("Nicholas", 23, "Enginer"

Java:面向对象的三大特征

回眸只為那壹抹淺笑 提交于 2020-03-07 13:39:03
一、封装 1. 概述 定义:将类的某些信息隐藏在类的内部,不允许外部程序直接访问。只能通过该类提供的 特定的方法 来实现对隐藏信息的操作和访问,也就是: 要隐藏对象的信息 同时也要留出访问的接口 2. 封装的特点 隐藏类的实现细节,实现了信息的隐藏及安全性,方便修改和实现 提高了程序的模块化 ,提高系统独立性和软件的可重用性,且易于维护 具体实现是编写该类的人控制的,让 使用者只能通过事先定制好的 方法 来访问数据 ,实现者可以方便地加入控制逻辑,限制对属性的不合理操作 封装的实现 变量:使用 private 修饰,这就是变量的封装 方法:也是一种封装,封装了多条代码 类: 也是一种封装,封装了多个方法 封装的实现步骤: 封装的实现 public class Cat { //成员属性: //修改属性可见性---private 限定只能在当前类内访问,只能修饰成员变量 private String name; public Cat() { } //创建get/set方法 //在get/set方法当中添加属性的限定 public void setName(String name) { //set方法一般没有返回值 this.name = name; } public String getName() { return "我是一只名叫"+this.name+"的猫咪"; } public