Thinking in Java 第四版完整版 第三章練習題
阿新 • • 發佈:2019-01-09
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");
}
}