【TIJ4】第三章全部习题
题目都相当简单没啥说的直接放代码就行了...
3.1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0301; 2 //[3.1]使用“简短的”和正常的打印语句来写一个程序 3 4 import static java.lang.System.out; 5 public class Abbreviate 6 { 7 public static void main(String[] args) 8 { 9 System.out.println("Hello, world! [complete]"); 10 out.println("Hello, world! [abbreviate]"); 11 } 12 }
3.2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0302; 2 //[3.2]创建一个包含一个float域的类,并用这个类来展示别名机制 3 class ShowByname 4 { 5 private float elem; 6 public float getElem() { return elem; } 7 public void setElem(float _elem) { elem = _elem; } 8 } 9 10 public class Byname 11 { 12 public static void main(String[] args) 13 { 14 ShowByname test1 = new ShowByname(); 15 test1.setElem(1.333f); 16 System.out.println("test1.elem = " + test1.getElem()); 17 18 ShowByname test2 = test1; 19 System.out.println("test2.elem = " + test2.getElem()); 20 21 //仅修改引用test2并观察 22 test2.setElem(3.14159f); 23 System.out.println("test1.elem = " + test1.getElem()); 24 System.out.println("test2.elem = " + test2.getElem()); 25 } 26 }
3.3
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0303; 2 //[3.3]创建一个包含一个float域的类,并用这个方法来展示方法调用时的别名机制 3 4 class ShowFunByname 5 { 6 public float elem = 3.14f; 7 } 8 9 public class FunByname 10 { 11 static void f(ShowFunByname test) 12 { 13 test.elem = 1.414f; 14 } 15 16 public static void main(String[] args) 17 { 18 ShowFunByname test = new ShowFunByname(); 19 System.out.println("1: elem = " + test.elem); 20 21 f(test); 22 System.out.println("2: elem = " + test.elem); 23 } 24 }
3.4
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0304; 2 3 //[3.4]编写一个计算速度的程序,它使用的距离和时间都是常量 4 class CalVelocity 5 { 6 private final double distance = 100.0; 7 private final double time = 3.5; 8 public double getVelocity() { return distance/time; } 9 } 10 11 public class Velocity 12 { 13 public static void main(String[] args) 14 { 15 CalVelocity test = new CalVelocity(); 16 System.out.println(test.getVelocity()+"km/h"); 17 } 18 }
3.5-3.6
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex030506; 2 3 //[3.5]创建一个名为Dog的类,它包含两个String域:name和says.在main方法中,创建两个Dog对象. 4 //一个名叫spot,叫声为“Ruff!”;另一个名为scruffy,叫声为"Wurf!".然后显示它们的名字和叫声. 5 //[3.6]在练习5的基础上,创建一个新的Dog索引,并对其赋值为spot对象.测试用==和euqals()方法来比较所有引用的结果. 6 7 class Dog 8 { 9 private String name; 10 private String says; 11 public Dog(String _name, String _says) 12 { 13 name=_name; 14 says=_says; 15 } 16 17 public String getName() { return name; } 18 public String getSays() { return says; } 19 } 20 21 public class TestEqual 22 { 23 public static void main(String[] args) 24 { 25 //[3.5] 26 Dog dogA = new Dog("spot" , "Ruff!"); 27 Dog dogB = new Dog("scruffy" , "Wurf!"); 28 System.out.println("dogA's name is " + dogA.getName()+" and says "+dogA.getSays()); 29 System.out.println("dogB's name is " + dogB.getName()+" and says "+dogB.getSays()); 30 31 //[3.6] 32 Dog dogindex = dogA; 33 System.out.print(dogindex==dogA); System.out.println(dogindex.equals(dogA)); 34 System.out.print(dogA==dogB); System.out.println(dogA.equals(dogB)); 35 System.out.print(dogindex==dogB); System.out.println(dogindex.equals(dogB)); 36 } 37 }
3.7
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0307; 2 //[0307]编写一个程序模拟随机扔硬币的结果 3 4 class Coin 5 { 6 private boolean state; 7 public boolean toss() 8 { 9 state=(Math.random() < 0.5); 10 return state; 11 } 12 } 13 public class TestCoin 14 { 15 public static void main(String[] args) 16 { 17 Coin onedollar = new Coin(); 18 for(int i = 0; i < 20; ++i) 19 System.out.print(onedollar.toss() + " "); 20 } 21 }
3.8
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0308; 2 //[3.8]展示用十六进制和八进制计数法来操作long值,用Long.toBinaryString()来显示结果. 3 4 public class TestOctHex 5 { 6 public static void main(String[] args) 7 { 8 long first = 256L; 9 long second = 0256L; 10 long third = 0x256L; 11 12 System.out.println("first = " + Long.toBinaryString(first)); 13 System.out.println("second = " + Long.toBinaryString(second)); 14 System.out.println("third = " + Long.toBinaryString(third)); 15 } 16 }
3.9
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0309; 2 //[3.9]分别显示用float和double指数计数法所能表示的最大和最小的数字 3 4 public class ExpLimit 5 { 6 public static void main(String[] args) 7 { 8 double doublemax = Double.MAX_VALUE; 9 double doublemin = Double.MIN_VALUE; 10 float floatmax = Float.MAX_VALUE; 11 float floatmin = Float.MIN_VALUE; 12 13 System.out.println("doublemax = " + doublemax); 14 System.out.println("doublemin = " + doublemin); 15 System.out.println("floatmax = " + floatmax); 16 System.out.println("floatmin = " + floatmin); 17 } 18 }
3.10
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0310; 2 //[3.10]编写一个具有两个常量值的程序,一个具有交替的二进制位1和0,其中最低有效位为0,另一个也具有交替的二进制位1和0,其中最低有效位为1. 3 //取这两个值,用按位操作符以所有可能的方式结合运算它们,然后用Integer.toBinaryString()显示 4 5 public class TestBitOperation 6 { 7 public static void main(String[] args) 8 { 9 int first = 0x2AA; 10 int second =0x133; 11 System.out.println("first = " + Integer.toBinaryString(first)); 12 System.out.println("sceond = " + Integer.toBinaryString(second)); 13 System.out.println("first & second = " + Integer.toBinaryString(first & second)); 14 System.out.println("first | second = " + Integer.toBinaryString(first | second)); 15 System.out.println("first ^ second = " + Integer.toBinaryString(first ^ second)); 16 System.out.println("~first = " + Integer.toBinaryString(~first)); 17 System.out.println("~sceond = " + Integer.toBinaryString(~second)); 18 } 19 }
3.11-3.12
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex031112; 2 //[3.11]以一个最高有效位为1的二进制数开始,用有符号右移操作符对其进行右移,直至所有的二进制位都被移出为止,每移一位都显示二进制字符串效果. 3 //[3.12]以一个所有位都为1的二进制数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有二进制位都移出为止,每移一位都要显示二进制字符串效果. 4 5 public class TestBitShift 6 { 7 public static void main(String[] args) 8 { 9 //[3.11] 10 int first = 0xF3A7; 11 while(first != 0) 12 { 13 first >>= 1; 14 System.out.println(Integer.toBinaryString(first)); 15 } 16 17 //[3.12] 18 int second = 0xFFFF; 19 second <<= 1; 20 System.out.println(Integer.toBinaryString(second)); 21 while(second != 0) 22 { 23 second >>= 1; 24 System.out.println(Integer.toBinaryString(second)); 25 } 26 } 27 }
3.13
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0313; 2 //[3.13]编写一个方法,它以二进制形式显示char类型的值.使用多个不同的字符来展示它. 3 4 class TestCharToBinaryString 5 { 6 public static String transform(char x) 7 { 8 return Integer.toBinaryString((int) x); 9 } 10 } 11 12 public class CharToBinaryString 13 { 14 public static void main(String[] args) 15 { 16 char first = 'a'; 17 char second = '&'; 18 char third = '6'; 19 20 System.out.println("a: " + TestCharToBinaryString.transform(first)); 21 System.out.println("&: " + TestCharToBinaryString.transform(second)); 22 System.out.println("6: " + TestCharToBinaryString.transform(third)); 23 } 24 }
3.14
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package ex0314; 2 //[3.14]编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结构打印出来. 3 //做==和!=比较的同事,用equals()作测试.在main()里面用几个不同的字符串对象调用这个方法 4 5 import java.lang.String; 6 class StringCompare 7 { 8 public static void go(String first , String second) 9 { 10 System.out.println(first + " compareTo " + second + " : " + (first.compareTo(second))); 11 System.out.println(first + " != " + second + " : " + first != second); 12 System.out.println(first + " == " + second + " : " + first == second); 13 System.out.println(first + " equals " + second + " : " + first.equals(second)); 14 System.out.println(""); 15 } 16 } 17 18 19 public class TestStringCompare 20 { 21 public static void main(String[] args) 22 { 23 String first = new String("Good"); 24 String second = new String("Bad"); 25 String third = first; 26 27 StringCompare.go(first, second); 28 StringCompare.go(third, second); 29 StringCompare.go(first, third); 30 } 31 }