构造方法

设计模式之单例模式

烂漫一生 提交于 2019-12-24 19:15:39
什么是单例设计模式? 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。 类结构图 具体实现 需要: (1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 (2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。 (3)定义一个静态方法返回这个唯一对象。 实现一:立即加载 / “饿汉模式” 立即加载就是使用类的时候已经将对象创建完毕(不管以后会不会使用到该实例化对象,先创建了再说。很着急的样子,故又被称为“饿汉模式”),常见的实现办法就是直接new实例化。 public class Singleton { // 将自身实例化对象设置为一个属性,并用static、final修饰 private static final Singleton instance = new Singleton(); // 构造方法私有化 private Singleton() {} // 静态方法返回该实例 public static Singleton getInstance() { return instance; } } “饿汉模式”的优缺点: 优点:实现起来简单,没有多线程同步问题。 缺点

java设计模式--单例模式

こ雲淡風輕ζ 提交于 2019-12-24 18:07:02
单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。 核心知识点如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。 /** * 方法一 * 单例模式的实现:饿汉式,线程安全 但效率比较低 */ public class SingletonTest { // 定义一个私有的构造方法 private SingletonTest() { } // 将自身的实例对象设置为一个属性,并加上Static和final修饰符 private static final SingletonTest instance = new SingletonTest(); // 静态方法返回该类的实例 public static SingletonTest getInstancei() { return instance; } } 方法一就是传说的中的饿汉模式 优点是:写起来比较简单,而且不存在多线程同步问题,避免了synchronized所造成的性能问题; 缺点是:当类SingletonTest被加载的时候,会初始化static的instance

spring面试题

安稳与你 提交于 2019-12-24 12:06:46
1、spring [1]IOC/DI (给定义)IOC是spring的一个特点,叫控制反转,也称之为DI。 (阐述)spring是一个IOC容器,我们可以将我们的对象交给spring管理。这时我们将对象的创建权利和组装权利全部交给spring管理,这就是所谓控制反转。spring可以通过反射调用setter方法帮我们给对象注入属性值,这就是DI。 (总结)IOC主要的作用就是解耦。 [2]AOP (给定义)APO是spring的一大特点,叫做面向切面编程。 (阐述)AOP是OOP的延续。我们在程序将一些公共的功能抽取出来,作为一个切面。在实现业务时就不需要关系这些公共的功能,当程序运行时,再动态将这些公共功能织入到我们业务中。这种现象就叫AOP。spring利用动态代理实现了AOP。可以动态的增强我们的业务方法。 (总结)进一步的解耦。动态增强业务。 [3]生命是spring (给定义)spring是一个轻量级的javaEE框架。 (阐述)spring是一个IOC容器,实现了AOP。所谓IOC就是xxxx。所谓AOP就是xxxx。 另外spring还提供对很多其他框架和技术的整合支持。比如可以快速的整合MyBatis,ActiveMQ等等。 (总结)spring就是一个粘合剂,大幅度的降低我们程序中组件的耦合度。 [4]spring中是scope都有那些值?分别有什么特点?

jdk1.8源码分析之HashMap

冷暖自知 提交于 2019-12-24 11:53:00
原文链接:https://segmentfault.com/a/1190000012926722?utm_source=tag-newest 1.概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap 。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。另外,需要注意的是,HashMap 是非线程安全类,在多线程环境下可能会存在问题。 在本篇文章中,我将会对 HashMap 中常用方法、重要属性及相关方法进行分析。需要说明的是,HashMap 源码中可分析的点很多,本文很难一一覆盖,请见谅。 2.原理 上一节说到 HashMap 底层是基于散列算法实现,散列算法分为散列再探测和拉链式。HashMap 则使用了拉链式的散列算法,并在 JDK 1.8 中引入了红黑树优化过长的链表。数据结构示意图如下: 对于拉链式的散列算法,其数据结构是由数组和链表(或树形结构)组成。在进行增删查等操作时,首先要定位到元素的所在桶的位置,之后再从链表中定位该元素。比如我们要查询上图结构中是否包含元素 35 ,步骤如下: 定位元素 35 所处桶的位置, index = 35 %

Java 封装与类

大憨熊 提交于 2019-12-24 04:01:56
  一、面向对象编程   面向对象编程三大特性:封装、继承和多态。   类是实现封装的手段,是面向对象编程的基本单元。   封装隐藏了类的内部实现细节,暴露给外界可控的操作,提高数据的完整性和安全性,提高模块的可重用性和开发效率,降低开发的复杂性。   从面向对象程序设计方法的角度看,程序中所有的东西都是对象,而程序是对象的组合,对象间通过消息传递实现协作。   二、类   类是Java程序设计的核心概念和基本单元。   类是对一类事物的特征的描述,是抽象后的描述;对象是一个实例。   1、Java没有全局变量,只有:   静态变量:隶属于类   实例变量:类体中定义,类的属性,隶属于对象。   局部变量:形参、方法内定义或代码块中定义,隶属于方法。      2、成员修饰符——public、private、protected、default   作用:实现访问权限控制。   public:被public修饰的成员,可以在任何一个类中被调用。   private:除了本类的方法能够调用私有成员(方法、属性),其他任何类都不能直接访问私有成员。   所有修饰符都能修饰数据成员、方法成员和构造方法;只有public和default能修饰类(外部类)。   3、方法重载   (1)方法名相同   (2)方法的参数签名不相同(参数类型、个数、顺序)。   (3)方法的返回类型可以不同

对象和类

南笙酒味 提交于 2019-12-24 01:35:29
基础内容部分(1) ###面向对象编程 类为对象定义属性和行为 例如:首先定义一个类(汽车类) class Car { //属性 int door;//车门 int light = 1;//车灯 //行为 (一般定义成方法) public void drive() //行驶 { //具体实现过程 } } 2.类是对象的定义,对象从类创建 //在main方法里边创建对象 Car car = new Car(); //要想访问属性 或者行为,需要使用对象成员操作符 也可以使用方法; car.light; car.drive(); 3.构造方法 //创建对象时使用new会调用构造方法 //构造方法必须和所在类类名相同 class Car { Car() //这就是构造方法 没有返回类型 可以重载 { } Car(int i) //有一个参数, 所以它与上边的Car()构成了重载 { } //如果写构造函数类中会自动默认生成一个隐式构造方法 } 4.示例代码 //主函数类 class F { public static void main ( String [ ] args ) { D tv = new D ( ) ; //创建一个D的对象tv tv . turnOn ( ) ; //调用方法 System . out . println ( "The state of tv now is

java

拈花ヽ惹草 提交于 2019-12-23 16:51:16
数据类型 得到字符在 ASCII码 中取值 (int)‘a’ 相反:P24 int c = 20 ; char s = ( char ) c ; //数据类型转化 若int越界,可在该值后加L变数据类型 输出时可以以0X23强制转换十六进制 最小值代码 byte.MIN.VALUE; 转义字符 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJdFyVNJ-1577074642039)(F:\TyporaWorkplace\文件\图片\IMG_20190115_102213.JPG)] 优先级 byte-short-char-int-long-float-double P29 类型转化 Int myFloat = Int . parseInt ( String s ) ; String = "" + a ; 输入 BufferedReader buf = new BufferedReader ( new InputStreamReader ( System . in ) ) ; //第一种 Float num = Float . parseFloat ( buf . readLine ( ) ) ; Scanner reader = new Scanner ( System . in ) ; //第二种 Int num = reader .

C#学习笔记_12_枚举&结构体

做~自己de王妃 提交于 2019-12-23 15:53:38
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch case结合使用的 注意: 1、虽然枚举中的元素的值可以相同,但是强烈不推荐这样使用 2、枚举元素默认的值类型是int型,可以修改为其他的 整型 结构体 结构体和类基本一样 相同点: 都包含字段、属性、方法 修饰的访问权限 都是通过关键字new来实例化对象 区别点: 结构体对象是在栈上开辟的空间 类对象在堆上开辟空间 结构体是值类型,不是引用类型 构造方法 结构体中不允许写无参构造方法 结构体的有参构造方法中必须要给所有的字段进行赋值 结构体中始终包含一个public权限的无参构造方法 结构体中不允许写析构方法 结构体只有一个父类叫Object,结构体不能被其他结构体或类继承,也不能继承自其他结构体和类 语法: [访问权限修饰符] struct 结构体名字 {} 来源: https://www.cnblogs.com/chriswong/p/10363178.html

java 之 static关键字使用说明

一世执手 提交于 2019-12-22 16:08:31
static 关键字 java 类加载时机: new 创建对象时 读取/设置static 静态变量被(final修饰、已在编译期把结果放在常量池的静态字段除外) 调用static 静态方法 类加载器加载类把java类加载到jvm要做以下三件事: 加载:查找和导入Class文件 链接:其中解析步骤是可以选择的 (a)检查:检查载入的class文件数据的正确性 (b)准备:给类的静态变量分配存储空间 (c)解析:将符号引用转成直接引用 初始化:对静态变量,静态代码块、普通变量、普通代码块构造方法执行初始化工作 下面详细说明第三点,初始化顺序: 父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类普通变量 父类普通代码块 父类构造方法 子类普通变量 子类普通代码块 子类构造方法 父类 public class Parent { private static String username = "hahan" ; private int oo ; static { System . out . println ( "父类静态代码块" ) ; } { System . out . println ( "父类普通代码块" ) ; } public Parent ( String username ) { System . out . println ( this .

Java标识符的命名规则

橙三吉。 提交于 2019-12-22 12:29:30
一. Java标识符的命名规则 Java语言中,为各种变量、方法和类等起的名字称为标识符 Java标识符的命名规则: 应以字母、下划线、美元符开头 后跟字母、下划线、美元符或数字 Java标识符大小写敏感,长度无限制 1.java中能用作标识符的有:26个英文字母(大、小写),数字,下划线,美元符号$。 但是不能以数字开头。 2.类名首个字母必须大写,多个单词组成的,每个单词首字母都要大写。 3.方法名一般首个字母小写(构造方法例外),多个单词组成方法名,后面单词首字母大写。 4.变量命名规则同方法名名。 注意:不能使用java中的关键字做标识符。 Java保留关键字 Java语言有51个关键字,其中const和goto虽然被保留但未使用。你不能使用保留关键字来命名类、方法或变量。 Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合 关键字不能用作标识符 标识符是大小写敏感的 合法标识符举例:age、$salary、_value、__1_value 非法标识符举例:123abc、-salary 二.java修饰符