标签:
动手动脑篇之类与对象
答:Foo obj1=new Foo()在此处调用的时候没有参数
答:执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
执行类的构造函数。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
答:结果是100 300
答:执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
执行类的构造函数 ,当有多个构造函数时,要通过参数区分。
类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
class GrandFather
{
static
{
System.out.println("GrandFather的静态初始化块");
}
}
class Father extends GrandFather
{
static
{
System.out.println("Father的静态初始化块");
}
}
class Son extends Father
{
static
{
System.out.println("Son的静态初始化块");
}
}
public class Hello
{
public static void main(String[] args)
{
new Son();
}
}
答:静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。
class Example
{
public static void display()
{
System.out.println("类的方法");
}
public void displayOne()
{
System.out.println("对象的方法");
}
public static void main(String[] args)
{
Example.display();
Example e=new Example();
e.displayOne();
e.display();
}
}
答: 因为它们调用的Interger类的方法不同,所以结果不同。
package jxlPacakge;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
修改后
public class Test
{
private int id;
private String name;
private static long count;
private final static ThreadLocal tl=new ThreadLocal();
public Test()
{
super();
count++;
tl.set(count);
}
public long getCount()
{
return (Long)tl.get();
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++)
{
Test t=new Test();
System.out.println(t.getCount());
}
}
}
标签:
原文地址:http://www.cnblogs.com/niujunyan/p/4884382.html