thinking in java
Joey Liao
这个作者很懒,什么都没留下…
展开
-
thinking in java学习记录(二)一切都是对象
用引用操纵对象:我们一般操纵的标识符其实是对象的引用,比如:String s;这里创建的只是引用,并不是对象。如果此时向s发送一个消息,那么程序就会返回一个运行时异常必须由你创建所有对象:栈:静态分配内存(放在栈中的东西需要知道确切生命周期,如对象的引用,基本类型是特例)堆:动态分配内存(存放所有的java对象)永远不需要销毁对象:比如new了一个对象{String s =new ...原创 2019-10-05 22:21:05 · 70 阅读 · 0 评论 -
thinking in java学习记录(十五)泛型
15.1 与C++比较15.2 简单泛型15.2.1 一个元组类库15.2.2 一个堆栈类15.2.3 RandomList15.3 泛型接口15.4 泛型方法15.4.1 杠杆利用类型推断参数15.4.2 可变参数与泛型方法15.4.3 用于Generator的泛型方法15.4.4 一个通用的Generator15.4.5 简化元组的使用15.4.6 一个Set的实用工具...原创 2019-11-21 20:36:36 · 200 阅读 · 0 评论 -
thinking in java学习记录(十四)类型信息
14.1 为什么需要RTTI14.2 Class对象14.2.1 类字面常量14.2.2 泛化的Class引用14.2.3 新的转型语法14.3 类型转换前先做检查14.3.1 使用类字面常量14.3.2 动态的instanceof14.3.3 递归计数14.4 注册工厂14.5 instanceof与Class的等价性反射:运行时的类信息...原创 2019-11-11 20:56:02 · 112 阅读 · 0 评论 -
thinking in java学习记录(十三)字符串
13.1 不可变字符串String对象是不可变的,String类中每一个看起来像是会修改String值的方法,实际上都是创建了一个新的String对象,最初的String对象是没有改变的。参数是为方法提供信息的,而不是用来让方法改变自己的13.2 重载“+”与StringBuilder一个String对象初始化了,就不能再改变它的值了Java中重载的“+”其实就是使用了StringBui...原创 2019-11-06 22:05:08 · 126 阅读 · 0 评论 -
thinking in java学习记录(十二)通过异常处理错误
12.1 概念12.2 基本异常12.2.1 异常参数12.3 捕获异常12.3.1 try块12.3.2 异常处理程序12.4 创建自定义异常12.4.1 异常与记录日志**12.5 异常说明 **12.6 捕获所有的异常12.6.1 栈轨迹12.6.2 重新抛出异常12.6.3 异常链12.7 java标准异常12.7.1 特例:RuntimeException1...原创 2019-11-03 23:29:05 · 118 阅读 · 0 评论 -
thinking in java学习记录(十一)持有对象
11.1 泛型和类型安全的容器想要定义一个用来保存Apple对象的ArrayList,可以这样声明ArrayList<Apple>,这样通过使用泛型就可以在编译期防止将错误类型的对象放置到容器中对于放入到容器中的类型,向上转型也可以像用于其他类型一样用于泛型(即泛型接受子类)11.2 基本概念java容器类库的作用是用来保存对象,并将其划分为两个不同的概念:1.Collect...原创 2019-10-28 22:34:26 · 119 阅读 · 0 评论 -
thinking in java学习记录(十)内部类
10.1 创建内部类10.2 连接到外部类10.3 使用.this和.new10.4 内部类和向上转型10.5 在方法和作用域内的内部类10.6 匿名内部类10.6.1 再访工厂方法10.7 嵌套类10.7.1 接口内部的类10.7.2 从多层嵌套类中访问外部类的成员10.8 为什么需要内部类10.8.1 闭包和回调10.8.2 内部类与控制框架10.9 内部类的继承1...原创 2019-10-27 20:44:01 · 134 阅读 · 0 评论 -
think in java学习记录(九)接口
9.1 抽象类和抽象方法包含抽象方法的类叫做抽象类,如果一个类包含一个或者多个抽象方法,该类必须被限定为抽象的,抽象类的子类也可以不对方法做定义但是也必须声明为abstract9.2 接口接口也是可以包含域的,但是隐式的声明为static final9.3 完全解耦只要一个方法操作的是类而非接口,那么就只能使用这个类和这个类的子类(即使两个类一模一样,不是父子类也不行)9.4 java...原创 2019-10-21 21:29:57 · 116 阅读 · 0 评论 -
thinking in java学习记录(八)多态
8.1 再论向上转型8.1.1 忘记对象类型8.2 转机8.2.1 方法调用绑定8.2.2 产生正确的行为8.2.3 可扩展性8.2.4 缺陷:“覆盖”私有方法8.2.5 缺陷:域与静态方法8.3 构造器和多态8.3.1 构造器的调用顺序8.3.2 继承与清理8.3.3 构造器内部的多态方法的行为8.4 协变返回类型8.5 用继承进行设计8.5.1 纯继承与扩展8.5...原创 2019-10-19 20:07:25 · 81 阅读 · 0 评论 -
thinking in java学习记录(七)复用类
7.1组合语法只需要在新的类中产生现有类的对象编译器并不会对每个引用都创建默认对象,这一点是很有意义的,因为若要使真的那样做的话,就会在许多情况下增加不必要的负担。可以在代码中的这些位置进行:1.在定义对象的地方,这意味着他们将在构造器调用之前执行。2.在类的构造器中3.就在正要使用这些对象之前(惰性初始化),可以减少额外的负担4.实例初始化7.2继承语法可以为每个类都设置一个ma...原创 2019-10-14 22:49:50 · 92 阅读 · 0 评论 -
thinking in java学习记录(六)访问权限控制
6.1包:库单元6.1.1:代码组织每个编译单元只能有一个public类6.1.2:创建独一无二的包名java解释器是这样运行的,首先找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称,解释器就在这些路径下查找你所创建的类。6.1.3:...原创 2019-10-10 22:49:03 · 88 阅读 · 0 评论 -
thinking in java学习记录(五) 初始化与清理
用构造器确保初始化构造器采用与类相同的名称,所以每个方法首字母小写不适用于构造器,且没有返回值在java中,“初始化”和“创建”是捆绑在一起的,两者无法分离方法重载通过独一无二的参数列表来区分重载的方法,甚至参数列表的顺序也能区分不同的重载方法,但是根据方法的返回值来区分不同的重载方法是不行的默认构造器如果已经定义了一个构造器(无论是否带参数),那么编译器就不会帮你创建默认构造器th...原创 2019-10-08 21:20:14 · 93 阅读 · 0 评论 -
thinking in java学习记录(四)控制执行流程
true和falseif-else迭代while do-while forforeachfor(float x:f){}returnreturn关键词有两个方面的作用:1.指定一个方法返回什么值2.导致当前方法退出并返回那个值break和continuebreak用于强制退出循环,不执行循环中剩余的语句,而continue则定制当前的迭代,然后退回循环的起点,开始下...原创 2019-10-07 21:22:50 · 96 阅读 · 0 评论 -
thinking in java学习记录(三)操作符
要生成数字,程序首先会生成一个Random类的对象。如果再创建过程中没有传递任何参数,那么java就会将当前时间作为随机数生成器的种子。关系操作符:“=="表示的是引用对象是否一致,而不是对象的值,所以是否可以理解为比较的就是对象的地址equals默认比较的是对象的引用,要想比较的对象的值是否相同就要重写equals方法,但这个方法并不适用于基本类型(String不是基本类型,而是封装类,大...原创 2019-10-05 22:41:01 · 75 阅读 · 0 评论 -
thinking in java学习记录(一)对象导论
我们将问题空间里的元素及其在解空间中的表示称为对象对象有这些特性:1.万物皆为对象2.程序是对象的集合,他们通过发送消息来告知彼此所要做的,而消息可以想象为对某个特定方法的调用请求3.每个对象都拥有自己的有其他对象所构成的存储4.每个对象都拥有其类型5.某一特定类型的所有对象都可以接受同样的信息因为类描述了具有相同数据元素和功能的对象集合,所以类其实可以看做是一个数据类型,java通...原创 2019-10-05 21:55:26 · 100 阅读 · 0 评论