构造方法

单例设计模式------饿汉式和懒汉式

烈酒焚心 提交于 2020-01-11 04:22:23
代码: package cn.tedu.single; public class SingleDemo { public static void main(String[] args) { TaskManager taskManager=TaskManager.getInctance(); TaskManager.m(); } } //单例模式实现方式—饿汉式 //class TaskManager{ // //私有构造方法—外部拿不到构造方法 // private TaskManager(){} // //创建对象—属性私有化 // private static TaskManager t=new TaskManager(); // //公共的访问方式 // public static TaskManager getInctance(){ // return t; // } // public static void m(){ // System.out.println(1); // } //} //单例实现方式—懒汉式 class TaskManager{ //私有构造方法—外部拿不到构造方法 private TaskManager(){} //声明对象—属性私有化 private static TaskManager t; //公共的访问方式 public static

java07 类与对象&封装&构造方法

大憨熊 提交于 2020-01-11 02:01:56
1.类与对象 1.1面向对象的特点 面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即 封装、继承和多态 。 1.2 类和对象 什么是类 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。 现实中,描述一类事物: 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 举例:小猫。 属性:名字、体重、年龄、颜色。 行为:走、跑、叫。 什么是对象 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。 现实中,一类事物的一个实例:一只小猫。 举例:一只小猫。 属性:tom、5kg、2 years、yellow。 行为:溜墙根走、蹦跶的跑、喵喵叫。 类与对象的关系 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。 1.3 类的定义 类的定义格式 public class ClassName { //成员变量 //成员方法 } 定义类 :就是定义类的成员,包括成员变量和成员方法。 成员变量 :和以前定义变量几乎是一样的。只不过位置发生了改变。 在类中,方法外。 成员方法 :和以前定义方法几乎是一样的。只不过把static去掉

spring

∥☆過路亽.° 提交于 2020-01-10 17:45:53
1.Spring Bean的周期? (1)构造方法实例化bean。 (2)构造方法设置对象属性。 (3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware),传递的是不同的实例注入给bean。 (4)初始化init,使用bean。 (5)结束时,销毁destroy方法。 2.Spring MVC的工作流程? (1)发起请求到前端控制器disPatchServelet。 (2) disPatchServelet调用handlerMapping寻找对应的hander,handlerMapping返回给hander给前端控制器。 (3)disPatchServelet通过HandlerAdapter去调用controller到服务层,返回modelAndView给前端控制器。 (4)disPatchServelet再调用视图解析器解析modelAndView,返回一个view给前端控制器。 (5)disPatchServelet再渲染之后返回给用户。 3.最好能通过阅读源代码,说下IOC,AOP? IOC: 体现了工厂模式,通过BeanFactory注入实例,将对象交给容器管理,在配置文件定义相应的bean,以及设置相关的属性,让spring容器来生成实例对象以 及管理对象。 AOP:

【JAVA基础】 面向对象

拜拜、爱过 提交于 2020-01-10 11:55:56
面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了。 面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。(封装、继承、多态) 当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员。需要注意的是,当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。 除了等待java虚拟机进行自动的垃圾回收,也可以通过调用System.gc()方法来通知java虚拟机立即进行垃圾回收。当一个对象在内存中被释放时,它的finalize()方法会被自动调用,因此可以在类中通过定义finailize()方法来观察对象何时被释放。 构造方法满足 (1)方法名与类名相同。 (2)在方法名的前面没有返回值类型的声明。 (3)在方法中不能使用return语句返回一个值。 在Java中的每个类至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。一旦为该类定义了构造方法,系统就不再提供默认的构造方法了。 一个类中如果定义了有参的构造方法,最好再定义一个无参的构造方法。 构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用

序列化---Day34

独自空忆成欢 提交于 2020-01-10 09:02:32
概述: Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该 对象的数据 、 对象的 类型 和 对象中存储的属性 等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。 对象的数据 、 对象的类型和对象中 存储的数据 信息,都可以用来在内存中创建对象 ObjectOutputStream类 java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久存储 构造方法: public ObjectOutputStream(OutputStream out) : 创建一个指定OutputStream的ObjectOutputStream 序列化操作 1. 一个对象要想序列化,必须满足两个条件: 1.1 该类必须实现 java.io.Serializable 接口,Serializable 是一个标记接口,不实现此接口的类将不会使任 何状态序列化或反序列化,会抛出 NotSerializableException 。 1.2 该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用 transient 关键字修饰 2.写出对象方法 public final void

三十二、JavaSE之反射(这个部分很重要)

北城余情 提交于 2020-01-10 03:27:45
1.类加载器 1.1类加载【理解】 类加载的描述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化 类的加载 就是指将class文件读入内存,并为之创建一个 java.lang.Class 对象 任何类被使用时,系统都会为之建立一个 java.lang.Class 对象 类的连接 验证阶段:用于检验被加载的类是否有正确的内部结构,并和其他类协调一致 准备阶段:负责为类的类变量分配内存,并设置默认初始化值 解析阶段:将类的二进制数据中的符号引用替换为直接引用 类的初始化 在该阶段,主要就是对类变量进行初始化 类的初始化步骤 假如类还未被加载和连接,则程序先加载并连接该类 假如该类的直接父类还未被初始化,则先初始化其直接父类 假如类中有初始化语句,则系统依次执行这些初始化语句 注意:在执行第2个步骤的时候,系统对直接父类的初始化步骤也遵循初始化步骤1-3 类的初始化时机 创建类的实例 调用类的类方法 访问类或者接口的类变量,或者为该类变量赋值 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类 1.2类加载器【理解】 1.2

03.使用私有构造方法或枚类实现 Singleton 属性

南笙酒味 提交于 2020-01-10 02:13:26
前言 《Effective Java》中文第三版,是一本关于Java基础的书,这本书不止一次有人推荐我看。其中包括我很喜欢的博客园博主 五月的仓颉 ,他曾在自己的博文《给Java程序猿们推荐一些值得一看的好书》中也推荐过。加深自己的记忆,同时向优秀的人看齐,决定在看完每一章之后,都写一篇随笔。如果有写的不对的地方、表述的不清楚的地方、或者其他建议,希望您能够留言指正,谢谢。 《Effective Java》中文第三版在线阅读链接: https://github.com/sjsdfg/effective-java-3rd-chinese/tree/master/docs/notes 是什么 Singleton :单例,是指仅实例化一次的类,这个类表示 无状态 对象(无状态对象是指不能保存数据,没有实例变量的对象,线程安全的)。 哪里用 全局使用的类 。这时候使用单例可以避免频繁的创建和销毁,并保证内存中对象的唯一,可以节省内存。同时,因为单例公用一个实例,有利于Java的垃圾回收机制。 例如我们实现一个功能:当前某网站在线人数(网站计数器),我们可以使用一个全局对象来记录。 怎么实现 私有构造方法 public class Singleton { //私有无参构造函数 private Singleton() {} //单例对象 private static final

11082 完全二叉树的种类

戏子无情 提交于 2020-01-10 01:55:44
11082 完全二叉树的种类 时间限制:800MS 内存限制:1000K 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC Description 构造n个(2<=n<=20)叶结点的的完全二叉树(完全二叉树意味着每个分支结点都有2个儿子结点),有多少种构造方法? 注意:不改变n个结点的相对顺序,左右儿子不调换. 例如: 4个叶子节点A1,A2,A3,A4,可构造出如下完全二叉树,共5种。 再例如:5个叶子结点,A1,A2,A3,A4,A5,可构造出如下若干种完全二叉树形状,像这样的完全二叉树共有14种(下图 并未全部列出)。 输入格式 输入n,表示构造的完全二叉树有n个叶结点(2<=n<=20)。 输出格式 输出构造的完全二叉树的种类。 输入样例 5 输出样例 14 提示 把所有叶节点从左到右编上号:1,2,…,n。 无论怎样构造的完全二叉树,根节点左边的左子树和右边的右子树又都是完全二叉树, 那么n个节点的完全二叉树构造方法数等于左子树的构造方法数乘以右子树的构造方法数, 且要列举所有可能的左子树和右子树分布情况,而后所有情况方法数相加。假设左子树的 叶子为1,…,i。右子树的叶子就是:i+1,…,n。 设n个叶子的完全二叉树构造方法数为Total(n)。Total(n)的递归公式如下,这是Catalan数: Total(n) = sum{ Total

this关键字和super关键字

ε祈祈猫儿з 提交于 2020-01-09 23:37:19
this关键字: 1.可以修饰属性、方法、构造方法 2.this可以理解为当前使用的对象或者正在创建的对象,通过那个对象调用的方法谁就是this 3.可以在构造方法中通过"this(形参)"的方式调用本类中其他重载的构造方法 注意:在构造方法内部必须写在首行 super关键字: super关键字可以修饰属性、方法、构造方法 1).当子类和父类属性名同名时,可以通过"super.属性名"调用父类中声明的属性 如果想调用子类同名的属性可以使用“this.属性名” 2).子类重写父类方法后,如果子类想再次调用父类被重写的方法,可以使用"super.方法名()"调用 3)super修饰构造方法,通过在子类构造方法中使用"super(形参)"来显示调用父类构造方法 注意:super(形参)必须声明在首行 说明this(形参)和super(形参)只能出现一个 来源: CSDN 作者: weixin_46090116 链接: https://blog.csdn.net/weixin_46090116/article/details/103915662

面试(二)

陌路散爱 提交于 2020-01-09 18:51:32
4.介绍一下java的数据结构,然后手写一个栈的类 主要可以分为两类: 1)Java中定义了一个接口collection,用来存储一个元素集合 2)另一种是定义了映射(map)用来存储键/值对。 Collection接口为线性表(list)、向量(vector)、栈(stack)、队列(queue)、优先队列(priority queue)以及规则集(set)定义了通用的操作 Set(规则集) 用于存储一组不重复的元素。 重要的实现类: HashSet 。 List(线性表) 用于存储一个有序元素的集合(允许重复)。两个重要的实现类: ArrayList (数组线性表类)和 LinkedList (链表类)。 Stack(栈) 用于存储采用后进先出方式处理的对象。 Queue(队列) 用于采用先进先出方式处理的对象。不过队列用双向链表 LinkedList 实现更好 PriorityQueue用于存储按照优先级顺序处理的对象。 map(映射)是一个存储“键/值对”集合的容器对象。键很像索引,在List中,索引是整数;在Map中,键可以是任意类型的对象。映射中不能有重复的键,每个键都对于一个值。 线性表、栈、队列、优先队列: ArrayList、LinkedList 都是线程不安全的 。 vector是线程安全的。 ArrayList :用数组存储元素。这个数组是动态创建的