instanceof

Java面向对象三大特征

一曲冷凌霜 提交于 2020-04-04 17:52:22
封装 封装的好处 1、封装之后,复杂的事物被“包起来”了。复杂性封装,对外提供简单的操作入口。比如照相机,照相机内部结构、实现原理都很复杂,然而对于使用者就很简单。 2、封装之后才会形成真正的“对象”,真正的“独立体”。 3、封装意味着以后的程序可以重复使用,并且这个事物应该适应性比较强,在任何场合都适用。 4、封装之后,对于事物本身,提高了安全性【安全级别高】。 封装的步骤 1、所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。(例子:private int age,age属性私有化,在外部程序不能直接访问) 2、对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问。(属性的访问形式:读取属性的值(get);修改属性的值(set)。) 3、对外提供两个公开的方法,分别是set方法和get方法:想修改属性,调用set方法;想读取属性,调用get方法。 4、set方法的命名规范: public void set+属性名首字母大写(形参){ 安全控制; Java代码; } 例子: public void setAge(int a){ if(a<0 || a>150){ return; } age = a; } get方法的命名规范: public 参数类型 get+属性名首字母大写(){

javascript数据类型判断

两盒软妹~` 提交于 2020-04-03 01:59:58
js的变量是松散类型,也就是不像java语言那样,需要在变量前面申明对象类型,加var后对变量进行申明,类型默认为undefined,当赋值后才确定变量类型。 js变量类型判别方式我所知道的有三种,第一种是typeof,第二种是instanceof,第三种是使用对象原型的tostring方法。 (1)第一种方法typeof: var a, b = 1, c = "1", d = false, e = [], f = {}, g = function(){}; console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e); console.log(typeof f); console.log(typeof g); 控制台输出undefined,number,string,boolean,object,object,function. 为什么数组跟对象输出都是object? 我的理解是,数组跟对象是字面量写法,实际上它们等价于 var e = new Array(); var f = new Object(); 而引用类型的变量typeof都是输出object. 可以试一下 var a = /./; console.log

20.面向对象-----多态性

痴心易碎 提交于 2020-03-29 15:44:46
一、多态性的理解   一个事物的多种形态。 二、对象的多态性   父类的引用指向子类的对象。 例如: Person p = new Man();//Man是Person的子类 Object obj = new Date(); 说明:    Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译时,看左边;运行时,看右边。如果编译时的类型和运行时的类型不一致,就出现了对象的多态性。 举例: public class test { public static void main(String[] args) { Animal animal = new Cat(); //实际执行的是子类重写后的eat() animal.eat(); } } class Animal{ String name; int age; public void eat(){ System.out.println("动物进食"); } } class Cat extends Animal{ public void eat(){ String ability; System.out.println("猫类进食"); } } 三、虚拟方法调用   子类继承父类以后,对父类中的方法进行类重写。实例化父类的引用执行子类的对象(多态性)

instanceof判断问题

半城伤御伤魂 提交于 2020-03-27 16:17:46
有时候我们根据instanceof来判断对象的数据类型 但是 用instanceof判断基本数据类型时 会不靠谱 例如 let str = '123' let str1 = new String("123") console.log(str instanceof String) //false console.log(str1 instanceof String ) //true 这时候,可以重写instanceof的判断规则 class typeofString{   static [Symbol.hasInstance](x){     return typeof str === "string"       } } console.log(str typeof typeofString) //true 来源: https://www.cnblogs.com/vnwith/p/12580524.html

js 函数如何判断是被new还是被函数调用

喜夏-厌秋 提交于 2020-03-23 09:52:37
function Ajanuw() { // 函数被new上下问会改变 if (this instanceof Ajanuw) { console.log("new"); } else { console.log("fun"); } } Ajanuw(); new Ajanuw(); 函数调用返回自己的实例 const l = console.log; function Ajanuw() { if (!(this instanceof Ajanuw)) { return new Ajanuw(); } } l(Ajanuw()); // Ajanuw {} l(new Ajanuw()); // Ajanuw {} 来源: https://www.cnblogs.com/ajanuw/p/12550173.html

Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!

喜夏-厌秋 提交于 2020-03-22 22:28:56
Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹。不过此版本并不是 LTS (长期支持版) 版本,所以不要慌,我们先来了解一下好了,等 LTS 版本发布后再用也不迟。 版本说明 现在 Java 的发布节奏是每年发布两个 GA (General Availability,正式发布版),每 6 个月发布一版,发布月份为 3 月和 9月。 Oracle 只对 LTS 版本提供付费支持,其中包括 Java 8 和 Java 11,Java 11 的付费支持会持续到 2026 年,每 3 年发布一个 LTS 版,下一个 LTS 版本将是 Java 17。 Java 版本的快速更新,一定程度上是为了迎合了开发者和现在技术发展的潮流,同时也利于 Java 版本的交付,把大版本拆成小版本,起码不会出现大的延期了。 Java 14 新特性 此版本包含的 JEP (Java/JDK Enhancement Proposals,JDK 增强提案) 比 Java 12 和 Java 13 加起来都多,总共 16 个新特性。 305: instanceof 的模式匹配 (预览) 343: 打包工具 (Incubator) 345: G1 的 NUMA 内存分配优化 349: JFR 事件流 352:

Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!

怎甘沉沦 提交于 2020-03-22 22:28:40
Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹。不过此版本并不是 LTS (长期支持版) 版本,所以不要慌,我们先来了解一下好了,等 LTS 版本发布后再用也不迟。 版本说明 现在 Java 的发布节奏是每年发布两个 GA (General Availability,正式发布版),每 6 个月发布一版,发布月份为 3 月和 9月。 Oracle 只对 LTS 版本提供付费支持,其中包括 Java 8 和 Java 11,Java 11 的付费支持会持续到 2026 年,每 3 年发布一个 LTS 版,下一个 LTS 版本将是 Java 17。 Java 版本的快速更新,一定程度上是为了迎合了开发者和现在技术发展的潮流,同时也利于 Java 版本的交付,把大版本拆成小版本,起码不会出现大的延期了。 Java 14 新特性 此版本包含的 JEP (Java/JDK Enhancement Proposals,JDK 增强提案) 比 Java 12 和 Java 13 加起来都多,总共 16 个新特性。 305: instanceof 的模式匹配 (预览) 343: 打包工具 (Incubator) 345: G1 的 NUMA 内存分配优化 349: JFR 事件流 352:

Tomcat中的Listener源码片段解读

試著忘記壹切 提交于 2020-03-19 19:08:57
@Override public <T extends EventListener> void addListener(T t) { if (!context.getState().equals(LifecycleState.STARTING_PREP)) { throw new IllegalStateException( sm.getString("applicationContext.addListener.ise", getContextPath())); } boolean match = false; if (t instanceof ServletContextAttributeListener || t instanceof ServletRequestListener || t instanceof ServletRequestAttributeListener || t instanceof HttpSessionIdListener || t instanceof HttpSessionAttributeListener) { context.addApplicationEventListener(t); match = true; } if (t instanceof HttpSessionListener || (t instanceof

17日JDK 14 正式发布了,有些特性值得关注

五迷三道 提交于 2020-03-19 12:18:00
2020年3月17日JDK 14 正式发布了,其中还是有一些值得关注的新特性。如果你觉得我写的东西对于您有帮助,希望得到您的关注! 一、instanceof的模式匹配: Instanceof是java中用于检查对象引用是否为给定Type类型的实例,并返回布尔值。在Java 14之前,我们在完成判断之后,经常需要做一下类型的强制转换,如下: ~~~ if (obj instanceof String) { String str = (String) obj; // 需要强转 .. str.contains(..) .. }else{ str = .... } ~~~ Java 14增强功能特性: if (!(obj instanceof String str)) { .. str.contains(..) .. // 不再需要转换代码,实际发生了转换 } else { .. str.... } 更多示例: if (obj instanceof String str && str.length() > 5) {.. str.contains(..) ..} if (obj instanceof String str || str.length() > 5) {.. str.contains(..) ..} 注意:仅当object不为null时,instanceOf才会匹配

Java面向对象--三大基本特征之多态性

半城伤御伤魂 提交于 2020-03-18 21:29:37
Java面向对象的三大基本特征是:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),这三大基本特征是学习Java面向对象开发的基础和重点。本篇博客将详细介绍这三大基本特征中多态性的用法。 ☍ 多态性(Polymorphism) 多态性,是面向对象中最重要的概念,也是三大基本特征中最难的一个。简单的理解就是同一个行为具有多个不同表现形式或形态的能力,或者说多态就是同一个接口,使用不同的实例而执行不同操作。 ▴ 对象的多态性 ☃ 父类的引用指向子类的对象(可以直接应用在抽象类和接口上) ☃ 子类的对象可以替代父类的对象使用 ☄ 一个变量只能有一种确定的数据类型 ☄ 一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Student(); //父类Peson变量p指向Student对象 ▴ Java引用变量有两个类型 ☃ 编译时类型:由声明该变量时使用的类型决定(看‘=’左边) ☃ 运行时类型:由实际赋给该变量的对象决定(看‘=’右边) //父类 --> 子类 Person-->Student-->GirlStudent // -->BoyStudent 编译时类型 Person p1 = new Student(); 运行时类型 Person p2 = new GirlStudent(); Person