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");
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/summerSunStart/article/details/79480744
今日推荐