构造器

Vue 认识组件化

旧巷老猫 提交于 2020-03-05 16:55:29
组件化开发 什么是组件化 如果我们将一个页面中所有的处理逻辑全部放在一起,处理起来就会变得非常复杂,而且不利于后续的管理以及扩展。 但如果,我们讲一个页面拆分成一个个小的功能块,每个功能块完成属于自己这部分独立的功能,那么之后整个页面的管理和维护就变得非常容易了 组件化思想 组件化是Vue.js中的重要思想 它提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用 任何的应用都会被抽象成一颗组件树 组件化思想的应用: 有了组件化的思想,我们在之后的开发中就要充分的利用它 尽可能的将页面拆分成一个个小的、可复用的组件 这样让我们的代码更加方便组织和管理,并且扩展性也更强 注册组件的基本步骤 组件的使用分成三个步骤: 创建组件构造器:调用Vue.extend()方法 注册组件:调用Vue.component()方法 使用组件:在Vue实例的作用范围内 我们来看看通过代码如何注册组件 <div id="app"> <!--3.使用组件--> <my-cpn></my-cpn> <script src="../js/vue.js"></script> <script> // 1.创建组件构造器对象 const cpnC = Vue.extend({ template: ` <div> <h2>我是标题</h2> <p>我是内容, 哈哈哈哈</p> <p>我是内容,

【JDK】JDK源码分析-HashMap(1)

偶尔善良 提交于 2020-03-05 04:21:10
概述 HashMap 是 Java 开发中最常用的容器类之一,也是面试的常客。它其实就是前文「 数据结构与算法笔记(二) 」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在 JDK 1.8 做了优化,当链表长度达到一定数量时会把链表转为红黑树。 因此,JDK 1.8 中的 HashMap 实现可以理解为「数组 + 链表 + 红黑树」。内部结构示意图: HashMap 的继承结构和类签名如下: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} PS: 还记得以前初读 HashMap 源码时,用了周末两天的时间,而且读完脑子里还是一头雾水。当时也没做什么笔记,这次记录一下。 代码分析 一些成员变量 // 默认初始化容量(必须是 2 的次幂) static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 // 最大容量(必须是 2 的次幂,且小于等于 2^30) static final int MAXIMUM_CAPACITY = 1 << 30; // 默认负载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; //

5.4 final修饰符

北城余情 提交于 2020-03-04 12:44:32
目录 简介 一、final成员变量(类变量、实例变量) 二、final局部变量 三、final修饰基本类型变量和引用类型变量的区别 四、可执行“宏替换”的final变量 五、final方法 六、final类 七、不可变(immutable)类 八、缓存实例的不可变类 简介 final关键字可以用于 修饰类、方法、变量 ,用于表示它修饰的类、变量、方法不可以改变。 final修饰变量时,表示该变量一旦获得初始值就不可以被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。 由于final变量获取初始值后不能被重新赋值,因此final修饰成员变量和局部变量有一定不同。 一、final成员变量(类变量、实例变量)   成员变量时随着类初始化或对象初始化而初始化的。当类初始化时,系统会为之分配内存空间,并分配初始值;当创建对象时,系统会为该实例变量分配内存,并分配默认值。因此当执行类初始化块时,可以对类变量赋值;当执行普通初始化块、构造器时可对是变量赋初始值。 因此成员变量可在定义该变量时指定默认值,也可以在初始化块、构造器中指定初始值。 final修饰的成员变量必须由程序员显示地指定初始值 ★类变量:必须在静态初始化块中指定初始化值或声明该类变量时指定初始值,而且只能在这两个地方的其中1之一。 ★实例变量:必须在非静态初始化块

JAVA中this用法小结

心已入冬 提交于 2020-03-03 23:36:29
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。 package test; public class ThisTest { private int i=0; //第一个构造器:有一个int型形参 ThisTest(int i){ this.i=i+1;//此时this表示引用成员变量i,而非函数参数i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //从两个输出结果充分证明了i和this.i是不一样的! } // 第二个构造器:有一个String型形参 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三个构造器

从源码分析Spring是如何解决循环依赖的

試著忘記壹切 提交于 2020-03-03 08:06:05
循环依赖问题 什么是循环依赖 首先看一下下面的Spring配置文件 <!-- beanA依赖于beanB --> <bean id="beanA" class="top.okay3r.ClassA"> <property name="beanB" ref="beanB"/> </bean> <!-- beanB依赖于beanA --> <bean id="beanB" class="top.okay3r.ClassB"> <property name="beanA" ref="beanA"/> </bean> 当IOC容器读取上面的配置时,就会先对beanA进行加载;在对beanA进行属性填充时,会发现beanA依赖于beanB,然后就会对beanB进行加载;当对beanB进行属性填充时,又会发现beanB依赖于beanA,于是就加载beanA… 可以想到,如果Spring的容器对于这种循环依赖问题不作出响应的处理,那么就会无限执行上面的过程。最终的结果就可能造成OOM从而导致程序崩溃 Spring中bean注入的方式 我们知道在Spring中,注入bean的方式有【构造器注入】和【setter注入】两种方式。但在我们使用Spring管理bean时,可能会遇到一种特殊的情况,那么就是上面所说的循环依赖问题 我们再看一下Spring创建bean的过程 Spring创建bean的过程

遇到多个构造器参数时要考虑用构建器

老子叫甜甜 提交于 2020-03-02 18:52:36
静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。考虑用一个类表示包装食品外面显示的营养成份标签。这些标签中有几个域是必需的:每份的含量、每罐的含量以及每份的卡路里,还有超过20个可选域:总脂肪量、饱和脂肪量、转化脂肪、胆固醇、钠等等。大多数产品都只有几个可选域中会有非零的值。 对于这样的类,应该用哪种构造器或者静态方法来编写呢?程序员一向习惯采用telescoping constructor模式,在这种模式下,你提供一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个有两个可选参数,依此类推,最后一个构造器包含所有可选参数。下面有个示例,为了简单起见,它只显示四个可选域: // Telescoping constructor pattern - does not scale well! public class NutritionFacts { private final int servingSize; // (mL) required private final int servings; // (per container) required private final int calories; // optional private final int fat; // (g) optional private final int

javase个人学习总结(十)类的封装性和构造器

你。 提交于 2020-03-02 07:38:03
封装性和构造器: 1.java三个特征之一 2.Java程序设计追求”高内聚(类的内部数据操作细节自己完成,不允许外部干涉),低耦合(仅对外暴露少量的方法用于自己使用)” 3.理解:隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,提高系统的可扩展性,可维护性,简单通俗的说,就是把该隐藏的隐藏,该暴露的暴露,就是封装性的思想(比如基础的说为了不希望外界更改内部的属性,方法等等,结合权限修饰符private等等不允许外部访问,但是将其封装在公共的方法中让外界使用但是不会被外界更改,比如公共的set,get方法供外界调用private属性;单例模式(私有化构造器,造对象的功能被隐藏,但提供只能构造一个的公共的方法获得单一对象),如果不想让类在包外被调用,就设置为缺省的等等) 4.Java四种权限修饰符(封装性前提) Private (不同类不可)<缺省(不同包不可)<protected(不同工程不可)<public 5.构造器的作用:1.创建对象2.初始化对象信息 6.若没有显式定义构造器,jvm默认生成一个空参构造器,若显式定义了含形参的构造器,jvm不再默认提供空参构造器 7.所以一个类中,至少有一个构造器(static不是不能实例化,而是不需要实例化,随类加载而加载在方法区内;abstract类虽然不能实例化,但是也有构造器,可以被继承) 8

jvm(二)、类的加载机制

浪子不回头ぞ 提交于 2020-03-01 12:22:37
一、类的加载过程 当程序主动使用某个类时,如果该类还未被加载到某个类中,则系统会经过以下三个步骤对该类初始化。 二、类的加载与ClassLoader的理解。 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生产一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址)。所有需要访问和使用类数据只能通过这个Class对象。这个加载过程需要类加载器参与。 链接:将java类的二进制代码合并到jvm的运行状态之中的过程。   验证:确保加载的类信息符合jvm规范,如:以cafe开头,没有安全方面的问题。   准备:正是为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配。    解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程。 初始化:执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译期自动收集类中所有变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)。   初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先出发其父类的初始化。   虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确枷锁和同步。 三、类加载器的作用 类加载器的作用

【Spark编程基础(2.3)】Scala语言基础—面向对象编程基础

跟風遠走 提交于 2020-03-01 05:25:35
文章目录 3 面向对象编程基础 3 面向对象编程基础 类 类的定义 什么都不返回:Unit 类成员的可见性 默认公有,其他private(本类型和嵌套类型),protected(本类型和继承类型) 封装,声明私有,getter,setter方法 私有变量,读取value=和写入value_= 方法的定义方式 参数不能用var,val去修饰;一个方法如果只有一个参数可以省略圆点而采用中缀操作符调用方法。 构造器 类主体,主构造器,类名(参数列表),可以用val和var修饰,参数自动编程类内部成员字段; 辅助构造器,调用形式:This(参数列表),辅助构造器第一个表达式需要调用此前已经定义的辅助构造器或者主构造器; 对象 单例对象,静态成员变量,不需要实例化 用object关键字定义。 单例对象分为伴生对象和孤立对象 伴生对象 鼓励对象 可以互相访问内部的方法和成员 apply方法,Scala当中独有的 apply方法调用约定: 用括号传递给类实例或单例对象名一个或多个参数时 Scala会在相应的类或对象中查找方法名为apply 且参数列表与传入的参数一致的方法 并用传入的参数来调用该apply方法 Scala调用Array类的伴生对象的apply方法 Java中创建数组 测试apply是否调用 apply方法不断构造对象 一个class一个类 给类定义一个伴生对象

Java面向对象--构造器(构造方法)

对着背影说爱祢 提交于 2020-03-01 01:00:37
构造器就是和类名相同但无返回类型的方法。用于当前或某一对象的实例化,并将当前或某一对象返回。要得到一个类的实例时,往往是要运行其构造函数的。本篇博客介绍Java面向对象中的构造器(构造方法的用法)。 构造器的概述 ☃ 构造器是Java学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。实例构造器分为缺省构造器和非缺省构造器。 修饰符 类名(参数列表){ 初始化语句; } 构造器的特征 ☃ 它具有与类相同的名称 ☃ 它不声明返回值类型。(与声明为void不同,void也算是一种返回值类型,空返回类型) ☃ 不能被static、final、synchronized、abstract、native修饰,可以被权限修饰符(public,protected,default(缺省)、private)修饰,不能有 return语句返回值 构造器的作用 ☃ 构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。 ➥ 构造器是一种特殊的方法,所以是可以重载的 构造器的分类 根据参数不同,构造器可以分为如下两类: ☃ 隐式无参构造器(系统默认提供) ☃ 显式定义一个或多个构造器(构造器的重载) 注意: ➥ Java 语言中,每个类都至少有一个