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))
}
}