java第五章寒假

练习1:创建一个类,它包含一个未初始化的String引用。验证该引用被Java初始化成了null。

代码如下:

public class Test5_1_1 {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.str);
}
}
class Test{
String str;
}
onsole:
null
练习2:创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器初始化的String域。这两种方式有何差异?

代码如下:

public class Test5_1_2 {
public static void main(String[] args) {
Test1 t = new Test1();
System.out.println(t.s1+" “+t.s2);
t.s2 = “cba”;
System.out.println(t.s1+” "+t.s2);
}
}
class Test1{
String s1 = “abc”;
String s2;
}

Console:
abc null
abc cba
差别在于:
s1初始化了一次,而s2初始化了两次
s1一开始被初始化为”abc”,而s2先被初始化为null,然后再被初始化为”cba”

练习3:创建一个带默认构造器(即无参构造器)的类,在构造器中打印一条消息。为这个类创建一个对象。

代码如下:

public class Test5_3 {
public static void main(String[] args) {
new Test3();
}
}
class Test3{
public Test3() {
System.out.println(“这是一个无参构造器”);
}
}

console:
这是一个无参构造器
练习4:为前一个练习中的类添加一个重载构造器,令其接受一个字符串参数,并在构造器中把你自己的信息和接受的参数一起打印出来。

代码如下:

public class Test5_4 {
public static void main(String[] args) {
new Test4(“java”);
}
}
class Test4{
Test4(String s){
System.out.println("hello "+s);
}
}

console:
hello java
练习5:创建一个名为Dog的类,它具有重载的bark()方法。此方法应根据不同的基本数据类型进行重载,并根据被调用的版本,打印出不同类型的狗吠(barking)、咆哮(howling)等信息。编写main()来调用所有不同版本的方法。

代码如下:

public class Test5_5 {
public static void main(String[] args) {
Dog d = new Dog();
d.bark();
d.bark(“毛毛”);
}
}
class Dog{
public void bark(){
System.out.println(“barking”);
}
public void bark(String name){
System.out.println(name+" howling");
}
}

console:
barking
毛毛 howling
练习6:修改前一个练习的程序,让两个重载方法各自接受两个类型的不同的参数,但二者顺序相反。验证其是否工作。

代码如下:

public class Test5_6 {
public static void main(String[] args) {
Dog1 d1 = new Dog1();
d1.bark(1, “毛毛”);
d1.bark(“悠悠”, 2);
}
}
class Dog1{
public void bark(int age,String name){
System.out.println(“小名:”+name+" 年龄:"+age+" barking");
}
public void bark(String name,int age){
System.out.println(“小名:”+name+" 年龄:"+age+" barking");
}
}

console:
小名:毛毛 年龄:1 barking
小名:悠悠 年龄:2 barking
练习7:创建一个没有构造器的类,并在main()中创建其对象,用以验证编译器是否真的自动加入了默认构造器。

代码如下:

public class Test5_7 {
static String str;
public static void main(String[] args) {
System.out.println(str);
}
}

console:
null
练习8:编写具有两个方法的类,在第一个方法内调用第二个方法两次:第一次调用时不使用this关键字,第二次调用时使用this关键字——这里只是为了验证它是起作用的,你不应该在实践中使用这种方法。

代码如下:

public class Test5_8 {
/**
* 如果在方法内部调用同一个类的另一个方法,就不必使用this
* 人们只期望在必要时用到this
* 这里只是为了验证它是起作用的
*/
public static void main(String[] args) {
Apple apple=new Apple();
apple.getApple();
}
}
class Apple{

    public void getApple(){
        System.out.print("未使用this调用:");
        createApple();
        System.out.print("使用this调用:");
        this.createApple();
    }

    public void createApple(){
        System.out.println("已创建好……");
    }

}

console:
未使用this调用:已创建好……

写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础 1.5.2 等价和似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主型 2.2.3 Java的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据型: 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入 2.8.4 @see:引用其他 2.8.5 文档标记 2.8.6 变量文档标记 2.8.7 方法文档标记 2.8.8 文档示例 2.9 编码样式 2.10 总结 2.11 练习 第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 逗号运算符 3.1.11 字串运算符 3.1.12 运算符常规操作规则 3.1.13 造型运算符 3.1.14 Java没有“sizeof” 3.1.15 复习计算顺序 3.1.16 运算符总结 3.2 执行控制 3.2.1 真和假 3.2.3 反复 3.2.6 断和继续 3.2.7 切换 3.3 总结 3.4 练习 第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 访问 5.5 总结 5.6 练习 第6章 再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final 6.8.4 final的注意事项 6.9 初始化和装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为什么要上溯造型 7.2 深入理解 7.2.1 方法调用的绑定 7.2.2 产生正确的行为 7.2.3 扩展性 7.3 覆盖与过载 7.4 抽象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值