Java - Thinking in Java 第2章练习

Thinking in Java

1

//: object/HelloDate.java
/**
 * Default initialize class.
 * @author C.L.Wang
 * @author Caroline Wendy
 * @version 1.0
 */
public class Main extends ShowProperties {
    /**
     * Entrv point to class & application.
     * @param args array of string arguments
     * @throws java.lang.Exception No exceptions thrown
     */
    public static void main(String[] args) {
        DefaultInit di = new DefaultInit();
        System.out.println("default int = " + di.i + ", default char = " + di.c);
    }
    /**
     * Output:
     * default int = 0, default char =
     *///:~
}

2

//: object/HelloDate.java
/**
 * Say Hello World
 * @author C.L.Wang
 * @author Caroline Wendy
 * @version 1.0
 */
public class Main extends ShowProperties {
    /**
     * Entrv point to class & application.
     * @param args array of string arguments
     * @throws java.lang.Exception No exceptions thrown
     */
    public static void main(String[] args) {
        System.out.println("Hello, World");
    }
    /**
     * Output:
     * Hello, World
     *///:~
}

3

public class ATNTest {
   public static void main(String[] args) {
      class ATypeName {
         int i;
         double d;
         boolean b;
         void show() {
            System.out.println(i);
            System.out.println(d);
            System.out.println(b);
         }
      }
      ATypeName a = new ATypeName();
      a.i = 3;
      a.d = 2.7;
      a.b = false;
      a.show();
   }
}

4&5

//: object/DataOnlyTest.java
// TIJ4 Chapter Object Exercise 4 page 90
// Turn the DataOnly code fragments into a program that compiles and runs

class DataOnly {
  int i;
  double d;
  boolean b;
  void show() {
      System.out.println(i);
      System.out.println(d);
      System.out.println(b);
  }
}

public class DataOnlyTest {
  public static void main(String[] args) {
      DataOnly data = new DataOnly();
      data.i = 47;
      data.d = 1.1;
      data.b = false;
      data.show();
  }
}
/**
* Output:
* 47
* 1.1
* false
*///:~

6

//: StorageTest.java
/**
 * 存储字节数
 * Created by wangchenlong on 15/7/6.
 */
public class StorageTest {
    /**
     * 字符串的字节数
     * @param s 字符串
     * @return 字节数
     */
    public static int storage(String s) {
        return s.length()*2;
    }

    public static void main(String[] args) {
        String s = "Caroline";
        System.out.println(s + "字节数占用: " + storage(s));
    }
    /**
     * Output:
     * Caroline字节数占用: 16
     *///:~
}

7

//: IncrementableTest.java
/**
 * 静态变量测试
 * Created by wangchenlong on 15/7/6.
 */
class StaticTest {
    static int i = 47;
}

class Incrementable {
    static void increment() {
        StaticTest.i++;
    }
}

public class IncrementableTest {
    public static void main(String[] args) {
        Incrementable.increment();
        System.out.println("数字变为" + StaticTest.i);
    }
}
/**
 * output:
 * 数字变为48
 *///:~

8

//: OneStaticTest.java
/**
 * static变量单实例测试
 * Created by C.L.Wang on 15/7/6.
 */
public class OneStaticTest {
    public static void main(String[] args) {
        StaticTest s1 = new StaticTest();
        StaticTest s2 = new StaticTest();

        //noinspection AccessStaticViaInstance
        System.out.println("s1.i = " + s1.i + ", s2.i = " + s2.i);
        Incrementable.increment();

        //noinspection AccessStaticViaInstance
        System.out.println("after increment: " + "s1.i = " + s1.i + ", s2.i = " + s2.i);
    }
}
/**
 * output:
 * s1.i = 47, s2.i = 47
 * after increment: s1.i = 48, s2.i = 48
 *///:~

9

//: AutoBoxTest.java
/**
 * 基本类型和包装器类型
 * Created by C.L.Wang on 15/7/6.
 */
public class AutoBoxTest {
    public static void main(String[] args) {
        boolean b = false;
        char c = ‘x‘;
        byte t = 8;
        short s = 16;
        int i = 32;
        long l = 64;
        float f = 0.32f;
        double d = 0.64;
        Boolean B = b;
        System.out.println("boolean b = " + b);
        System.out.println("Boolean B = " + B);
        Character C = c;
        System.out.println("char c = " + c);
        System.out.println("Character C = " + C);
        Byte T = t;
        System.out.println("byte t = " + t);
        System.out.println("Byte T = " + T);
        Short S = s;
        System.out.println("short s = " + s);
        System.out.println("Short S = " + S);
        Integer I = i;
        System.out.println("int i = " + i);
        System.out.println("Integer I = " + I);
        Long L = l;
        System.out.println("long l = " + l);
        System.out.println("Long L = " + L);
        Float F = f;
        System.out.println("float f = " + f);
        System.out.println("Float F = " + F);
        Double D = d;
        System.out.println("double d = " + d);
        System.out.println("Double D = " + D);
    }
}
/**
 * Output:
 * ...
 *///:~

10

//: CommentLineTest.java
/**
 * 命令行参数
 * Created by C.L.Wang on 15/7/6.
 */
public class CommandLineTest {
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("参数不足3个");
            return;
        }

        String result = "";
        for (String s : args) {
            result += s + " ";
        }
        System.out.println("参数: " + result);
    }
}
/**
 * Output:
 * 参数: caroline wendy girl
 *///:~

11

//:AllTheColorsOfTheRainbow
/**
 * 编码风格测试
 * Created by C.L.Wang on 15/7/6.
 */
public class RainbowTest {
    public static void main(String[] args) {
        AllTheColorOfTheRainbow atc = new AllTheColorOfTheRainbow();
        atc.changeTheHusOfTheColor(16);
        System.out.println("theHueOfTheColor = " + atc.theHueOfTheColor);
        System.out.println("anIntegerRepresentingColors = " + atc.changeAnIntegerRepresentingColors(32));
    }

}

class AllTheColorOfTheRainbow {
    int anIntegerRepresentingColors;
    int theHueOfTheColor;
    void changeTheHusOfTheColor(int newHue) {
        theHueOfTheColor = newHue;
    }
    int changeAnIntegerRepresentingColors(int theHueOfTheColor) {
        return anIntegerRepresentingColors = theHueOfTheColor;
    }
}
/**
 * Output:
 * theHueOfTheColor = 16
 * anIntegerRepresentingColors = 32
 *///:~

12&13&14&15

参考: http://blog.csdn.net/caroline_wendy/article/details/46779719

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 11:13:10

Java - Thinking in Java 第2章练习的相关文章

java JDK8 学习笔记——第16章 整合数据库

第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程序. 2.JDBC标准主要分为两个部分:JDBC应用程序开发者接口和JDBC驱动程序开发者接口.应用程序需要联机数据库,其相关API主要在java.sql和javax.sql两个包中. 3.应用程序使用JDBC联机数据库的通用语法: Connection conn = DriverManager.g

《Java编程思想》第一二章

前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本<Java编程思想>,希望先把基础打好,再深入学习. 不得不说这本书真的不是浪得虚名,对于我这样的新手看完一二章之后也觉得这本书值得买了.跟网上教程不同,这本书一开始便直接全面深入论述Java面向对象编程中对对象的理解,值得注意的是如果之前没有Java编程的基础,第一章看起来会比较吃力,而且效果也不太好,因为都是理论没有使用代码进行演示说明,所以作者也支

Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记

第一章 Thread导论 为何要用Thread ? 非阻塞I/O I/O多路技术 轮询(polling) 信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ? Thread是所在主机执行的应用程序任务(task). 只有一个线程的例子: public class Factorial { public static void main(String[] args) { int n = 5; System.ou

《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来.这一章就是给大家介绍Java虚拟机内存的各个区域,讲解这些区域的作用,服务对象以及其中可能产生的问题. 1.运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 1.1程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型中里,字

JAVA: httpclient 详解——第五章;

相对于httpurlconnection ,httpclient更加丰富,也更加强大,其中apache有两个项目都是httpclient,一个是commonts包下的,这个是通用的,更专业的是org.apache.http.包下的,所以我一般用后者: httpclient可以处理长连接,保存会话,重连接,以及请求过滤器,连接重用等等... 下面是测试代码(全部总结来自官方文档,以及翻译) 须要下载核心包:httpclient-4.3.4.jar ,也可在官网下载:http://hc.apache

Java 线程第三版 第九章 Thread调度 读书笔记

一.Thread调度的概述 import java.util.*; import java.text.*; public class Task implements Runnable { long n; String id; private long fib(long n) { if (n == 0) return 0L; if (n == 1) return 1L; return fib(n - 1) + fib(n - 2); } public Task(long n, String id)

201671010105 2016-2017-2《Java程序设计》第一、第二章学习心得

我们大一的时候学习的是C语言程序设计,C语言是面向程序的,而老师也说过我们后面会学习一种面向对象的程序设计语言--Java程序设计,而在二年级开学第一周,我们第一次真正意义上接触到了它. 令人意外的是和往常老师讲学生听不同,这一周我们对Java程序设计第一.第二章的学习完全是自主的,通过一周对Java第一.第二章的学习,心得体会如下: 第一章 Java程序设计概述 1.通过对第一章的学习,对Java有了比较深入的了解,Java和C一样,是一种语言,但它又不止是一种语言,它是一个完整的程序设计平台

[Java学习笔记] Java核心技术 卷1 第四章

第4章 对象与类 4.1 类和对象的基本概念 描述了类和对象的基本概念,以及类之间的关系介绍. 程序中的很多对象来自于标准库,还有一些自定义的. 结构化程序设计:通过设计一系列的过程(算法),选择合适的存储方式来解决问题. 算法+数据结构 4.1.1 类/封装/继承 类是构造对象的模板,由类构造对象的过程称为创建类的实例. 封装:也称为数据隐藏.从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式.优点4.2.3 实例域:对象中的数据. 方法:操纵数据的过程.

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

《Java并发编程实战》第二章 线程安全性 读书笔记

一.什么是线程安全性 编写线程安全的代码 核心在于要对状态访问操作进行管理. 共享,可变的状态的访问 - 前者表示多个线程访问, 后者声明周期内发生改变. 线程安全性 核心概念是正确性.某个类的行为与其规范完全一致. 多个线程同时操作共享的变量,造成线程安全性问题. * 编写线程安全性代码的三种方法: 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 在访问状态变量时使用同步 Java同步机制工具: synchronized volatile类型变量 显示锁(Explicit Lock