摘要: A:final的基本属性 1 class Value{ 2 int i = 1; 3 } 4 5 public class FinalData { 6 7 final int a = 9;//编译阶段即为常数,该值会被封装到需要的计算过程中 8 static final int b = 99; 9 10 public static final int c = 39;11 final int d = (int)(Math.random()*20);//运行阶段,首次被赋值后即为常数12 static final int e = (int... 阅读全文
posted @ 2012-03-21 15:48 Marstar 阅读(1894) 评论(0) 推荐(0) 编辑
摘要: 与c++类似,java中的protected也是一种半开放的访问级别,public是允许所要类访问,不管你跟我是不是在一个包里,不管你跟我是不是继承关系,而private是不允许非己的类访问,不管你跟我是不是在一个包里,不管你跟我是不是继承关系。protected就是这样一个折中的级别,它是对private级别的放松。继承具有“血脉”关系,同包具有“同胞”关系,protected正是为这两种关系开了绿灯。血脉+同胞 阅读全文
posted @ 2012-03-21 14:46 Marstar 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 首先说明,java的垃圾回收机制只能回收内存里的数据,如果程序运行过程中向非内存的某些地方写入了数据,那末程序结束时我们需要将他们删除。比如,一个画图程序,运行过程中,它向屏幕上“写”了一些数据(这些数据不是存储在内存中),那么我们需要多写一些代码将他们删除:public class Shape { public Shape(int i){ System.out.println("Shape constructor"); } public void cleanup(){ System.out.println("Shape cleanup")... 阅读全文
posted @ 2012-03-21 14:32 Marstar 阅读(300) 评论(0) 推荐(0) 编辑
摘要: public class Plate { public Plate(int i){ System.out.println("Plate constructor"); }}public class DinnerPlate extends Plate { public DinnerPlate(int i){ super(i); System.out.println("DinnerPlage constructor"); }}public class Utensil { public Utensil(int i){ ... 阅读全文
posted @ 2012-03-21 13:52 Marstar 阅读(3174) 评论(0) 推荐(0) 编辑
摘要: a,对于构造函数无参数的基类而言,它的初始化,是由其子类自动调用其构造函数来完成的,如果该其类没有构造函数,编译器会自动生成一个:public class life { public life(){ System.out.println("life constructor"); }}public class animal extends life { public animal(){ System.out.println("animal constructor"); }}public class human extends animal { ... 阅读全文
posted @ 2012-03-21 13:22 Marstar 阅读(1464) 评论(0) 推荐(0) 编辑
摘要: 1 package Objects; 2 3 /** 4 * @author LP 5 * 6 */ 7 public class Cleanser { 8 9 private String m_string = new String("Cleanser");10 11 void Append(String string){m_string += string; }12 13 void Dilute(){Append("Dilute()"); }14 void Apply(){Append("Apply()");}15 ... 阅读全文
posted @ 2012-03-21 10:54 Marstar 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1 class Cup { 2 Cup(int marker) { 3 System.out.println("Cup(" + marker + ")"); 4 } 5 void f(int marker) { 6 System.out.println("f(" + marker + ")"); 7 } 8 } 9 10 class Cups {11 static Cup c1;12 static Cup c2;13 static {14 c1 = new Cup(1);15 c2 = new Cup(2);16 阅读全文
posted @ 2012-03-20 15:17 Marstar 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 先上例子: 1 public class Bowl { 2 3 public Bowl(int marker){ 4 System.err.println("Bowl:" + marker); 5 } 6 7 public void BowlFun(int marker){ 8 System.err.println("BowlFun(" + marker + ")"); 9 }10 }public class Table { public static Bowl b1 = new Bowl(1); ... 阅读全文
posted @ 2012-03-20 14:40 Marstar 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: 与C++不同,java允许在类的定义过程中,为其成员变量进行初始化。如果程序员未给类的成员变量指定初值,编译器会为其指定默认的初值。class Counter {int i;Counter() { i = 7; }// . . .上述简单代码中,成员变量i的值首先为0,接着当创建该类的对象时,i的值又被设置为7。与C++不同,java中不允许使用未经初始化的变量。在java的一个类中,初始化的顺序是由变量在类中的定义顺序决定的。即使变量的定义大量分散于方法定义的中间,那些变量仍然会在调用任何方法之前得到初始化。例如:public class Tag { public Tag(int nu... 阅读全文
posted @ 2012-03-20 14:12 Marstar 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 首先,存在this的前提是至少存在一个对象,而static修饰的玩意,在不存在对象的前提下就可以直接使用类名进行访问。这个特点就注定了,static方法不能访问非static的方法和变量,因为此时对象可能是不存在的,必须出现错误。但是反过来则是可以的,因为static方法与变量是属于类的,那当然也是属性该类的对象的。java里的this句柄,跟c++里的this指针,使用方法一致,只是在java里,this是句柄(其实就是java里的指针)。 阅读全文
posted @ 2012-03-20 11:37 Marstar 阅读(199) 评论(0) 推荐(0) 编辑