1 Math方法

Math的构造函数被标记为私有的,这代表你不能新建Math的对象。
在Math这个类中的所有方法都不需要实例变量值,因为这些方法都是静态的。所以你无需Math的实例,会用到的只有它的类本身。
Math.random()
Math.abs()
Math.round()
Math.min()
Math.max()

2 静态方法

public static int min(int a, int b)
{
  //返回最小值
}

1.不依靠实例变量,不需要对象。
2.以类的名称调用静态的方法,以引用变量的名称调用非静态方法。
3.将构造函数被标记为私有的防止被初始化,抽象类也不能被初始化。
4.只要有main()的类都算有静态的方法。
5.静态的方法不能调用非静态的变量。
6.静态的方法不能调用非静态的方法。
非静态方法可以读取静态变量,但不能调用静态方法或静态变量。
如果类已经是final的,就不需要标记它的方法为final。

3 静态变量

静态变量它的值对于所有实例来说都相同。同一类的实例共享一份静态变量。
静态变量会在该类的任何对象创建之前就完成初始化。
静态变量会在该类的任何静态方法执行之前就初始化。

4 静态final变量

一个被标记的变量代表它一旦被初始化之后就不会被改动。
常数变量的名称应该都是大写字母。
两种静态final变量的初始化:

public class Foo
{
  public static final int FOO_X = 25;
}

public class Bar
{
  public static final double BAR_SIGN;
  static
  {
    BAR_SIGN = (double)Math.random();
  }
}
//静态初始化程序是在加载类时会执行的程序代码,很适合放静态变量的初始化程序。

final也可以用来修饰非静态变量,包括了实例变量,局部变量,甚至是方法的参数。
也可以用final来防止方法的覆盖或创建子类。

5 primitive主数据类型的包装

每一个primitive主数据都有个包装用的类,且都在java.lang这个包中,所以无需去import他们。
Boolean
Character(和主数据声明不同)
Byte
Short
Integer(和主数据声明不同)
Long
Float
Double

//包装值
int i = 288;
Integer iWrap = new Integer(i)
//解开包装
int unWrapped = iWrap.intValue();

当你需要以对象方式处理primitive主数据类型时,就把它包装起来,Java5.0之前必须这么做。
但Java5.0引入了autoboxing,能自动的将primitive主数据类型转换为包装过的对象。

public void doNumsNewWay()
{
  ArrayList<Integer> listOfNumbers = new ArrayList<Integer>;
  listOfNumbers.add(3);
  int num = listOfNumber.get(0);
}

方法的参数
返回值
boolean表达式
数值运算
赋值

包装静态方法
Integer.parseInt();

6 将primitive主数据类型值转换为String

// + 是Java中唯一重载过的运算符
double d = 42.5;
String doubleString = "" + d;

double d = 42.5;
String doubleString = Double.toString(d);

7 数字的格式化

%[argument number][flag][width][.precision]type
type
d 整数
f 浮点数
x 十六进制
c 字符
tc 完整日期与时间
tr 只有时间
tA tB td 周 月 日

Date today = new Date();
String.format("%tA, %<tB %<td",today)
// < 是特殊的指示,用来告诉格式化程序重复利用之前用过的参数。

8 日期

取得当前的日期用Date
其余日期从Calendar上找
Calendar是抽象类,不能取得实例,必须使用它的静态方法取得它子类的实例。

Calendar cal = Calendar.getInstance();

9 静态的import

少打一些字
旧式写法

import java.lang.Math;
class NoStatic
{
  public static void main(String[] args)
  {
    System.out.println(Math.sqrt(2.0))
  }
}

静态import写法

import static java.lang.System.out;
import static java.lang.Math;
class NoStatic
{
  public static void main(String[] args)
  {
    out.println(sqrt(2.0))
  }
}