Java - Thinking in Java 第5章 习题

1

//: Main.java

/**
 * String初始化
 */

class Test {
    String s;
}

class Main {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println("s = " + t.s);
    }
}
/**
 * Output:
 s = null
 *///:~

2

初始化效果相同, 成员变量定义初始化定义时确定, 构造初始化构造时确定.

//: Main.java

/**
 * 初始化
 */

class Test {
    String s1;
    String s2 = "haha";
    String s3;
    Test () {
        s3 = "hehe";
    }
}

class Main {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println("s1 = " + t.s1);
        System.out.println("s2 = " + t.s2);
        System.out.println("s3 = " + t.s3);    }
}
/**
 * Output:
 s1 = null
 s2 = haha
 s3 = hehe
 *///:~

3

//: Main.java

/**
 * 默认构造器
 */

class Test {
    Test () {
        System.out.println("This is Test");
    }
}

class Main {
    public static void main(String[] args) {
        Test t = new Test();
    }
}
/**
 * Output:
 This is Test
 *///:~

4

//: Main.java

/**
 * 默认构造器
 */

class Test {
    Test () {
        System.out.println("This is Test");
    }
    Test (String s) {
        System.out.println("Test : " + s);
    }
}

class Main {
    public static void main(String[] args) {
        Test t = new Test("Hello");
    }
}
/**
 * Output:
 Test : Hello
 *///:~

5

//: Main.java

/**
 * 构造器重载
 */

class Dog {
    Dog() {
        System.out.println("Wang! Wang! Wang!");
    }

    Dog(String s) {
        System.out.println("Barking!");
    }

    Dog(int i) {
        System.out.println("Howling!");
    }
}

class Main {
    public static void main(String[] args) {
        Dog d1 = new Dog();
        Dog d2 = new Dog("Hello");
        Dog d3 = new Dog(1);
    }
}
/**
 * Output:
 Wang! Wang! Wang!
 Barking!
 Howling!
 *///:~

6

//: Main.java

/**
 * 构造器重载-参数顺序不同
 */

class Dog {
    Dog() {
        System.out.println("Wang! Wang! Wang!");
    }

    Dog(String s, int i) {
        System.out.println("Barking!");
    }

    Dog(int i, String s) {
        System.out.println("Howling!");
    }
}

class Main {
    public static void main(String[] args) {
        Dog d1 = new Dog();
        Dog d2 = new Dog("Hello", 1);
        Dog d3 = new Dog(1, "Hello");
    }
}
/**
 * Output:
 Wang! Wang! Wang!
 Barking!
 Howling!
 *///:~

7

//: Main.java

/**
 * 默认构造器
 */

class Test {
    String s = "Hello World";
}

class Main {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t.s);
    }
}
/**
 * Output:
 Hello World
 *///:~

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

时间: 2024-11-02 00:52:23

Java - Thinking in Java 第5章 习题的相关文章

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