Java学习笔记(注释、对象初始化过程、单例模式)

来源:互联网 发布:netsh绑定mac 编辑:程序博客网 时间:2024/06/06 16:32

面向对象


9.帮助文档的制作

9.1注释

- 原则:

1、注释形式统一

在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范。

2、注释内容准确简洁

内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。

- 注释格式:

 1. 单行(single-line)注释:“//……”

 2. 块(block)注释:“/……/”

 3. 文档注释:“/*……/”

P.S. 注释引用@shiyuezhong: java代码注释规范

9.2 eclipse生成文档的方法

使用eclipse生成文档(javadoc)主要有三种方法:

  1. 在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步。
    在Javadoc Generation对话框中有两个地方要注意的:
    javadoc command:应该选择jdk的bin/javadoc.exe
    destination:为生成文档的保存路径,可自由选择。
    按finish(完成)提交即可开始生成文档。

    • 用菜单选择:File->Export(文件->导出),
      剩下的步骤和第一种方法是一样的。

    • 选中要生成文档的项目,然后用菜单选择,
      Project->Generate Javadoc直接进入Javadoc Generation对话框,剩余的步骤就和第一种方法在Javadoc Generation对话框开始是一样的。

10.对象的初始化过程

class Person{    private String name="张某";    private int age;    private static String country = "cn";    Person(String name, int age){        this.age = age;        this.name = name;    }    {        System.out.println(name+".."+age);    }    public void setName(String name){        this.name = name;    }    public void speak(){        System.out.println(this.name+"..."+this.age);    }    public static void showCountry(){        System.out.println("country"+country);    }}class PersonDemo{    public static void main(String[] args){            Person p = new Person("张三",20);            p.setName("李四");    }}
  • Person p = new Person(“张三”,20);

    1. 先将Person.class文件通过jvm从硬盘加载入内存空间,并开辟堆内存空间;

      • 执行该类中static代码块,如果有的话,给Person.class类进行初始化;
      • 栈内存中创建一个main,p变量,堆内存中创建一个new Person()并分配地址;
      • 在堆内存创建对象特有属性name和age,并默认赋予初始化值(name=null,age=0),接着对这两属性显式初始化(name=”张某”);
      • 对对象进行构造代码块初始化;
      • 对对象进行对应的构造函数初始化(name=”张三”,age=20);
      • 将new Person()内存地址赋给栈内存中p变量。

      • p.setName(“李四”);

ps:非静态变量或者功能前一般省略this,静态变量或功能前省略类名;

11.单例模式

单例设计模式:解决一个类在内存只存在一个对象。

11.1 为何保证对象唯一:

  1. 为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
  2. 还为让其他程序可以访问到该对象,只好在本类中,自定义一个对象;
  3. 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

11.2 如何实现:

  1. 将构造函数私有化;
  2. 在类中创建一个本类对象;
  3. 提供一个方法可以获取到该对象。

11.3 代码形式:

  • a)饿汉式:先初始化对象

    class Single{
    private Single(){};//将构造函数私有化;

    private static Single s = new Single();//在类中创建一个本类对象;public Single getInstance(){    return s;//提供一个方法可以获取到该对象}

    }

    class SingleDemo{
    public static void main(String[] args){
    Single ss = single.getInstance();
    Single s1 = single.getInstance();
    }
    }

  • b)懒汉式:对象在方法被调用时才初始化,即对象的延时加载


class Single{
private Single(){};//将构造函数私有化;
private static Single s = null;
public Single getInstance()
{
if(s==null)
s = new Single();
return s;//提供一个方法可以获取到该对象
}
}

class SingleDemo{    public static void main(String[] args){        Single ss = single.getInstance();        Single s1 = single.getInstance();    }}

说明:懒汉式的Single一进内存,就建好了对象;饿汉式,Single类进内存,对象还没存在,只有调用getInstance方法时,才建立对象。但应用时建议采用饿汉式

例:

class Student{    private int age;    private Student(){};//将构造函数私有化;    private static Student s = new Student();//在类中创建一个本类对象;    public Student getStudent()    {        return s;//提供一个方法可以获取到该对象    }    public void setAge(int age)    {        this.age = age;    }    public void getAge(int age)    {        return age;    }}    class SingleDemo{        public static void main(String[] args){            Student s1 = Student.getStudent();            Student s2 = Student.getStudent();        }    }
1 0