Thinking in Java 第四版完整版 第三章练习题

Thinking in Java 第四版完整版 第三章练习题,记录一下(jdk1.8.0)

1.

import java.util.*;
//import static net.mindview.util.Print.*;

/**
 * 练习1:使用“简短的”和正常的打印语句来编写一个程序。
 * @author admin11
 * @date 2018年2月27日
 */
public class Exercise301 {

    public static void main(String[] args) {
        System.out.println("Hello, it's:");
        System.out.println(new Date());
        //print("Hello, it's:");
        //print(new Date());
    }
}

这里写图片描述

2.

/**
 * 练习2:创建一个包含一个float域的类,并用这个类来展示别名机制。
 * @author admin11
 * @date 2018年2月28日
 */

class TestFloat {
    float f;
}

public class Exercise302 {

    public static void main(String[] args) {
        TestFloat tf1 = new TestFloat();
        TestFloat tf2 = new TestFloat();
        tf1.f = 2.3f;
        tf2.f = 2.6f;
        System.out.println("1: tf1.f = " + tf1.f + ", tf2.f = " + tf2.f);
        tf1 = tf2;
        System.out.println("2: tf1.f = " + tf1.f + ", tf2.f = " + tf2.f);
        tf1.f = 2.8f;
        System.out.println("3: tf1.f = " + tf1.f + ", tf2.f = " + tf2.f);
    }
}

这里写图片描述

3.

/**
 * 练习3:创建一个包含一个float域的类,并用这个类来展示方法调用时的别名机制。
 * @author admin11
 * @date 2018年2月28日
 */

class TestMethod {
    float f;
}

public class Exercise303 {

    public static void changeValue(TestMethod tm) {
        tm.f = 2.1f;
    }

    public static void main(String[] args) {
        TestMethod m = new TestMethod();
        m.f = 1.7f;
        System.out.println("1: m.f: " + m.f);
        changeValue(m);
        System.out.println("2: m.f: " + m.f);
    }
}

这里写图片描述

4.

/**
 * 练习4:编写一个计算速度的程序,它所使用的距离和时间都是常量。
 * @author admin11
 * @date 2018年2月28日
 */
public class Exercise304 {

    public static void main(String[] args) {
        if(args.length < 2) {
            System.out.println("输入格式: java 类名 距离 时间");
            System.exit(1);
        }

        float distance = Float.parseFloat(args[0]);
        float time = Float.parseFloat(args[1]);
        System.out.println("Velocity = " + distance/time + " m/s");
    }
}

这里写图片描述

5.

/**
 * 练习5:创建一个名为Dog的类,它包含两个String域:name和says。在main()方法中,
 * 创建两个Dog对象,一个名为spot(它的叫声为“Ruff!”),另一个名为scruffy(它的叫声为“Wurf!”)。
 * 然后显示它们的名字和叫声。
 * @author admin11
 * @date 2018年2月28日
 */

class Dog {
    String name;
    String says;
}

public class Exercise305 {

    public static void main(String[] args) {
        Dog dog1 = new Dog();
        Dog dog2 = new Dog();
        dog1.name = "spot";
        dog1.says = "Ruff!";
        dog2.name = "scruffy";
        dog2.says = "Wurf!";

        System.out.println("dog1.name: " + dog1.name +" , dog1.says: " + dog1.says);
        System.out.println("dog2.name: " + dog2.name +" , dog2.says: " + dog2.says);
    }
}

这里写图片描述

6.

/**
 * 练习6:在练习5的基础上,创建一个新的Dog索引,并对其赋值为spot对象。
 * 测试用==和equals()方法来比较所有引用的结果。
 * @author admin11
 * @date 2018年2月28日
 */

class Dog2 {
    String name;
    String says;
}

public class Exercise306 {

    public static void conpareDog(Dog2 dog1, Dog2 dog2) {
        System.out.println(dog1 == dog2);
        System.out.println(dog1.equals(dog2));
        System.out.println(dog1.name == dog2.name);
        System.out.println(dog1.name.equals(dog2.name));
        System.out.println(dog1.says == dog2.says);
        System.out.println(dog1.says.equals(dog2.says));
    }

    public static void main(String[] args) {
        Dog2 dog1 = new Dog2();
        dog1.name = "spot";
        dog1.says = "Ruff!";
        Dog2 dog2 = new Dog2();
        dog2.name = "scruffy";
        dog2.says = "Wurf!";
        Dog2 dog3 = dog1;

        System.out.println("compare dog1 dog2:");
        conpareDog(dog1,dog2);
        System.out.println("compare dog1 dog3:");
        conpareDog(dog1,dog3);
        System.out.println("compare dog2 dog3:");
        conpareDog(dog2,dog3);
    }
}

这里写图片描述

7.

import java.util.Random;

/**
 * 练习7:编写一个程序,模拟扔硬币的结果。
 * @author admin11
 * @date 2018年2月28日
 */
public class Exercise307 {

    public static void main(String[] args) {
        Random random = new Random();
        boolean flag = random.nextBoolean();
        System.out.println(flag ? "正" : "反");
    }
}

这里写图片描述

8.

/**
 * 练习8:展示用十六进制和八进制计数法来操作long值,用Long.toBinaryString()来显示结果。
 * @author admin11
 * @date 2018年2月28日
 */
public class Exercise308 {

    public static void main(String[] args) {
        long l1 = 0x2f;
        System.out.println("l1: " + Long.toBinaryString(l1));
        long l2 = 0x2F;
        System.out.println("l2: " + Long.toBinaryString(l2));
        long l3 = 0177;
        System.out.println("l3: " + Long.toBinaryString(l3));
    }
}

这里写图片描述

9.

/**
 * 练习9:分别显示用float和double指数记数法所能表示的最大和最小的数字。
 * @author admin11
 * @date 2018年2月28日
 */
public class Exercise309 {

    public static void main(String[] args) {
        System.out.println("float最大数字:" + Float.MAX_VALUE);
        System.out.println("float最小数字:" + Float.MIN_VALUE);
        System.out.println("double最大数字:" + Double.MAX_VALUE);
        System.out.println("double最小数字:" + Double.MIN_VALUE);
    }
}

这里写图片描述

10.

/**
 * 练习10:编写一个具有两个常量值的程序,一个具有交替的二进制位1和0,其中最低有效位为0,另一个也具有交替
 * 的二进制位1和0,但是其最低有效位为1(提示:使用十六进制常量来表示是最简单的方法)。取这两个值,用按位
 * 操作符以所有可能的方式结合运算它们,然后用Integer.toBinaryString()显示。
 * @author admin11
 * @date 2018年2月28日
 */
public class Exercise310 {

    public static void main(String[] args) {
        int i1 = 0xaaaaaaaa;
        int i2 = 0x55555555;
        System.out.println("i1 = " + Integer.toBinaryString(i1));
        System.out.println("i2 = " + Integer.toBinaryString(i2));
        System.out.println("~i1 = " + Integer.toBinaryString(~i1));
        System.out.println("~i2 = " + Integer.toBinaryString(~i2));
        System.out.println("i1 & i2 = " + Integer.toBinaryString(i1 & i2));
        System.out.println("i1 | i2 = " + Integer.toBinaryString(i1 | i2));
        System.out.println("i1 ^ i2 = " + Integer.toBinaryString(i1 ^ i2));
        System.out.println("i1 & i1 = " + Integer.toBinaryString(i1 & i1));
        System.out.println("i1 | i1 = " + Integer.toBinaryString(i1 | i1));
        System.out.println("i1 ^ i1 = " + Integer.toBinaryString(i1 ^ i1));
        System.out.println("i2 & i2 = " + Integer.toBinaryString(i2 & i2));
        System.out.println("i2 | i2 = " + Integer.toBinaryString(i2 | i2));
        System.out.println("i2 ^ i2 = " + Integer.toBinaryString(i2 ^ i2));
    }
}

这里写图片描述

11.

/**
 * 练习11:以一个最高有效位为1的二进制数字开始(提示:使用十六进制常量),用有符号右移操作符对其进行右移,
 * 直至所有的二进制位都被移出为止,每移一位都要使用Integer.toBinaryString()显示结果。
 * @author admin11
 * @date 2018年3月1日
 */
public class Exercise311 {

    public static void main(String[] args) {
        int i = 0x80000000;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>1;
        System.out.println(Integer.toBinaryString(i));
        i = i>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >> 1;
        System.out.println(Integer.toBinaryString(i));
    }
}

这里写图片描述

12.

/**
 * 练习12:以一个所有位都为1的二进制数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有的二进制
 * 位都被移出为止,每移一位都要使用Integer.toBinaryString()显示结果。
 * @author admin11
 * @date 2018年3月1日
 */
public class Exercise312 {

    public static void main(String[] args) {
        int i = -1;
        System.out.println(Integer.toBinaryString(i));
        i = i << 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
        i = i >>> 1;
        System.out.println(Integer.toBinaryString(i));
    }
}

这里写图片描述

13.

/**
 * 练习13:编写一个方法,它以二进制形式显示char类型的值。使用多个不同的字符来展示它。
 * @author admin11
 * @date 2018年3月1日
 */
public class Exercise313 {

    public static void charToBinary(char c) {
        System.out.println(c + ":" + Integer.toBinaryString(c));
    }

    public static void main(String[] args) {
        charToBinary('A');
        charToBinary('b');
        charToBinary('!');
        charToBinary('5');
    }
}

这里写图片描述

14.

/**
 * 练习14:编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。
 * 做==和!=比较的同时,用equals()做测试。在main()里面用几个不同的字符串对象调用这个方法。
 * @author admin11
 * @date 2018年3月1日
 */
public class Exercise314 {

    public static void compareString(String s1, String s2) {
        System.out.println(s1 + "==" + s2 + ": " + (s1 == s2));
        System.out.println(s1 + "!=" + s2 + ": " + (s1 != s2));
        System.out.println(s1 + ".equals(" + s2 + "): " +(s1.equals(s2)));
    }

    public static void main(String[] args) {
        compareString("hello", "hello");
        compareString("hello", "");
        compareString("hello", "hi");
    }
}

这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
写在前面的话 引言 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 抽象类和

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值