1. 程式人生 > >Thinking in Java 第四版完整版 第三章練習題

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

這裡寫圖片描述