摘要:
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 阅读全文
摘要:
先上例子: 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); ... 阅读全文
摘要:
与C++不同,java允许在类的定义过程中,为其成员变量进行初始化。如果程序员未给类的成员变量指定初值,编译器会为其指定默认的初值。class Counter {int i;Counter() { i = 7; }// . . .上述简单代码中,成员变量i的值首先为0,接着当创建该类的对象时,i的值又被设置为7。与C++不同,java中不允许使用未经初始化的变量。在java的一个类中,初始化的顺序是由变量在类中的定义顺序决定的。即使变量的定义大量分散于方法定义的中间,那些变量仍然会在调用任何方法之前得到初始化。例如:public class Tag { public Tag(int nu... 阅读全文
摘要:
首先,存在this的前提是至少存在一个对象,而static修饰的玩意,在不存在对象的前提下就可以直接使用类名进行访问。这个特点就注定了,static方法不能访问非static的方法和变量,因为此时对象可能是不存在的,必须出现错误。但是反过来则是可以的,因为static方法与变量是属于类的,那当然也是属性该类的对象的。java里的this句柄,跟c++里的this指针,使用方法一致,只是在java里,this是句柄(其实就是java里的指针)。 阅读全文
摘要:
a,构造函数可以重载b,以形参的个数,类型,类型的顺序作用差分的标志。c,主数据类型的形参,可以进行转换,小数据转大数据可自动完成,而大数据转小数据,由于可能会出现精度的损失,所以必须进行强制转换。 阅读全文
摘要:
Java中,所有对象都是创建出来的,对象的自动初始化过程,是由类的构造函数完成的。当程序员没有提供一个默认的构造函数时,编译器会生成一个默认的构造函数,用于创建一个空对象。但是当程序员提供了一个或多个构造函数后,编译器就不会再生成默认的构造函数。所以,假如程序员提供了一个有参数的构造函数,而在创建该类的对象时,直接采用new obj的方式,即未提供任何参数,则编译器会提示找不到相应的构造函数。一句话总结:有,就只能用你的,没有,哥帮你生成一个空的。 1 public class Flower { 2 3 private int petalCount = 0; 4 privat... 阅读全文
摘要:
基本可认为与C++相同,但是有一点值得注意的地方是:赋值的时候,可能会存在“别名”的现象:package c03;class Number { int i;}public class Assignment { public static void main(String[] args) { Number n1 = new Number(); Number n2 = new Number(); n1.i = 9; n2.i = 47; System.out.println("1: n1.i: " + n1.i + ", n2.i: " + n2.i);.. 阅读全文