构造器

Kotlin中更方便的

元气小坏坏 提交于 2020-03-27 23:08:02
Kotlin中更方便的 构造器 次构造器 主构造器 主构造器里声明属性 函数简化 使用 = 连接返回值 参数默认值 命名参数 本地函数 字符串 字符串模板 原生字符串 数组和集合 数组和集合的操作符 forEach filter map flatMap Range Sequence 条件控制 if/else when for try-catch ?.和?: == 和 === 参考 kaixue.io 来源: https://www.cnblogs.com/chen-ying/p/12584524.html

Lombok常用注解

非 Y 不嫁゛ 提交于 2020-03-27 11:26:23
Lombok常用注解 @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。 @ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。 @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。 staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。 @NoArgsConstructor:生成无参构造器; @RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器; @AllArgsConstructor:生成全参构造器 @Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter

面向对象编程(上)

橙三吉。 提交于 2020-03-27 11:18:10
面向对象的相关概念 一、面向对象和面向过程的概念和关系 面向对象和面向过程都属于一种思考方式 面向对象侧重于 “谁来做”,以指挥者的角度思考问题,比较适合解决中大型的项目 面向过程侧重于“怎么做”,以执行者的角度思考问题,比较适合解决较小型的项目 面向对象和面向过程不是完全独立的,而是相辅相成,不可分割 总结面向对象的思路: 1、根据“名词抽取法”抽取问题中涉及到的对象 2、根据问题中的需求,分析对象涉及到的属性和方法,进而根据共同点,往上抽取成“类” 3、创建类,编写属性和方法 4、根据类创建对象,并且使用对象的属性和方法! 二、类和对象的概念、关系和区别 1、概念 对象:客观世界中所有可以被描述的事物都称为对象。 类: 具有相同属性和方法的一组对象的集合 2、关系 对象 是类的一个具体的实例 类 是对象所属的类型 3、区别 对象 是具体的、实际存在的,可以操作的 类 是抽象的,模板式的,不可以直接操作的 类和对象的创建和使用 一、类的创建 1、声明类 2、编写里面的属性 3、编写里面的方法 public class A{ 属性类型 属性名; .... public 返回类型 方法名(){ } } 二、对象的创建和使用 1、对象的创建语法(定义引用类型的变量) 类型 对象名 = new c; int a = 值; 2、对象的使用 ①访问属性 对象.属性名=值; syso(对象

小程序中自定义组件

左心房为你撑大大i 提交于 2020-03-27 02:38:35
之前做小程序开发的时候,对于开发来说比较头疼的莫过于自定义组件了,当时官方对这方面的文档也只是寥寥几句,一笔带过而已,所以写起来真的是非常非常痛苦!! 好在微信小程序的库从 1.6.3 开始,官方对于自定义组件这一块有了比较大的变动,首先比较明显的感觉就是文档比以前全多了,有木有!(小程序文档),现在小程序支持简洁的组件化编程,可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中复用,提高自己代码的可读性,降低自己维护代码的成本! 本篇文章就是手把手教你实现小程序中自定义组件,坐稳啦~ 具体实现 要做自定义组件,我们先定一个小目标,比如说我们在小程序中实现一下 WEUI 中的弹窗组件,基本效果图如下。 Step1 我们初始化一个小程序(本示例基础版本库为 1.7 ),删掉里面的示例代码,并新建一个 components 文件夹,用于存放我们以后开发中的所用组件,今天我们的目的是实现一个 弹框 组件,因此,我们在 components 组件中新建一个 Dialog 文件夹来存放我们的弹窗组件,在 Dialog 下右击新建 Component 并命名为 dialog 后,会生成对应的 json wxml wxss js 4个文件,也就是一个自定义组件的组成部分,此时你的项目结构应该如下图所示: Step2 组件初始化工作准备完成,接下来就是组件的相关配置

Spring bean的生命流程

给你一囗甜甜゛ 提交于 2020-03-26 20:26:58
Spring 是一个轻量级的 J2EE 开源框架,其目标是降低企业级应用开发难度,提高企业级应用开发效率。在日程开发中,我们会经常使用 Spring 框架去构建应用。所以作为一个经常使用的框架,了解其原理还是很有必要的。接下来我们就从宏观层面上,来看看 Spring 中的 bean 由实例化到销毁的过程。在详细讨论 bean 生命周期前,先上一张图,后面也会围绕这张图展开讨论。 图1 bean实例化过程 接下来对照上图,一步一步对 singleton 类型 bean 的生命周期进行解析: 实例化 bean 对象,类似于 new XXObject() 将配置文件中配置的属性填充到刚刚创建的 bean 对象中。 检查 bean 对象是否实现了 Aware 一类的接口,如果实现了则把相应的依赖设置到 bean 对象中。比如如果 bean 实现了 BeanFactoryAware 接口,Spring 容器在实例化bean的过程中,会将 BeanFactory 容器注入到 bean 中。 调用 BeanPostProcessor 前置处理方法,即 postProcessBeforeInitialization(Object bean, String beanName)。 检查 bean 对象是否实现了 InitializingBean 接口,如果实现,则调用

详解接口与抽象类的异同点

牧云@^-^@ 提交于 2020-03-26 10:17:27
相同之处 接口和抽象类都不能被实例化,只能被其他类实现和继承 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类必须实现这些抽象方法 不同之处 从设计层面来说 抽象是对类的抽象,是一种模板设计,接口是对行为的抽象,是对行为的规范 从组成上来说 接口里只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。 接口里只能定义公共静态常量,不能定义普通成员变量;抽象类既可以定义普通成员变量也可以定义静态常量。 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。 接口里不能包含初始化;但抽象类则完全可以包含初始化块 从用法上来说 一个类最多只能有一个父类,包括抽象类;但一个类可以实现多个接口 补充 抽象类是从多个类中抽象出来的模板,接口是更彻底的抽象,接口定义了多个类共同的行为规范,接口实现了规范与实现分离 一个接口可以有多个父接口,但接口只能继承接口,不能继承类 JDK8 的时候接口可以有默认方法和静态方法功能。 JDK9 在接口中引入了私有方法和私有静态方法。 私有方法主要作用就是作为工具方法使用,为接口中的类方法和默认方法提供支持。Java8允许在接口中定义带方法体的抽象方法和类方法,当两个默认方法或者类方法中包含一段相同的实现逻辑时

Java 对象初始化

点点圈 提交于 2020-03-25 08:46:25
对象A的创建过程: 1. 构造器实际上是静态方法。当首次创建对象A 或者 A类的静态方法/静态域首次被访问时,Java解释器查找类路径,以定位 A.class文件。(当程序创建第一个对类的静态成员的应引用时,类会被动态加载到JVM中) 2. 载入A.class,有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。 3. 当用new A()创建对象时,首先在堆上为A对象分配足够的存储空间。 4. 这个存储空间会被清零,这样就自动将A对象的所有基本类型数据设置成了默认值,引用则被设置成了null。 5. 执行所有出现于字段定义处的初始化工作。 6. 执行构造器。 属性、方法、构造方法和自由块都是类中的成员,在创建类的对象时,类中各成员的执行顺序: 1. 父类静态成员和静态初始化快,按代码出现的顺序依次执行。 2. 子类静态成员和静态初始化块,按代码出现的顺序依次执行。 3. 父类的实例成员和实例初始化块,按代码出现的顺序依次执行。 4. 父类的构造方法(如果没有明确指出调用某个父类的构造器,就会默认调用父类默认构造器,如果不存在默认构造器,编译器会出 错) 5. 子类实例成员和实例初始化块,按代码出现的顺序依次执行。 6. 子类的构造方法。 编写构造器的一条有效准则:(Java编程思想第四版中文P163) “用尽可能简单的方法使对象进入正常状态

面向对象特征:继承、多态

情到浓时终转凉″ 提交于 2020-03-25 04:32:34
继承 ·为什么要有继承?   多个 类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 ·此处的多个类称为子类,单独的这个类称为父类(基类或超类)。可以理解为:子类 is a 父类 ·类继承语法规则: class Subclass extends Superclass{} 作用:   继承的出现提高了代码的复用性   继承的出现让类与类之间产生了关系,提供了多态的前提   不要仅为了获取其他类中某个功能而去继承 ·子类继承了父类,就继承了父类的方法和属性 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。 ·在Java中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。 关于继承的规则:   子类不能直接访问父类中私有的(private)的成员变量和方法。 ·Java只支持单继承,不允许多重继承   一个子类只能有一个父类   一个父类可以派生出多个子类 方法的重写(override) ·定义:在子类中可以根据需要对从父类中继承来的方法进行改造,也称方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。 ·要求   重写方法必须和被重写方法具有相同的 方法名称、参数列表和返回值类型 。   重写方法不能使用比被重写方法更严格的访问权限。  

69道必考spring面试题

旧时模样 提交于 2020-03-24 18:49:40
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3.

让JAD反编译工具我发现了很多有意思的程序

≯℡__Kan透↙ 提交于 2020-03-24 11:46:41
本文参考原文- http://bjbsair.com/2020-03-22/tech-info/5702/ jad反编译工具,已经不再更新,且只支持JDK1.4,但并不影响其强大的功能。 基本用法:jad xxx.class,会生成直接可读的xxx.jad文件。 自动拆装箱 对于基本类型和包装类型之间的转换,通过xxxValue()和valueOf()两个方法完成自动拆装箱,使用jad进行反编译可以看到该过程: public class Demo { public static void main(String[] args) { int x = new Integer(10); // 自动拆箱 Integer y = x; // 自动装箱 } } 反编译后结果: public class Demo { public Demo(){} public static void main(String args[]) { int i = (new Integer(10)).intValue(); // intValue()拆箱 Integer integer = Integer.valueOf(i); // valueOf()装箱 } } foreach语法糖 在遍历迭代时可以foreach语法糖,对于数组类型直接转换成for循环: // 原始代码 int[] arr = {1, 2,