面向对象:
类成员:
类修饰符:
注解,public(没有修饰符,类只能在所在包中访问类),abstract,final,严格浮点 strictfp,
字段修饰符:
注解,访问控制符,static,final,transient(对象序列化有关),volatile(同步和内存模型有关)
字段默认初始化
final 修饰字段:一般定义类或者对象的持久属性,这个属性不随着类或者对象的生命周期而变化
要么声明时候初始化
要么类的对象构造时候初始化(对非static的final字段)
访问控制:private,package,protected,public
本类,本包,本子类,所有包
new 来创建对象: Body body = new Body();
构造器:就是为了合理的初始化状态
非public的构造器限制在本包中可以访问
默认构造器
复制构造器(很多类支持,StringBuilder类。。。)(更好方法使用 clone)
初始化块:字段另一种更复杂的初始化方式
static字段可以有初始化式,也可以有静态初始化块。
方法修饰符:加上 synchronized,native
静态方法:类方法
方法调用:参数列表中参数可以隐式转换(byte自动到int,int到Integer)
引元数量可变的方法:String... messages
方法结束:执行return语句,到达方法结尾,抛出未捕获的异常
返回结果不止一个:对象或者数组实现
参数都是值副本的传递
使用方法来控制访问(getter和setter方法)
方法的重载(过多的重载会影响可读性)
很多次的使用某个Math.ext() 时候,可以导入静态成员名: import static java.lang.Math.ext; 下次使用直接写 ext() 来使用
main方法: 可以输入命令,java Hello haha "hehe hihi"
本地方法 native method
1 package wzy.chapter2; 2 3 public class Body { 4 public long idNum; 5 public String name; 6 public Body orbits; 7 8 // 无论创建多少个实例,字段的副本只有一个 9 public static long nextID = 0; 10 11 Body(String bodyName, Body orbitsAround) { 12 // 一个构造器通过 this 来调用另一个构造器 13 this(); 14 name = bodyName; 15 orbits = orbitsAround; 16 } 17 18 Body(){ 19 20 } 21 // 复制构造器 22 Body(Body other){ 23 idNum = other.idNum; 24 name = other.name; 25 orbits = other.orbits; 26 } 27 28 // 初始化块:字段另一种更复杂的初始化方式 29 { 30 idNum = nextID++; 31 } 32 }