Java漫游笔记-02-07-枚举

本质

枚举是一种类
并且,所有的枚举类型都是 java.lang.Enum 的子类。

定义

下面演示如何定义一个枚举类型,它刚好有3个实例:

1
2
3
public enum State {
AVAILABLE, DISABLED, LOCKED
}

如果需要的话,还可以在枚举类型中添加一些属性、构造器和方法。
当然,构造器只是在构造枚举常量的时候被调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public enum State {
AVAILABLE("正常"), DISABLED("禁用"), LOCKED("锁定");

private final String description;

private State(String description) {
this.description = description;
}

public String getDescription() {
return this.description;
}

@Override
public String toString() {
return this.description;
}
}
阅读全文 »

Java漫游笔记-02-06-数组

本质

首先,数组本质上是一个类,从 2 个方面可以很明显地判断出来:
第一,它的初始化使用了 new
第二,它有 length 属性,它还实现了 Object 这个超类所有的方法。

声明

建议使用这样的方式:int[] array ,而不是: int array []
原因很简单:int[] 是类型, array 是变量名,不应混在一起。

阅读全文 »

Java漫游笔记-02-05-流程控制

编程规范

建议在任何情况下(哪怕是只有一个语句)都使用大括号 {} 包裹控制语句块。

例如:

1
2
3
4
5
6
7
8
9
if( true ) {
// some code
} else {
// some code
}

while (true) {
// some code
}

原因是,结构更加清晰,后续也更易于维护代码(例如,需要添加代码,直接在 {} 中添加即可)。

阅读全文 »

Java漫游笔记-02-04-字符串

内部实现

String 类代表字符串。
它是 final 修饰的类,不可继承。

1
public final class String

也就是说,Java 的设计者,不允许任何人定义 String 的子类。
因此,如果有一个 String 的引用,那么它引用的一定是 String 对象。

String 对象是常量,是不可变的,所以可以共享。

1
private final char value[];

反过来想,正是因为字符串的使用频率非常高,所以需要通过一种共享机制来保证性能

String 的 API 比较稳定(1.8 新增了 join() 方法),大部分方法都需要熟练掌握。
但是有一些方法确实容易让人混淆,例如:split()substring()
具体用法,可以参考我编写的 StringApiTest
另外,第三方类库 org.apache.commons.lang3.StringUtilsString 很好的补充,建议使用。

如果要比较字符串的内容是否相等,不用想,直接使用 equals() 或者 equalsIgnoreCase() 就对了。
== 只能用来确定两个字符串是否存放在同一个位置。

阅读全文 »

Java漫游笔记-02-03-变量和常量

变量

  • 命名,大小写敏感,尽量使用有意义单词组合命名,风格统一即可。

  • 可以在任何地方声明,但是建议声明应尽量靠近其第一次被使用的位置
    一方面是便于阅读,另一方面也有利于缩小变量的作用域。

  • 每行只声明一个变量。
    一方面是便于阅读,另一方面也有利于 debug 。

  • 先初始化后使用。

阅读全文 »

Java漫游笔记-02-02-运算符

加减乘除

+ - * / 很好理解。

除法里面,整型除以 0 ,会抛异常,合情合理。

浮点数除以 0,就有点奇葩了:
正浮点数除以 0 ,结果为正无穷大;
负浮点数除以 0 ,结果为负无穷大;
浮点数 0 除以 0 ,结果为 NaN;

这些知道就好,保证不除 0 ,才是关键

还有 % 表示取余数,有时候会用到。
例如:判断奇偶数。这种情况,建议“判偶不判奇”
因为:
1 % 2 = 1 是奇数,-1 % 2 = -1,也是奇数。
不如 i % 2 == 0 判断条件简单,且不易出错。

阅读全文 »

Java漫游笔记-02-01-数据类型

基本数据类型

  • 数据类型长度是固定的,与操作系统无关。

  • 没有任何 unsigned 类型,也就是都包含负数。

  • 强烈建议在使用 longfloat 类型时,显式声明后缀(并且是大写的后缀:LD)。

    因为:
    没有后缀的浮点数,例如:3.14,默认为 double 类型。
    没有后缀的整数,例如:1024,默认为 int 类型。

阅读全文 »

Java漫游笔记-01-环境配置

下载 JDK

前往 Oracle 的官方网站下载:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装 JDK

建议:

  • 安装路径不要包含空格
  • 保留 JDK 版本号

例如:D:\dev\java\jdk1.8.0_25

阅读全文 »