Java编程思想第四版第三章练习

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

import java.util.Date;
import net.mindview.util.Print.*;
/*
要想使用这个类库,必须从www.MindView.net或其镜像之一下载本书的代码包,然后解压代码目录树,并在你的计算机的CLASSPATH环境变量中添加该代码目录树的根目录。(你最终会获得有关类路径的完整介绍,但是你也应该尽早习惯它带来的麻烦。唉,它是你在使用Java时最常见的问题之一。)
*/
public class Exercise3_1 {
  public static void main(String[] args) {
     Print(new Date());
    System.out.println(new Date());
}
}

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

public class Exercise3_2 {


    public static void main(String[] args) {
        Integral integral1 = new Integral();
        Integral integral2 = new Integral();
        integral1.f=9f;
        integral2.f=47f;
        System.out.println("1:integral1.f="+integral1.f+",integral2.f="+integral2.f);
        integral1=integral2;
        System.out.println("2:integral1.f="+integral1.f+",integral2.f="+integral2.f);
        integral1.f=27f;
        System.out.println("3:integral1.f="+integral1.f+",integral2.f="+integral2.f);

    }

}
class Integral{
    float f;
}

/* Output
 1:integral1.f=9.0,integral2.f=47.0
 2:integral1.f=47.0,integral2.f=47.0
 3:integral1.f=27.0,integral2.f=27.0
 */

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

public class Exercise3_3 {
  static void f(Integral y) {
      y.f=1.0f;
  }
  public static void main(String[] args) {
    Integral x = new Integral();
    x.f = 2.0f;
    System.out.println("1:x.f="+x.f);
    f(x);
    System.out.println("2:x.f="+x.f);

}

}
/* Output
 1:x.f=2.0
 2:x.f=1.0
*/    

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

public class Exercise3_4 {

    public static void main(String[] args) {
        float distance = 100;
        float time=20;
        float velocity =distance/time;
        System.out.println("Velocity = "+velocity+" m/s");
    }

}

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

public class Exercise3_5 {

  public static void main(String[] args) {

    Dog dog1 = new Dog();

    dog1.name = "spot";

    dog1.says = "Ruff!";

    System.out.println(dog1.name+" says "+dog1.says);

    Dog dog2 = new Dog();

    dog2.name = "scruffy";

    dog2.says = "Wurf!";

    System.out.println(dog2.name+" says "+dog2.says);

}

}

class Dog{

    String name;

    String  says;

}

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

public class Exercise3_6 {
    static void compare(Dog dog1,Dog dog2) {
        System.out.println("== on top references: "+(dog1==dog2));
        System.out.println(".equals() on top references: "+dog1.equals(dog2));
        System.out.println("== on name: "+(dog1.name==dog2.name));
        System.out.println(".equals() on name: "+dog1.name.equals(dog2.name));
        System.out.println("== on Says: "+(dog1.says==dog2.says));
        System.out.println(".equals() on Says: "+dog1.says.equals(dog2.says));
    }
     public static void main(String[] args) {
            Dog dog1 = new Dog();
            dog1.name = "spot";
            dog1.says = "Ruff!";
            Dog dog2 = new Dog();
            dog2.name = "scruffy";
            dog2.says = "Wurf!";
            Dog dog3 = dog1;
            System.out.println("Compareing dog1 and dog2 objects");
            compare(dog1, dog2);
            System.out.println("Compareing dog1 and dog3 objects");
            compare(dog1, dog3);
            System.out.println("Compareing dog2 and dog3 objects");
            compare(dog2, dog3);
        }
        }
        class Dog{
            String name;
            String says;
        }

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

public class Exercise3_7 {
   public static void main(String[] args) {
    Random random = new Random(47);
    boolean flip = random.nextBoolean();
    System.out.println(flip==true?"Head":"Tail");

}
}

练习8:展示用十六进制和八进制计数法来操作long值,用Long.toBinaryString()来显示结果。

public class Exercise3_8 {
 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));
}
}
/* Output
l1: 101111
l2: 101111
l3: 1111111
*/

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

public class Exercise3_9 {
  public static void main(String[] args) {
      System.out.println("Float.MAX_VALUE = "+Float.MAX_VALUE);
      System.out.println("Float.MIN_VALUE = "+Float.MIN_VALUE);
    System.out.println("Double.MAX_VALUE = "+Double.MAX_VALUE);
    System.out.println("Double.MIN_VALUE = "+Double.MIN_VALUE);
}
}
/* Output
 Float.MAX_VALUE = 3.4028235E38
Float.MIN_VALUE = 1.4E-45
Double.MAX_VALUE = 1.7976931348623157E308
Double.MIN_VALUE = 4.9E-324
 */

练习10: 编写一个具有两个常量值的程序,一个具有交替的二进制位1和0,其中最低有效位为0,另一个也具有交替的二进制位1和0,但其最低有效位为1(提示:使用十六进制常量来表示最简单的方法).取两个值,用按位操作符以所有可能方式结合运算它们,然后anteger.toBinaryString()显示

public class Exercise3_10 {
  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 =  "+Long.toBinaryString(~i1));
    System.out.println("~i2 = "+Long.toBinaryString(~i2));
    System.out.println("i1&i1 =  "+Long.toBinaryString(i1&i1));
    System.out.println("i1|i1 =  "+Long.toBinaryString(i1|i1));
    System.out.println("i1^i1 =  "+Long.toBinaryString(i1^i1));
    System.out.println("i1&i2 =  "+Long.toBinaryString(i1&i2));
    System.out.println("i1|i2 =  "+Long.toBinaryString(i1|i2));
    System.out.println("i1^i2 =  "+Long.toBinaryString(i1^i2));

}
}

练习11:以一个最高有效位为1的二进制数字开始(提示:使用十六进制常量),用有符号右移操作符对其进行右移,直至所有的二进制位都被移除为止,每移一位都要使用Integer.toBinaryString()显示结果

public class Exercise3_11 {
public static void main(String[] args) {
    int i = 0X80808080;
    System.out.println(Integer.toBinaryString(i));
    for (int j = 0; j < 32; j++) {
        i>>=1;
    System.out.println(Integer.toBinaryString(i));
    }
}
}

练习12:以一个所有位为1的二进制数字开始,先左移它,然后用无符号右移操作符对其右移,直至所有的二进制位都被移除为止,每移一位都要使用Integer.toBinaryString()显示结果。

public class Exercise3_12 {
 public static void main(String[] args) {
   int i = -1<<1;
   System.out.println(Integer.toBinaryString(i));
   for (int j = 0; j < 32; j++) {
       i>>>=1;
   System.out.println(Integer.toBinaryString(i));
}


}
}

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

public class Exercise3_13 {
    static void f(char c) {
        System.out.println(c+": "+Integer.toBinaryString(c));
    }
  public static void main(String[] args) {
    f('A');
}
}

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

public class Exercise3_14 {
     static void compare(String s1,String s2) {
         System.out.println("s1 ="+s1+",s1 ="+s1);
         p(s1+"=="+s2,s1==s2);
         p(s1+"!="+s2,s1!=s2);
         p(s1+".equals("+s2+")",s1.equals(s2));
     }
     static void p(String s,boolean b) {
         System.out.println(s+" "+b);
     }
  public static void main(String[] args) {
    compare("hello", "hello");
    String s = new String("hello");
    compare("hello", s);
    compare("hello", "World");
}
}

猜你喜欢

转载自blog.csdn.net/lelouch_j_zs/article/details/78453783
今日推荐