动手动脑整理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、命令示例

时间: 2024-08-07 00:17:36

动手动脑整理2的相关文章

接口与继承动手动脑整理

动手实验:继承条件下的构造方法调用 运行 TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! 是第一句的情况: 不是第一句的情况: 结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句. 不可变类的实例:Address.java 参看ExplorationJDKSource.java示例 此示例中定义了一个类A,它没

动手动脑整理

当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行. package com; class Root{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}public Root(){System.out.println("Root的无参数的构造器");}}class Mid extends Root{static{System.ou

课堂作业及 动手动脑问题整理

课堂作业一 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 程序: package com; public class Duixiang { public static void main(String[] args){ duixiang a=new duixiang(); a.out(); duixiang b=new duixiang(); b.out(); } } class duixiang{ stati

动手动脑与作业

一.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:请编写一个程序,使用上述算法加密或解密用户输入的英文字串. 1.设计思想 输入数据后,输入数字n,若n>5,则为加密过程,数据按ASCII码转化为int型,转化得来的数字加数字做为加密后的数据,再将这些数据转化为字符,这就是加密.若n<5,则为解密过程,数据按ASCII码转化为int型,转化得来的数字减数字做为解密后的数据,再将这些数据转化为字符,这就是解密. 2.程序流程图 3.源代码 //信1403-1班 张妞妞   加解密 imp

05-String动手动脑问题及课后实验性问题总结

一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一份以节约内存,所以s0,s1,s2实际上引用的同一个对象. (2)编译器在编译s2一句时,会去掉"+"号,直接把两个字符串连接起来得一个字符串("Hello").这种优化工作由Java编译器自动完成. (3)当直接使用new关键字创建字符串对象时,虽然值一致(都是&qu

java动手动脑和课后实验型问题String类型

1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请新开辟一个地址空间,存储的地址空间不一样(对象不同),string类型下hello是同一个对象,其内容和地址都相容. 2. public class StringEquals { /** * @param args the command line arguments */ public stati

课后作业和动手动脑(字符串)

动手动脑1: (1)       在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象. (2)       编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”).这种优化工作由Java编译器自动完成. (3)       当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象 动手动脑2: equals所在位置: 在Object类当中,而Object是

动手动脑 自信成就人生之课后作业

?动手动脑一 请看以下代码: 上述代码可以顺利通过编译,并且输出一个“很奇怪”的结果: Ljava.lang.Object;@ba8a1dc 为什么会这样? 解释:java的object数组不能转化成string数组,在转换出错时,首先要观察被转换的对象原来是什么类型,或解开多层的包装,直到获取对象的最终类型,然后把不能再分解的类型转换成自己目标类型的对象...(稍微能理解) ?动手动脑二 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中.

java09动手动脑

一.动手动脑 运行AboutException.java示例 1)源代码 import javax.swing.*; class AboutException { public static void main(String[] a) { double i=-1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); }