headfirst java 数字静态笔记
数字静态
静态方法与非静态方法
静态方法不需要实例调用,以类的名称调用静态方法,以引用变量的名称调用非静态的方法。
//以类的名称调用静态方法
Class Math
{
min();
max();
abs();
....
}
Math.max(88,86);
//以引用变量名称调用非静态方法
song t2=new song();
t2.play();
- 带有静态方法的类一般不能初始化。和抽象类使用abstract不同,带有静态方法的类一般都是私有化构造函数,防止外部new出一个对象。
- 静态方法不能直接调用自己类的实例变量,因为通过引用变量名称来调用的方法无法知道是哪个对象的变量,运行时无法从内存堆里找出来,所以编译失败
- 静态方法也不能调用非静态方法,编译器担心非静态方法中调用了类的实例变量,结果和2一样。
静态变量
-
静态变量是共享的,同一个类的所有实例共享一份静态变量。
-
静态变量会在该类的任何对象创建之前被初始化
-
静态变量会在该类的任何静态方法执行前初始化
-
静态变量可以通过类的名称来存取
final变量
- final的变量代表你不能改变它的值.JAVA常量一般用大写的英文作变量名 并标记为static和final,final的静态变量必须在声明或静态初始化程序中赋值。
static{
DOG_CODE=420;
}
- final的method代表你不能覆盖这个方法。
- final的类代表你不能继承该类。
Primitive主数据类型的包装类
主数据类型 | 包装类 |
---|---|
booleam | Booleam |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
在autoboxing的帮助下,编译器能实现主数据类型与包装类的自动转换。应用场景包括(方法的参数,返回值,Boolean表达式,数值运算,赋值等)
下面展示一些 内联代码片
。
包装值
int i=288;
Integer iwrap=new Integer(i);
解开包装
Integer unwraped=iwrap.intValue();//自己写代码解开
Integer unwraped=iwrap;//autoboxing自动解开
主数据类型包装类的静态方法
//string 转 primitive
String s="2";
int x=Integer.parseInt(s);
//primitive 转string
double d=42.5;
string doublestring=""+d;
double d=42.5;
string doublestring=Double.toString(d);
数字格式化
Sring s=String.fomat("%[arguement number][flags][width][.precision]type",参数)
日期
输出完整的日期时间
String.fomat("%tc",newdate());
获得日期使用java.util.Date 其余功能使用java.util.calendar(抽象类)。
具体见headfirst.java P304页