0%

概述

在Java中任务或方法的运行,要不就是正常执行完成(包括虚拟机退出,比如System.exit()),要不就是出现异常终止(Throwable)。本章节重点讲解在Java中对异常的处理。当程序出现异常之后,Java会抛出一个封装好的异常堆栈信息,并且终止当前的方法,异常处理机制会将代码执行交给异常处理器。整体结构如下图所示:

阅读全文 »

背景

泛型在JDK1.5引入,其本质是一种参数化类型(Parameterized Type),在使用时传入实际类型即可,即可以将操作的数据类型指定为方法签名中的一种特殊参数,可以作用在类、接口、方法中。泛型是编译期的一种概念,主要是用于编译期类型安全检查(编译之后泛型会被擦除)。

常用泛型类型常量

1
2
3
4
5
E:元素(Element),多用于java集合框架
K:关键字(Key)
N:数字(Number)
T:类型(Type)
V:值(Value)
阅读全文 »

概述

  1. 定义:外部类内部定义的类,类名不需要与文件名不同
  2. static修饰(静态内部类)
  3. 作用域(public、default、protected、private)
  4. 作用范围:编译期概念,一但编译成功就是有不同的class文件(outer.class和outer$inner.class),所以内部类的成员变量/方法名可以和外部类的相同。
  5. 分类:静态内部类,成员内部类,局部内部类,匿名内部类四种。

场景

Ø 在一个方法内部使用
Ø 在方法的一个作用域中使用
Ø 一个匿名类,用于实现一个接口
Ø 一个匿名类,用于扩展拥有非默认构造器的类
Ø 一个匿名类,用于执行字段初始化
Ø 一个匿名类,通过实例初始化进行构建(匿名内部类不能拥有构造器)

阅读全文 »

Java代码规范

命名规范(阿里规范)

  1. 名称只能是有含义的英文,不能出现下划线或美元符号

  2. 方法名、参数名、成员变量、局部变量统一使用驼峰方式命名,形如lowerCamelCase

  3. 类名使用UpperCamelCase命名,DO/BO/DTO/VO/AO/PO/UID除外

  4. 常量或类变量都需要使用大写,并且中间使用下划线分割

  5. 抽象类必须以Abstract或Base开头,异常类,必须以Exception结果,测试类必须以待测试代码_Test

  6. 类型与中括号紧挨相连来表示数组,形如int[] arrayDemo

  7. 成员变量不能以is开头

  8. 包使用小写定义,并且使用单数,中间使用英文句号分割,并且定义必须有意义和唯一性

  9. 子类与父类之间不要使用相同的成员变量命名

  10. 完全杜绝不规范的缩写,尽量使用完整的单词

  11. 在常量与变量命名时,表示类型的名称放在词尾

  12. 如果模块、接口、类、方法使用了设计模式,在命名时需体现出具体模式

  13. 接口中不要定义变量,方式不需要增加任何修饰符,都必须有注释信息

  14. 接口与实现类的命名规范是Service/**ServiceImpl、DAO/**DAOImpl

  15. 枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开

  16. 各层命名规范:

    • Service/DAO 层方法命名规约
      • 获取单个对象的方法用 get 做前缀。
      • 获取多个对象的方法用 list 做前缀,复数形式结尾如:listObjects。
      • 获取统计值的方法用 count 做前缀。
      • 插入的方法用 save/insert 做前缀。
      • 删除的方法用 remove/delete 做前缀。
      • 修改的方法用 update 做前缀。
    • 领域模型命名规约
      • 数据对象:xxxDO,xxx 即为数据表名。
      • 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
      • 展示对象:xxxVO,xxx 一般为网页名称。
      • POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
阅读全文 »

在jdk1.5中引入了注解的概念,注解是Java提供的一种对类信息(包括:类、属性与方法)进行扩展的一种行为。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation 对象,然后通过该 Annotation 对象来获取注解中的元数据信息。通过使用注解,可以将元数据保存在 Java 源代码中。并拥有如下优势:

  1. 简单易读的代码,
  2. 编译器类型检查,
  3. 使用 annotation API 为自己的注解构造处理工具。
阅读全文 »

集成javap命令

配置

  1. eclipse中点击工具栏: Run > External Tools > External Tools Configuration
  2. 双击”程序”
  3. 修改配置
1
2
3
4
Name: javap(随意)
location: jdk实际路径
Working Directory:${workspace_loc}\${project_name} (不要改)
Arguments:-c -verbose -classpath ${workspace_loc}/ ${project_name}/bin/${java_type_name}
阅读全文 »

(Singleton Pattern、单态模式、单件模式、对象创建型模式),单例模式的特点:

  1. 构造方法私有化;(不能被实例化和继承)
  2. 实例化的变量引用私有化;
  3. 获取实例的方法共有。

意图

  1. 唯一的对象实例
  2. 保证一个类仅有一个实例,并提供一个访问他的全局访问点
  3. 有状态(可变的单例对象,可以组成状态仓库)、无状态(工具类)

适用性

在下面的情况下可以使用Singleton模式:

  1. 当类只能有一个实例而且客户可以从一个总所周知的访问点访问它时。
  2. 当这个唯一实例应该是通过子类可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
  3. 系统只需要一个实例的对象,而这个对象又会被经常创建。
阅读全文 »

提交本地工程到github

1
2
3
4
5
6
7
8
9
10
git init
git add .
git commit -m "注释"
git remote add origin https://github.com/sld880311/parkspaceagent

git pull origin master
#如果出现fatal: refusing to merge unrelated histories
使用如下命令 git pull origin master --allow-unrelated-histories

git push -u origin master
阅读全文 »

命令

javap 命令用于解析类文件。其输出取决于所用的选项。若没有使用选项,javap 将输出传递给它的类的 public 域及方法。javap 将其输出到标准输出设备上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
用法: javap <options> <classes>
其中, 可能的选项包括:
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息,输出堆栈大小、各方法的 locals 及 args 数。
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类和成员 (默认)
-p -private 显示所有类和成员
-c 输出类中各方法的未解析的代码,即构成 Java 字节码的指令。
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath <path> 指定查找用户类文件的位置,如果设置了该选项,则它将覆盖缺省值或 CLASSPATH 环境变量。目录用冒号分隔。
-cp <path> 指定查找用户类文件的位置
-bootclasspath <path> 覆盖引导类文件的位置,缺省情况下,自举类是实现核心 Java 平台的类,位于 jrelibt.jar 和 jrelibi18n.jar 中。
阅读全文 »