随笔分类 - java编程思想第四版
记录学习心得和每一章习题
摘要:1. Class 对象: 所有的类都是在对其第一次使用的时候,动态加载到JVM中的。当程序创建第一个对类的静态成员的引用时,就会加载这个类。这说明构造器也是类的静态方法。即使在构造器之前并没有static关键字,这个类也会被加载。 java程序在它开始运行之前并非完全被加载。其各个部分是在必要时才加
阅读全文
摘要:运行结果: 不可以向下转型到Circle 第四题 使用Class.newInstance方法,必须有一个无参构造方法 运行结果: 运行结果: 运行结果: 运行结果:
阅读全文
摘要:1. String和StringBulider的使用 通过书中介绍, 我们得知如下结论: 当使用+连接符将字符串进行拼接的时候, 编译器会进行自动优化为使用StringBuilder连接字符串。 当在for循环中使用+连接符进行拼接字符串的时候, 每一个for循环都会创建一个Stringbuilde
阅读全文
摘要:运行结果: 运行结果: 输入参数: 输出结果 运行结果:
阅读全文
摘要:运行结果 结果 分析: 这个案例的重点是, 数组瘦受限制的, 集合是没有元素个数限制的。 因此,可以任意添加元素的意思就是:将数组替代为集合。 运行结果: 栈在编程语言中,经常用来对表达式求值。请使用net.mindview.util.Stack对下面的表达式求值。 其中“+”表示将后面的字母压入栈
阅读全文
摘要:1. 容器类被分为两类:Collection和Map Collection是一个接口:包括: List接口: ArrayList:按照被插入顺序保存元素, 查询快, 增删改慢 LinkedList:按照被插入顺序保存元素, 增删改块,查询慢。 Set接口:元素不能重复 HashSet:已相当复杂的方
阅读全文
摘要:1. 内部类的特性 他允许你把一些逻辑相关的类组织在一起。 2. 使用.this 如果你需要在内部类中堆外部类进行应用,可以使用外部类的名字后面加.this。下面展示了如何使用 .this package net.mindview.innerclasses; public class DotThis
阅读全文
摘要:本章非常重要, 里面的内容涉及到了三个设计模式, 以及接口的有点,掌握这些就是掌握了重点 1. 策略设计模式 参考这篇文章:http://blog.csdn.net/chenjie19891104/article/details/6396458 讲的很清楚,策略设计模式。并且举了一个例子,很具有代表
阅读全文
摘要:输出结果: 调用基类构造方法的时候, 只是给子类的成员变量分配了一块内存空间, 并将内存空间的值设置为默认值0. 当真正调用子类构造方法之前才会为成员变量赋值. 在使用的时候,可以直接调用Apply的process方法 Apply方法没有写出来,这个类实在课文内部定义的,可以参考http://www
阅读全文
摘要:1. 多态的含义 面向对象的三大基本特征: 封装,继承,多态。 多态是干什么的? 多态将做什么和怎么做分离开。从另一个角度将接口是实现类分离开。 多态的作用 消除类型之间耦合的关系 使用多态的好处? 能够改善代码的组织结构,提高代码可读性 能够创建可扩展的程序。 多态将做什么和怎么做分离开。从另一个
阅读全文
摘要:第一题 package net.mindview.polymorphism; //基类-自行车 class Cycle{ } //子类-单轮车 class Unicycle extends Cycle{ } //子类-双轮车 class Bicycle extends Cycle{ } //子类-三轮车 class Tricycle extends Cycl...
阅读全文
摘要:(略) (略) (略) (略) 创建两个带有默认构造器(空参数列表)的类A和类B。从A中继承产生一个名为C的新,并在C内创建一个B类的成员。不要给C编写构造器。创建一个C类的对象并观察其结果。 package net.mindview.reusing; public class A { public A(){ System.out.println("A"); ...
阅读全文
摘要:1. 实现类的复用通常有两种方式 组合:在新的类中产生现有类的对象 继承:按照现有类的类型来创造新类 2. 一个特殊的方法toString() 在非基本类型的对象中, 都有toString()方法 当编译器需要一个String而你只有一个对象时, toString()方法会被自动调用 3. 父类方法
阅读全文
摘要:创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,而第二版本什么也不做,使用静态import语句将该类导入到一个测试程序中,并示范条件编译效果。 在一个类中导入名字相同,不同包下的其他类, 需要带上报名, 否
阅读全文
摘要:1. 代码重构 为什么f要代码重构 第一次代码不一定是完美的, 总会发现更优雅的写法. 代码重构需要考虑的问题 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 第一次代码不一定是完美的, 总会发现更优雅的写法. 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 2. 包 创
阅读全文
摘要:返回结果 运行结果: 结论: 定义是就被初始化的str1只被赋值一次, 而定义时未被初始化str2被赋值了两次, 第一次是null,第二次是构造器赋值. 编写具有两个方法的类,在第一个方法内调用第二个方法两次:第一次调用时不使用this关键字,第二次调用时使用this关键字-- * 这里只是为了验证
阅读全文
摘要:1. 构造器 构造器的一个重要的作用: 保证对象被使用之前初始化了. 构造器是一种特殊类型的方法, 因为他没有返回值。这与返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么, 但仍可选择让他返回别的东西。 思考: void还可以返回别的东西? 是什么东西呢? 后来想到, 可能
阅读全文
摘要:1. 静态导入 使用import static方式导入一个类的所有方法. 例如: import static net.mindview.util.Print.*; 使用import static方式导入一个类的所有方法. 例如: import static net.mindview.util.Pri
阅读全文
摘要:输出结果: 这个结果需要特别说明一下, String是特殊的引用类型, 当他被直接赋值时,就是把这个值对应的引用位置赋值给String变量了, 所以, 两次结果都是true。 如果你用new String()赋值, 结果就不同了.
阅读全文