Cinema

[Java]Java编程思想(Thinking in Java)第三章习题
练习1使用“简短的”和正常的打印语句来编写一个程序。package world.pixiv.thinkinginj...
扫描右侧二维码阅读全文
18
2019/02

[Java]Java编程思想(Thinking in Java)第三章习题

练习1

使用“简短的”和正常的打印语句来编写一个程序。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise1 {
    public static void main(String[] args) {
        System.out.println("Hello");
        println("Hello");
    }
}
/* Output:
 * Hello
 * Hello
 */

练习2

创建一个包含一个float域的类,并用这个类来展示别名机制。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

class Test{
    float f;
}

public class Exercise2 {
    public static void main(String[] args) {
        Test t1 = new Test();
        Test t2 = new Test();
        t1.f = 0.9F;
        t2.f = 1.0F;
        println("1: t1.f: " + t1.f + ", t2.f: " + t2.f);
        t1 = t2;
        println("1: t1.f: " + t1.f + ", t2.f: " + t2.f);
        t1.f = 3.6F;
        println("1: t1.f: " + t1.f + ", t2.f: " + t2.f);
    }
}
/* Output: 
 * 1: t1.f: 0.9, t2.f: 1.0
 * 1: t1.f: 1.0, t2.f: 1.0
 * 1: t1.f: 3.6, t2.f: 3.6
 */

练习3

创建一个包含一个float域的方法,并用这个方法来展示方法调用时的别名机制。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

class F{
    float f;
}

public class Exercise3 {
    static void c(F f) {
        f.f = 1.0F;
    }
    
    public static void main(String[] args) {
        F f = new F();
        f.f = 1.1F;
        println("1: f.f: " + f.f);
        c(f);
        println("2: f.f: " + f.f);
    }
}
/* Output:
 * 1: f.f: 1.1
 * 2: f.f: 1.0
 */

练习4

编写一个计算速度的程序,它所使用的距离和时间都是常量。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise4 {
    static final int S = 100;
    static final int T = 10;
    public static void main(String[] args) {
        println(S / T);
    }
}
/* Output:
 * 10
 */

练习5

创建一个名为Dog的类,它包含两个String域:name和says。在main()方法中,创建两个Dog对象,一个名为spot(它的叫声为“Ruff!”),另一个名为scruffy(它的叫声为“Wurf!”)。然后显示它们的名字和叫声。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

class Dog{
    String name;
    String says;
    Dog(String name,String says){
        this.name = name;
        this.says = says;
    }
}

public class Exercise5 {
    public static void main(String[] args) {
        Dog d1 = new Dog("Spot","Ruff!");
        Dog d2 = new Dog("Scruffy","Wurf!");
        println("Dog1: " + d1.name + " says " + d1.says);
        println("Dog2: " + d2.name + " says " + d2.says);
    }
}
/* Output:
 * Dog1: Spot says Ruff!
 * Dog2: Scruffy says Wurf!
 */

练习6

在练习5的基础上,创建一个新的Dog索引,并对其赋值为spot对象。测试==和equals()方法来比较所有引用的结果。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise6 {
    public static void main(String[] args) {
        Dog d1 = new Dog("Spot","Ruff!");
        Dog d2 = d1;
        println("== test: " + (d1 == d2));
        println("equals() test: " + d1.equals(d2));
    }
}
/* Output:
 * == test: true
 * equals() test: true
 */

练习7

编写一个程序,模拟扔硬币的结果。

package world.pixiv.thinkinginjava.exercise.chapter3;

import java.util.Random;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise7 {
    public static void main(String[] args) {
        Random rand = new Random();
        int res = rand.nextInt(10);
        res++;
        println(res <= 5 ? "head" : "tail");
    }
}
/* Output: (50% match)
 * tail
 */

练习8

展示用十六进制和八进制记数法来操作long值,用Long.toBinaryString()来展示结果。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise8 {
    public static void main(String[] args) {
        Long l1 = 0x7fffffffffffffffL;
        Long l2 = 010L;
        println("Hex: " + Long.toBinaryString(l1));
        println("Oct: " + Long.toBinaryString(l2));
    }
}
/* Output: 
 * Hex: 111111111111111111111111111111111111111111111111111111111111111
 * Oct: 1000
 */

练习9

分别显示用float和double指数记数法所能表示的最大和最小数字。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise9 {
    public static void main(String[] args) {
        //println(Double.MAX_VALUE);
        //println(Float.MAX_VALUE);
        //println(Double.MIN_VALUE);
        //println(Float.MIN_VALUE);
        Double maxD = 1.7976931348623157E308;
        Double minD = 4.9E-324;
        Float maxF = 3.4028235E38F;
        Float minF = 1.4E-45F;
        println("Double: max: " + maxD + " min: " + minD);
        println("Float: max: " + maxF + " min: " + minF);
    }
}
/* Output:
 * Double: max: 1.7976931348623157E308 min: 4.9E-324
 * Float: max: 3.4028235E38 min: 1.4E-45
 */

练习10

编写一个具有两个常量值的程序,一个具有交替的二进制位1和0,其中最低有效位为0,另一个也具有交替的二进制位1和0,但其最低有效位为1。取这两个值,用按位操作符以所有可能的方式结合运算它们,然后用Integer.toBinaryString()显示。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise10 {
    public static void main(String[] args) {
        int a = 170;//10101010
        int b = 85;//1010101
        println("a and b: " + Integer.toBinaryString(a & b));
        println("a or b: " + Integer.toBinaryString(a | b));
        println("a xor b: " + Integer.toBinaryString(a ^ b));
    }
}
/* Output:
 * a and b: 0
 * a or b: 11111111
 * a xor b: 11111111
 */

练习11

以一个最高有效位为1的二进制数开始,用有符号右移操作符对其进行右移,直到所有的二进制位都被移出为止,每移一位都要用Integer.toBinaryString()显示。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise11 {
    public static void main(String[] args) {
        int a = 128;//10000000
        while(a != 0) {
            println(Integer.toBinaryString(a));
            a >>= 1;
        }
    }
}
/* Output:
 * 10000000
 * 1000000
 * 100000
 * 10000
 * 1000
 * 100
 * 10
 * 1 
 */

练习12

以一个所有位都为1的二进制数开始,先左移它,然后用无符号右移操作符对其进行右移,直到所有的二进制位都被移出为止,每移一位都要用Integer.toBinaryString()显示。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise12 {
    public static void main(String[] args) {
        int a = 255;//11111111
        a <<= 1;
        while(a != 0) {
            println(Integer.toBinaryString(a));
            a >>>= 1;
        }
    }
}
/* Output:
 * 111111110
 * 11111111
 * 1111111
 * 111111
 * 11111
 * 1111
 * 111
 * 11
 * 1
 */

练习13

编写一个方法,它以二进制形式显示char类型的值。使用多个不同的字符来展示它。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise13 {
    public static String toBinaryChar(char c) {
        return Integer.toBinaryString(c);
    }
    public static void main(String[] args) {
        println("4: " + toBinaryChar('4'));
        println("o: " + toBinaryChar('o'));
        println("5: " + toBinaryChar('5'));
    }
}
/* Output:
 * 4: 110100
 * o: 1101111
 * 5: 110101
 */

练习14

编写一个接受两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。做==和!=比较的同时,用equals()作测试。在main()方法里面用几个不同的字符串对象调用这个方法。

package world.pixiv.thinkinginjava.exercise.chapter3;

import static world.pixiv.thinkinginjava.util.Printer.*;

public class Exercise14 {
    public static void cmp(String s1,String s2) {
        println("==: " + (s1 == s2));
        println("!=: " + (s1 != s2));
        println("equals(): " + s1.equals(s2));
    }
    public static void main(String[] args) {
        cmp("4o5.xyz","4o5.xyz");
        println();
        cmp("405.website","405.website");
    }
}
/* Output:
 * ==: false
 * !=: true
 * equals(): false
 * 
 * ==: true
 * !=: false
 * equals(): true
 */
我的文章对您有帮助吗?
请大佬投食
扫一扫拿红包 → 扫商家收款码 → 转账红包相同金额
免费赞赏完成
最后修改:2019 年 04 月 21 日 08 : 47 AM

发表评论