动手动脑整理2

1、ClassAndObjectTest.java运行结果

 

2、请输入并运行以下代码,得到什么结果?

public class Hello{

public static void main(String args[]){

Foo obj1=new Foo();

Foo obj2=new Foo(); System.out.println(obj1==obj2);

}

}

class Foo

{int value=100;}

 

当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等;当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象;引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。

3、Demo: ObjectEquals.java运行结果。

 

4、以下代码为何无法通过编译?哪儿出错了?

public class Test{

public static void main(String[] args){

Foo obj1=new Foo();

}

}

class Foo {

int value;

public  Foo(int initvalue){

value =initvalue;

}

}

Foo obj1=new Foo()在此处调用的时候没有参数

5、使用上页幻灯片中定义的类,以下代码输出结果是什么?依据代码的输出结果,总结Java字段初始化的规律。

 

1)执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

2)执行类的构造函数,当有多个构造函数时,要通过参数区分。

6、当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。请自行编写示例代码验证以上结论。

//当多个类之间有继承关系时,创建子类对象会导致

//父类初始化块的执行。

//黄星,2015,10,13

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();

}

}

 

7、请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

 

(1)静态初始化块只执行一次。

(2)创建子类型的对象时,也会导致父类型的静态初始化块的执行。

8、静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?请编写代码验证你的想法。

9、神奇代码。

public class StrangeIntegerBehavior 

public static void main(String[] args)

{

Integer i1=100;

Integer j1=100;

        System.out.println(i1==j1);

Integer i2=129;

Integer j2=129;        

System.out.println(i2==j2);

    }

}

 

10、使用命令行运行示例:Hello.java

 

package jxlPacakge;

public class Hello

{

public static void main(String[] args) 

{

System.out.println("Hello World!");

}

}

修改后

 

11、按以下顺序阅读示例代码:

1)反转一个字串(原型:Test1.java

2)将其移为一个函数(Test2.java)

3)创建一个类并将其移入一个包中(MyPackageClass.java

5)在其它项目中使用此包(Test3.java

 

12、命令示例

 

 

posted @ 2015-10-13 20:56  白茶清欢5266  阅读(268)  评论(0编辑  收藏  举报