Java编程思想
文章平均质量分 67
记忆殿堂
苦练基本功,每天前进十公里,致力于敲出规范好看的代码。
展开
-
Java中的数组
数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组对象的大小被固定,并且在其生命周期中不可改变。尽管通常应该首选ArrayList而不是数组,但是这种弹性需要开销,因此,ArrayLists的效率比数组低很多。数组是第一级对象无论使用哪种类型的数组,数组标识符只是一个引用,指向在堆中创建的一个真实对象,这个对象用以保存指向其他对象的引用原创 2021-01-31 07:03:44 · 139 阅读 · 0 评论 -
浅析Java中的RTTI机制与反射机制
Java有两种方式让我们在运行时识别对象和类的信息的。一种是“传统的”RTTI(Run-Time Type Identification),它假定我们编译时已经知道所有的类型;另一种是“反射”机制,它允许我们在运行是发现和使用类的信息。14.2 Class对象要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的。这项工作是由称为Class对象的特殊对象完成的,它包含了与类有关的信息。事实上,Class对象就是用来创建类的所有的”常规“对象的。Java使用Class对象来执行其R原创 2021-01-31 05:10:06 · 250 阅读 · 0 评论 -
Java编程思想-字符串
13.1 不可变StringString对象是不可变的。查看JDK文档你就会发现,String类种每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则毫无变动。13.2 StringBuilderStringBuilder提供了丰富而全面的方法,包括insert()、replace()、substring()甚至reverse(),但是最常用的还是append()和toString()。还有delete()方法。当你原创 2021-01-31 00:15:47 · 114 阅读 · 0 评论 -
Java编程思想-容器
通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。Java有多种保存对象(应该说是对象的引用)。数组是保存一组对象的最有效的方式,但是数组具有固定的尺寸,而在更一般的情况中,你写程序并不知到需要多少个对象,或者是否需要更复杂的方式来存储对象,因此数组尺寸这一限制显得过于受限了。Java实用类库提供了一套相当完整的容易类来解决这个问题,其中基本的类型是List、Set、Queu原创 2021-01-30 01:27:50 · 241 阅读 · 0 评论 -
Java编程思想-接口
9.1 抽象类和抽象方法Java提供一种叫做抽象方法的机制,这种方法是不完整的;仅有声明而没有方法体。下面是抽象方法声明所采用的语法:abstract void f();包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该类的对象,那么就必须为父类的所有抽象方法提供方法定义。如果不这么做,那么子类便也是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。9.6 适配接口接口最吸引人的原因之一就是允许同一个接口具有多原创 2021-01-29 09:21:05 · 82 阅读 · 0 评论 -
Java大师是怎么讲多态的
本文所有绝大部分内容都提取自《Java编程思想》第8章。最近想复习一下Java中多态这个概念,就在网上找了十几篇文章来看,看完之后还是感觉一头雾水。只好老老实实去看《Java编程思想》,看完之后不能说醍醐灌顶吧,但确实对多态这个概念有了更全面的认识。明白了为什么会有多态以及多态的用途,而不单单只是一个让我死记硬背的概念。Q:什么是多态?A: 先看一段代码//有三个音符的乐谱public enum Note { MIDDLE_C, C_SHARP, B_FLAT;}//能演奏出音符的乐原创 2021-01-29 05:31:29 · 156 阅读 · 0 评论 -
Java编程思想-复用类
正如Java中所有事物一样,问题解决都是围绕类展开的。可以通过创建新类来复用代码,而不必再重头开始编写。可以使用别人业己开发并调试好的类。第一种方法非常直观:只需在新的类中产生现有类的对象。由于新的类是由现有类的对象所组成,所以这种方法称为组合。该方法只是复用了现有程序代码的功能,而非它的形式。第二种方法则更细致一些,它按照现有类的类型来创建新类。无需改变现有类的形式,采用现有类的形式并在其中添加新代码。这种方式称为继承。7.1 组合语法我们可以在一个新类的定义中使用其他对象。这就是组合(compo原创 2021-01-28 16:19:09 · 154 阅读 · 1 评论 -
Java编程思想-初始化与清理
C++引入了构造器的概念,这是一个在创建对象时被自动调用的特殊方法。Java中也采用了构造器,并额外提供了“垃圾回收器”。对于不再使用的内存资源,垃圾回收器能自动将其释放。5.1 用构造器确保初始化在Java中,通过提供构造器,类的设计者可确保每个对象都会初始化。创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。构造器是一种特殊类型的方法,因为它没有返回值。这与返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么,但原创 2021-01-28 15:04:59 · 143 阅读 · 0 评论 -
Java编程思想-控制执行流程
4.4 Foreach语法Java SE5引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。for(float x : f) {}这条语句定义了一个float类型的变量x,继而将每一个f的元素赋值给x。任何返回一个数组的方法都可以使用foreach。例如,String类有一个方法toCharArray(),它返回一个char数组,因此可以很容易地像下面这样迭代在字符串里面的所有字符:publ原创 2021-01-27 21:17:05 · 105 阅读 · 0 评论 -
Java编程思想-操作符
3.2 使用Java操作符几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”、“==”,这些操作符能操作所有的对象。除此以外,String类支持“+”和“+=”。3.5 算术操作符下面这个例子展示了Random的用法:public class MathOps {Random rand=new Random(47);int j;j=rand.nextInt(100)+1;print("j:"+j );}要生成数字,程序首先会创建一个Random类的对象。如果在创建过程原创 2021-01-27 20:39:36 · 129 阅读 · 0 评论 -
Java编程思想-对象导论
1.1抽象过程面向对象方式通过向程序员表示问题空间中的元素的工具而更进了一步。这种表示方式非常通用,使得程序员不会受限于特定类型的问题。我们将问题空间中的元素机器在解空间中的表示称为”对象“。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。因此,当你在阅读描述解决方案的代码的同时,也是在阅读问题的表述。相比以前我们所使用的语言,这是一种更灵活和更强有力的语言抽象。Booch对对象提出了一个更加简洁的描述:对象具有状态、行为和标识。这意味这每一个对象都可以拥有内部数据(该对象的状态原创 2021-01-26 22:51:56 · 194 阅读 · 2 评论 -
Java编程思想-一切都是对象
2.1 用引用操纵对象尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”。可以将这一情形想象成遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量时,实际操控的是遥控器(引用),再由遥控器来调控电视机(对象)。此外,即使没有电视机,遥控器亦可独立存在。也就是说,你拥有一个引用,并不需要有一个对象与它关联。因此,如果想操纵一个词或者句子,则可以创建一个String引用:String s;2.2 必须由你创建所有对象一旦创建了一个引用,原创 2021-01-27 02:43:53 · 158 阅读 · 0 评论