构造方法

设计模式 - 单例模式之多线程调试与破坏单例

為{幸葍}努か 提交于 2019-12-01 01:26:03
前言 在之前的 设计模式 - 单例模式(详解)看看和你理解的是否一样? 一文中,我们提到了通过 Idea 开发工具进行多线程调试、单例模式的暴力破坏的问题;由于篇幅原因,现在单独开一篇文章进行演示:线程不安全的单例在多线程情况下为何被创建多个、如何破坏单例。 如果还不知道如何使用IDEA工具进行线程模式的调试,请先阅读我之前发的一篇文章: 你不知道的 IDEA Debug调试小技巧 一、线程不安全的单例在多线程情况下为何被创建多个 首先回顾简单线程不安全的懒汉式单例的代码以及测试程序代码: /** * @author eamon.zhang * @date 2019-09-30 上午10:55 */ public class LazySimpleSingleton { private LazySimpleSingleton(){} private static LazySimpleSingleton instance = null; public static LazySimpleSingleton getInstance(){ if (instance == null) { instance = new LazySimpleSingleton(); } return instance; } } // 测试程序 @Test public void test() { try {

注解和反射

老子叫甜甜 提交于 2019-11-30 23:40:21
目录 反射 主要目的 硬编码 API 反射的过程: 获得类的类型 获得类的方法或属性 创建类的对象 思考题: 注解 常用注解: 自定义注解: 语法: 通过反射读取注解的内容 作业: 反射 主流框架中大量应用了反射技术 主要目的 对类的结构进行解析,实现代码的解耦 硬编码 Student stu = new Student(1,"张三",20); stu.study(); 反射机制对类的结构进行解析,读取类中的方法和属性,可以动态创建对象,可以实现方法的调用。 API 在java.refect包 Class 类的类型 Method 类的方法 Field 类的属性 Constructor 类的构造方法 反射的过程: 1)获得类的类型 2)获得类的方法或属性 3)创建类的对象 4)调用对象的方法或属性 获得类的类型 1)Class Class.forName("包名+类名") 2)Class 类名.class 3)Class 对象.getClass() 获得类的方法或属性 Method[] getMethods() 获得类中所有方法(包含自己定义的方法和从父类继承的方法) Method[] getDeclaredMethods() 获得类中所有方法(包含自己定义的方法) Method getMethod(String name,Class<?>... paramTypes) 获得特定方法

java第九次作业

孤街醉人 提交于 2019-11-30 23:10:30
题目: 利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。 1.Shape.java /**定义了Shape接口 * 有一个getArea的声明 */ package com; public interface Shape { double getArea(); } 2.Rectangle.java /**Rectangle类使用了Shape接口 * 有2个成员变量,长和宽 * 定义了求Rectangle类的面积的方法 * */ package com; public class Rectangle implements Shape {//使用了Shape接口 double w; //矩形的长 double l;//矩形的宽 public Rectangle(double w,double l){ //矩形的构造方法 this.w=w; this.l=l; } public double getArea(){//求矩形面积的方法 return w*l; } } 3.Triangle.java /**使用了Shape接口 * 有3个成员变量,三角形的三边 * 一个求面积的方法 * */package com; public class Triangle implements Shape{//使用了接口

String源码解析

假如想象 提交于 2019-11-30 22:45:57
定义 先看一下文档中的注释 12345 * Strings are constant; their values cannot be changed after they * are created. String buffers support mutable strings. * Because String objects are immutable they can be shared. */ String对象是常量,创建之后就不能被修改,所以该对象可以被多线程共享。 12345678910111213 public final class implements java.io.Serializable, Comparable<>, CharSequence { private final char value[]; private int hash; // Default to 0 private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; ......} 从源码中可以看出,String是被final修饰的

【Java构造方法】

Deadly 提交于 2019-11-30 22:38:43
一、方法重载的条件 1、方法名是相同的 2、方法的参数类型,个数,顺序至少有一个不同 3、方法的返回值类型可以不同,因为方法的重载与返回值类型没有任何关系 4、方法重载只能出现在同一个类里面 5、方法的修饰符可以不同,因为方法的重载与修饰符没有关系 二、构造方法,构造器,构造函数 1、构造方法也是方法 2、构造方法语法:   [修饰符] 构造方法名(参数列表){   构造方法体   } 3、构造方法名必须和类型相同 4、构造方法的作用:   A、调用构造方法可以创建Java对象,怎么调用呢?使用new关键字调用(注:其他地方的调用,采用“别名.xxx”)   B、构造方法的执行除了创建Java对象之外,还可以初始化成员变量 5、如果一个类不手动提供任何构造方法,系统会默认提供一个没有参数的构造方法,如果手动提供了,系统则不会再默认创建了 6、构造方法是可以重载的 7、成员变量在构造方法执行的时候才会被初始化 注意:构造方法没有返回值类型,并且不能写void 来源: https://www.cnblogs.com/frankruby/p/11643452.html

构造方法

99封情书 提交于 2019-11-30 21:39:24
什么是构造函数 java构造函数,也叫构造方法,是java中一种特殊的函数。函数名与相同,无返回值。 作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。 来源: https://www.cnblogs.com/fan111/p/11641374.html

Java 构造器

橙三吉。 提交于 2019-11-30 19:55:56
Java 基础构造器 构造器: 构造对象. 1.构造方法的名字必须和类名字保持一致. 2.构造方法没有返回类型.(不是没有返回值!!!!!!!!!!!!!) 3.构造方法可以定义参数,也可以不定义,参数默认的是无参构造. 4.构造方法也遵守访问修饰符的限制, 5.构造方法也支持方法的重载. 6.会先执行方法. 什么时候用自定义和构造方法: 当我们需要在产生对象的同时,从外部直接给该对象赋值,那么就可以自定义代参构造. 书写规范:标准Java类必须要有无参构造 构造方法的执行步骤: 1.先在内存中划分所占用的空间,其空间大小由类的定义决定. 2.在该空间划分属性 3.对属性进行初始化. 4.执行员在构造方法中书写代码 当调用者使用new关键字调用构造方法的时候,JVM就会按步骤产生该类的构造方法所对应的累的对象. public Date(){ } 没有返回的类型 public void Date(){ } this 意义:this代表的是一个对象(当前对象) 作用:this在本类中可以直接使用 不用产生对象 称为隐式对象 this.后面跟的是该对象的属性和行为 书写位置:可以书写在本类中所有的方法和构造中 this() 意义:此时的this代表的是本类中的构造方法 作用:this()表示的是一个构造方法重调用本类的另一个构造方法. 书写位置:this()只能写在第一行 来源:

Servlet(二)

北城余情 提交于 2019-11-30 19:43:47
servlet servlet是什么? servlet是一个运行在web服务器上,用于接收和响应客户端的http请求的一个Java程序,更多的是配合动态资源来做。当然静态资源也需要使用到servlet,只不过是tomcat已经定义好了一个defaultservlet。 servlet初次使用 1,得写一个web工程,要与一个服务器连接 2,测试该web工程 3,配置servlet 用意:告诉服务器,我们的应用有这么写个servlet, 在webcontent/WEB-INF/web.xml里面可以写上以下内容 <!-- 向tomcat报告,我这个应用里面有这个servlet,名字叫做helloservlet,具体的路径是“包名+类名” <servlet> <servlet-name> helloservlet </servlet> <servlet-class> 包名+类名 </servlet-class> </servlet> <servlet-mapping> <servlet-name> helloservlet </servlet-name> //servlet的映射,servletname: <url-pattern> /a </url-pattern> //在地址栏上的path一定要以/打头 </servlet-mapping> <servlet> <servlet

构造方法的重载

做~自己de王妃 提交于 2019-11-30 19:36:33
方法名相同,参数列表不同,被称为构造方法的重载。可以通过构造方法的重载来实现多种初始化行为,在创建对象时可以根据需要选择合适的构造方法。 下面我们通过实例来表示一下: 上图代码运行结果如下: 以上就是构造方法的重载,成员方法和构造方法都可以进行重载。 来源: https://www.cnblogs.com/huanghexiang/p/11637717.html

java面对象构造方法的重载

不羁岁月 提交于 2019-11-30 19:34:13
public class person { String name="li"; String sex="man"; public person(){ name="xiao"; sex="男"; System.out.println("执行构造方法"); } public person(String name){ this.name=name; } public void print(){ System.out.println("我的昵称叫"+this.name+"我的性别是"+this.sex); } public static void main(String[] args) { person person=null; person=new person(); person.print(); person=new person("peng"); person.print(); } } 来源: https://www.cnblogs.com/wgc1999/p/11637648.html