构造器

Spring-IOC/DI

旧时模样 提交于 2019-12-24 15:56:15
IOC/DI 一种仅通过构造器参数、工厂方法参数或由构造器/工厂方法产生的实例的属性定义依赖关系,由容器在创造bean的过程中注入依赖的过程。下述例子来源: https://www.zhihu.com/question/23277575/answer/169698662 所谓依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的“控制 ” org.springframework.beans and org.springframework.context 是IoC容器的基础, BeanFactory 接口提供管理object的配置机制, ApplicationContext 是其子类,提供更多特性。换句话说,BeanFactory提供基本功能与配置框架,ApplocationContext是其超集。 功能 实现了解耦,解决了bean的依赖问题 由ioc容器动态注入对象的依赖,管理bean生命周期,而不手动创建依赖对象并管理。 IOC容器 org.springframework.context.ApplicationContext 象征着IOC容器,负责beans的实例化,配置与管理。容器通过读取配置元数据(configuration metadata)获取bean的构造信息,配置元数据可以是XML,注解或者java代码。

李晓菁201771010114《面向对象程序设计(Java)》第四周学习总结

▼魔方 西西 提交于 2019-12-24 14:09:19
一:理论知识学习部分 1.面向对象程序设计(OOP),在OOP中,不必关心对象的具体实现,只要能够满足用户需求即可。 2.类:类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。 3.封装:(有时称为数据隐藏),从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域。 4.对象:三个重要特性: (1)对象的行为(2)对象的状态(3)对象标识 5.识别类:首先从设计类开始,然后再往每个类中添加方法。根据程序本身的属性定义类。 6.类之间的关系:依赖,聚合,继承。 7.使用预定义类:理解类时,要知道方法名和参数。 8.对象与对象变量:要想使用对象,就必须首先构造对象,并指定其初始状态,然后,对对象应用方法。 在Java中,使用构造器构造新实例,构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该与类名相同。因此Date类的构造器名为Date.要想构造一个Date对象,需要在构造器前面加上new操作符。例如:new Date();这个表达式构造了一个新对象,这个对象被初始化为当前日期和时间。 注:对象变量不能空引用。也可以显示的将变量对象设置为null,表面这个对象变量目前没有引用任何对象。 9

java相关

点点圈 提交于 2019-12-24 07:38:46
java相关 数组 对象数组: 类名[]数组名=new 类名[] 类继承语法规则:class subclass extends superclass{} 继承的出现提高了代码的复用性。 继承的出现上类与类之间产生了关系。 重写方法必须和被重写方法具有相同的方法名称,参数列表。 重写的方法的返回值类型不能大于被重写的方法的返回值类型。 子类方法抛出的异常不能大于父类被重写方法的异常。 重写方法使用的访问权限不能小于被重写方法的访问权限。 在Java类中使用super来调用父类中的指定操作。 super可用访问父类中定义的属性。 super可用于调用父类中定义的成员方法。 super可用于在子类构造器中调用父类的构造器。 多态性 多态性是面向对象中最重要的概念,在Java中有两种体现:1:方法重载(overload)和重写(overwrite) 2:对象的多态性——可以直接应用在抽象类和接口上。 Java引用变量有两个类型:编译时类型和运行时类型。 编译时类型由声明该变量时使用的类型决定。 运行时类型由实际赋给该变量的对象决定。 父类数据类型不能强制转换子类。 兄弟类之间数据类型不能转换。 多态前提:需要存在继承或者实现关系,要有覆盖操作。 instanceof 操作符 X instanceof A:检验X是否为类A的对象,输出布尔型。 Object类

LinkedList详解(源码详解)

微笑、不失礼 提交于 2019-12-23 21:46:43
LinkedList基本结构 LinkedList底层使用 双向链表 实现,可以进行向前和向后的遍历,以及头插和尾插,获取数值也可以获取头和获取尾。 Linked继承那些类,实现那些接口 同样LinkedList也是List接口的具体实现类 继承AbstractSqquentialList,实现了List,Deque,Cloneable,java.io.Serializable接口。 也就是说LinkedList不仅拥有List的方法实现,还有Deque的方法实现,也就是队列。 LinkedList允许重复?有序?允许为空? 让我们看一下LinkedList的add方法() add方法内部直接调用LinkLast在尾部添加去添加数据 允许重复 :在插入的时候并没有检查所有节点中是否有重复的 有序 :插入是按照顺序插入的 允许为空 :再进行添加时,并没有对null进行其他处理 结果: LinkedList的底层结构与常用方法 前面提到LinkedList的底层实现结构是双向链表,我们来看一下底层源码的具体实现 我们可以看出这个LinkedList的节点引用有两个,一个指向前驱,一个指向后继。 并且还创建了 两个节点,分别指向头和尾 构造器 无参构造器: public LinkedList() { } 什么都不做,因为链表的添加是链接节点不需要开辟空间等等 有参构造器:public

java中String、StringBuffer和StringBuilder的区别

送分小仙女□ 提交于 2019-12-23 21:31:37
首先我们说一下java中String、StringBuffer和StringBuilder的相同点: 通过源码我们可以发现无论是String,StringBuffer还是StringBuilder它们的底层都是使用char[]数组进行存储。 接着我们说一下它们三者之间的不同点: String:不可变的字符序列。 StringBuffer:可变的字符序列,是线程安全的,效率低。 StringBuilder:可变的字符序列,是线程不安全的,效率高。 现在我们通过源码分析它们的不同点: 1.分析String的源码 /** The value is used for character storage. */ private final char value[]; //char[]数组被final修饰,所以它是不可变的字符序列。 2.分析StringBuffer的源码 char[] value; //在StringBuffer的父类中,没有用final修饰,是一个可变char[]数组 public StringBuffer() { super(16); //调用父类的构造器方法 } //父类的构造器 AbstractStringBuilder(int capacity) { value = new char[capacity]; //默认为我们创建了一个长度为16的char[]数组 } /

Guice:最好用的依赖注入框架

妖精的绣舞 提交于 2019-12-23 17:32:40
首先在你的maven项目里引入 还可以自动注入Set,Map容器,但是得首先加上扩展库 我没有使用官方的例子,写个最简单的HelloWorld Guice里最常用的两个注解就是@Singleton和@Inject,Singleton表示构建的对象是单例的,Inject表示被标注的字段将使用Guice自动注入。在一般的项目中这两个注解一般可以完成90%以上的装配工作。 Guice需要实例化对象,请确保相应被实例化的对象有默认构造器。 当某个接口有多个实现时,我们使用@ImplementedBy注解在接口定义上,指定接口的具体实现类 如果我们不用Singleton标注,每次获取实例时,Guice会重新构造一个,这个会有反射构造器的性能损耗,在高性能场景下,请谨慎。 我们还可以使用@Named名称指令来指定依赖注入实现 我们不使用字段注入,改用构造器注入,如果我们需要在构造器里做一些特别的初始化工作 日照山太执行首架A320型飞机定检完工交付 来源: CSDN 作者: 大魔王薇薇薇 链接: https://blog.csdn.net/weixin_46023180/article/details/103663535

String s=new String(“abc”)创建了几个对象?

梦想的初衷 提交于 2019-12-23 00:07:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;现在只剩下new String("abc")了。那么,new String("abc")为什么又能被看成"abc"和new String()呢? 我们来看一下被我们调用了的String的构造器: public String(String original) { //other code ... } 大家都知道,我们常用的创建一个类的实例(对象)的方法有以下两种: 一、使用new创建对象。 二、调用Class类的newInstance方法,利用反射机制创建对象。 我们正是使用new调用了String类的上面那个构造器方法创建了一个对象

Java基础之反射

孤街醉人 提交于 2019-12-22 14:36:54
反射简介:    Java Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法   Java反射机制提供的功能   在运行时判断任意一个对象所属的类   在运行时构造任意一个类的对象   在运行时判断任意一个类所具有的成员变量和方法   在运行时调用任意一个对象的成员变量和方法   生成动态代理   主要API:    java.lang.Class:代表一个类   java.lang.reflect.Method:代表类的方法   java.lang.reflect.Field:代表类的成员变量   java.lang.reflect.Constructor:代表类的构造方法 一、Class类    对照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。一个 Class 对象包含了特定某个类的有关信息。   Class本身也是一个类   Class 对象只能由系统建立对象    一个类在 JVM 中只会有一个Class实例    一个Class对象对应的是一个加载到JVM中的一个.class文件   每个类的实例都会记得自己是由哪个 Class 实例所生成  

javascript进阶笔记(1)

做~自己de王妃 提交于 2019-12-22 12:39:04
学习js已经有一段时间了,大大小小还是能够做出一些东西来。不过觉得可惜的是,还是对js本身这门语言不是很熟悉,总有一点雾里看花的感觉,看得见,但是看不清楚。最近发现有一本关于js的叫做《忍者秘籍》的书刊,听说是jQuery作者写的,可以让初级者进阶,哇啦啦,打怪兽,加经验升级,多好的事情。于是,就有了此篇文章及其后续。闲话休谈,正事要紧! javascript是一门函数式语言(functional language)。最重要的,在js中, 函数 是 第一型对象(first-class object) ,也就是说,函数可以共处,可以将其视为其他任意类型的javascript对象。就像普通的js数据类型,函数可以被任意变量进行引用,或声明成对象字面量,甚至可以将其作为函数参数进行传递。 函数的第一型对象体现在: 1、它们可以通过字面量进行创建; 2、它们可以赋值给变量、数组或其他对象的属性; 3、它们可以作为参数传递给函数; 4、它们可以作为函数的返回值进行返回; 5、它们拥有动态创建并赋值的属性。 函数除了以上的功能外,它还包含一个功能,它们可以被调用。千万不要小瞧了函数的调用!因为不同的调用机制会产生不同的功效,特别是针对函数的this关键字。 当我们定义了一个函数,以便其他一些代码在适当的时候回头调用它,我们可以称之为回调。回调是高效利用js必不可少的一部分。

java核心技术10阅读(二)-面向对象编程

十年热恋 提交于 2019-12-22 10:46:34
对象 基于对象编程和基于过程编程的区别在于,基于过程先设计解决算法再设计数据结构形成运行的程序,而基于对象是先寻找数据结构再设计算法的反向过程。这样能帮助我们更好的封装数据,提高方法的一个复用性,以及程序的健壮性,而不好的地方是封装过程的便是处理需要额外的时间。 对象的封装就像是一个黑箱,里面具有对象的状态、方法和标识。留给外部的是对象的特定的状态入口。 对象之间的关系包括继承、聚合、依赖、接口实现等 预定义类 对象变量与c++中对象指针类似,指向的是对象的堆内存的存储的地址。 java类包含时间data和日历localdata两个对象来区分不同的问题 访问器方法只调用对象状态而不更改生成新的对象状态,更改器方法会更改原来对象状态 自定义类 构造器相当于初始函数,但是不要再构造器内定义重名的实例变量,会导致实例变量无法被初始化。构造器特点: 一:构造器与类名重名 二:构造性接受多个参数(0个及以上) 三:构造器只能用new来生效 四:构造器没有返回值 对象方法的参数包括显示和隐式参数,显示参数指方法接受的参数,隐式参数指调用方法的对象,可以用this来指向。 在有些时候, 需要获得或设置实例域的值。因此,应该提供下面三项内容: •一 私有的数据域 ; •一公有的 域访问器方法 ;(注意方法不要返回引用值,这样会将数据的私有性破坏,如果需要返回引用,则需要利用clone方法)