1 一个Java源程序是由若干个类组成。
2 class 是Java的关键字,用来定义类。
3 Java应用程序中有多个类时,java命令后的类名必须是包含了 main 方法的那个类的名字。
4 一个Java应用程序必须且只有一个类含有 main 方法。
5 在一个Java应用程序中main方法必须被说明为 public static void 。
6 Java中所有程序都使用方法,应用程序以 main 方法开始。
7 Java源文件中有多个类,但只能有一个类是 public的类。
8 Java源程序编译后生成的字节码文件扩展名为 class 。
9 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符 。
10 Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字 。
11 关键字 就是Java语言中已经被赋予特定意义的一些单词,不可以把这类词作为名字来用。
12 使用关键字 boolean 来定义逻辑变量。
13 结构化程序设计的基本数据类型包括逻辑类型 、整数类型、字符类型、浮点类型(小数类型)。
14 Java中byte型数组在内存中的存储形式是补码 。
15 java中,整数型变量的类型有byte,shor,int和long四种.。
16 对于byte型变量,内存分配 1 个字节。
17 对于short型变量,内存分配 2 个字节。
18 对于int型变量,内存分配 4 个字节。
19 对于long型变量,内存分配 8 个字节。
20 java中,当数据类型为整数类型时,默认的类型为int类型。
21 整数类型数据在内存中以二进制的方式表示。
22 使用关键字 char 来定义字符变量。
23 Java中的char占两个字节。
24 Java中,浮点型(小数型)变量的类型有float和 double 两种。
25 对于float型变量,内存分配 4 个字节。
26 对于double型变量,内存分配 8 个字节。
27 Java中,当数据类型为小数类型时,默认的类型为double类型。
28 Java使用 Unicode 字符集。
29 Java中逻辑运算符的操作元必须是 boolean 型数据。
30 Java中关系运算符的运算结果是 boolean 型。
31 当把级别高的变量的值赋予级别低的变量时,必须使用强制类型转换,不然都是使用默认的。
32 混合运算中不同类型的数据先转化为同一类型,然后运算,其中不包括字符类型 、逻辑类型。
33 Java语言的控制语句有3种类型,即条件语句(分支语句)、循环语句 、和转移(跳转)语句
34 Java控制语句中的条件语句包括if语句和switch语句两种。
35 Java控制语句中的循环语句包括(for,while,do...while)三种。
36 Java控制语句中的转移语句包括(break,continue,return)三种。
37 在同一个switch语句中,case后的常量值必须互不相同。
38 do-while循环和while循环的区别是 :do-while循环体至少被执行一次 。
39 在循环体中,如果想结束本次循环可以用 continue 语句。
40 在循环体中,如果想跳出循环,结束整个循环可以用 break 语句。
41 Java中的语句可分为方法调用语句、表达式语句、复合语句、控制语句 和package语句和import语句。
42 面向对象编程序主要有封装性 、继承性、多态性的特点。
43 类是组成Java程序的基本要素,封装了一类对象的状态和方法。
44 类的实现包括两部分:类声明和类体 。
45 类体有两部分构成:一部分是变量的定义,另一部分是方法的定义。
46 在类体中,变量定义部分所定义的变量为类的成员变量 。
47 成员变量在整个类内都有效,局部变量只在定义它的方法内有效。
48 Java中成员变量又分为实例成员变量和类成员变量 。
49 写类的目的是为了描述一类事物共有的属性和功能。
50 成员变量和局部变量的类型可以是Java中的任何一种数据类型 。
51 用修饰符 static说明的成员变量是类变量。
52 变量的名字与成员变量的名字相同,则成员变量被隐藏 ,该成员变量在这个方法内暂时失效。
53 如果局部变量的名字与成员变量的名字相同,成员变量将被隐藏。
54 方法定义包括两部分:方法声明和方法体。
55 在Java中,当一个方法不需要返回数据时返回类型必须是 void 。
56 方法重载是指,一个类中可以有多个方法具有相同的名字和类型,但这些方法的参数必须不同。
57 在Java程序语言中,它允许在一个class中有几个方法,都有相同的名字,这种用法称为方法重载 。
58 构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并不返回任何数据类型。
59 Java中类的方法分为实例方法和类方法 。
60 因为类体的内容由成员变量的定义和成员方法的定义两部分组成,对成员变量的操作只能放在成员方法中。
61 java中构造方法与类名相同,没有返回值,在创建对象实例时由new运算符自动调用。
62 在类方法中只能调用类变量和类方法,不能调用实例方法。
63 实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。
64 Java中类是创建对象的模板,对象是满足这个类条件下的一个实例。
65 当使用一个类创建了一个对象时,我们也说给出了这个类的实例。
66 所有的对象都是由两部分组成的(静态的属性和动态的属性)。
67 静态的属性通过变量来表示,动态的属性通过函数来表示
68 Java中用类创建一个对象包括对象的声明和为对象分配内存两个步骤。
69 对象声明的一般格式为类名和对象名 。
70 一个类通过使用 new 运算符可以创建多个不同对象,这些对象将分配不同的内存空间。
71 一个类通过使用new运算符和类的构造方法 为声明的对象分配内存。
72 对象创建完后,通过使用运算符“.”,对象可以实现对变量的访问和方法的调用。
73 Java中不同对象的实例变量将被分配不同的内存空间。
74 Java中如果类中的成员变量有类变量,那所有的对象的给这样的变量分配给相同的一处内存。
75 类方法和实例方法的区别在于,类方法不但可以由对象调用还可以直接由类名调用,而实例方法却不可以。
76 类体中的方法分为:实例方法和类方法。
77 package 语句作为java源文件的第一条语句指明该源文件定义的类所在的包。
78 在java程序中,系统会自动引入java.lang这个包,因此不需要再使用 import 语句引入该包。
79 在Java程序中,为了使程序能够使用自定义的包,必须在 classpath 环境变量中指明自定义包的位置。
80 Java.lang 包是java语言的核心类库,它包含了运行java程序必不可少的系统类。
81 为了能使用Java提供的类,我们可以使用语句 import 来引入所需的类。
82 Java中用 private 修饰的成员变量和方法称为私有变量和私有方法。
83 Java中不用修饰的成员变量称为友好变量。
84 访问权限是私有变量,只能在本类中使用,不能在类外使用。
85 Java中用 public 修饰的成员变量和方法称为共有变量和共有方法。
86 当访问权限是共有变量时,不但在本类中使用,还可以在任何另外一个类中使用。
87 当访问权限是友好变量时,只能在本类和与本类同一个包中的其他类使用。
89 继承是一种由已有的类创建新类的机制。
90 Java中由继承而得到的类称为子类 ,被继承的类称为父类。
91 Java中不支持多重继承。
92 在类的声明中,通过使用关键字 extends 来创建一个类的子类。
93 Java中一个类可以有 1 个父类。
94 如果一个类的声明中没有使用extends关键字,这个类被系统默认为是 Object 类的子类。
95 子类自然地继承了其父类中不是 private 的成员变量作为自己的成员变量。
96 当子类中定义的成员变量和父类中的成员变量同名时,子类的成员变量隐藏 了父类的成员变量。
97 子类通过成员变量的隐藏和方法的重写,可以把父类的状态和行为改变为自身的状态和行为。
98 对于重写或继承的方法,Java运行时系统根据调用方法的实例的类型来选择调用哪个方法。
99 对于子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用子类 的方法。
100 对于子类创建的一个对象,如果子类继承了父类的方法,未重写,则运行时调用父类的方法。
101 在Java语言中多态性体现在由方法重载实现的静态多态性和方法重写,实现的动态多态性。
102 final 类不能被继承,即不能有子类。
103 abstract 类不能创建对象,必须产生其子类,由子类创建对象。
104 如果一个方法被修饰为 final 方法,则这个方法不能被重写。
105 对于 abstract 方法,只允许声明,而不允许实现。
106 如果一个类是一个abstract类的子类,它必须具体实现父类 的abstract方法。
107 局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字 this 。
108 在关键字中能代表当前类或对象本身的是 this 。
109 如果在子类中想使用被子类隐藏的父类的成员变量或方法可以使用关键字 super 。
110 子类如果想用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字 super 来表示。
111 Java中为了克服单继承的缺点,使用了接口,一个类可以实现多个接口。
112 接口,就是方法定义和常量值的集合。
113 使用关键字 interface 来定义接口。
114 接口的定义包括接口的声明和接口体 。
115 定义接口时,接口体中只进行方法的声明,不允许提供方法的实现 。
116 一个类通过使用关键字 implements 声明自己实现一个或多个接口。
117 如果一个类实现了某个接口,那么这个类必须实现该接口的所有方法 。
118 接口中的方法被默认的访问权限是 public 。
119 如果接口中的方法的返回类型不是void的,那么在类中实现该接口的方法时,方法体至少要有一个 return 语句。
120 内部类,指那些类定义代码被置于其他类定义中的类。
121 泛型 是Java SE5.0的新特性。
122 创建对象常用的方法就是使用 new 运算符和类的构造方法。
123 把Java应用程序中涉及到的类压缩成一个 jar 文件。
124 数组,是相同类型的数据按顺序组成的一种引用数据类型。
125 Java中定义数组后通过数组名,加数组下标,来使用数组中的数据。
126 Java中声明数组包括数组的名字、数组包含的元素的数据类型 。
127 声明数组 仅仅是给出了数组名字和元素的数据类型,要想真正的使用数组还必须为它分配内存空间。
128 一维数组通过下标符访问自己的元素,需要注意的是下标从 0 开始。
129 创建数组后,系统会给每一个数组元素一个默认的值,如float型是 0 。
130 声明数组仅仅是给出了数组名字和元素的数据类型,要想真正地使用数组还必须为它分配内存空间 。
131 数组声明后,必须使用 new 运算符分配内存空间。
132 Java中使用java.lang包中的 String 类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。
133 创建一个字符串时,使用String类的构造方法 。
134 String 类是不可变类,对象所包含的字符串内容永远不会被改变。
135 StringBuffer 类是可变类,对象所包含的字符串内容可以被添加或修改。
136 使用String类的 length() 方法可以获取一个字符串的长度。
137 可以使用String类的 startsWith(String s) 方法判断一个字符串的前缀是否是字符串s。
138 可以使用String类的 equals(String s) 方法比较一字符串是否与字符串s相同。
139 字符串调用 indexOf(String s) 方法从当前字符串的头开始检索字符串s,并返回首次出现s 的位置。
140 字符串调用indexOf方法检索字符串s,并返回首次出现s 的位置。如果没有检索到字符串s,该方法返回的值是 -1 。
141 一个字符串s 通过调用方法 trim() 得到一个字符串对象,该字符串对象是s 去掉前后空格后的字符串。
142 java.lang 包中的Integer 类调用其类方法:
parseInt 可以将“数字”格式的字符串,如“12387”,转化为int 型数据。
143 可以使用java.lang包中的 Integer 类将形如“12387”的字符串转化为int型数据。
144 可以使用java.lang包中的 Long 类将字符串转化为long型数据。
145 可以使用String类直接调用 valueOf 方法将数值转化为字符串。
146 StringBuffer类调用方法, toString() 返回缓冲区内的字符串。
147 Object类有一个public方法是 toString ,一个对象通过调用该方法可以获得该对象的字符串表示。
148 Object 类是所有Java 类的最终祖先,如果一个类在声明时没有包含extends 关键词,那么这个类直接继承Object类。
149 对于一个已经不被任何引用变量引用的对象,当垃圾回收器准备回收该对象所占用的内存时,将自动调用该对象的 finalize() 方法。
150 每个Java 基本类型在java.lang 包中都有一个相应的包装 类,把基本类型数据转换为对象。
151 在Java 集合中不能存放基本类型数据,如果要存放数字,应该使用包装类型 。
152 Character 类和Boolean 类直接继承Object 类,除此以外,其他包装类都是 java.Number 的直接子类。
153 包装类都覆盖了Object 类的 toString() 方法,以字符串的形式返回包装对象所表示的基本类型数据。
154 所有的包装类都是final 类型,因此不能创建它们的子类 。
155 Math 类提供了许多用于数学运算的静态方法。
156 Math 类是 final 类型的,因此不能有子类。
157 Random 类提供了一系列用于生成随机数的方法。
158 Date 类以毫秒数来表示特定的日期。
159 java.text.DateFormat 抽象类用于定制日期的格式, 它有一个具体子类为 SimpleDateFormat 。
160 BigDecimal 类能够进行浮点数的精确加法、减法和乘法运算,对于浮点数的除法运算,可以满足用户指定的精度。
161 异常处理 方法是一种非常有用的辅助性程序设计方法。采用这种方法可以使得在程序设计时将程序的正常流程与错误处理分开,有利于代码的编写和维护。
162 按异常在编译时是否被检测来分,异常可以分为两大类:受检异常与非受检异常 。
163 程序可以处理的异常对应的类是 Exception 及其子类。
164 抛出异常可以利用 throw 语句。
165 处理异常的方式有两种:捕捉异常 方式与转移异常方式。
166 捕捉异常方式是通过 try-catch-finally 结构处理异常。
167 在try-catch-finally 结构中, finally 语句块一般总是会被执行,不管有没有异常产生。
168 异常处理流程中,其中 try 代码块包含了可能发生异常的程序代码。
169 异常处理流程中,其中 catch 代码快紧跟在try 代码块后面,用来捕获并处理异常。
170 异常处理流程中,其中 finally 代码块用于释放被占用的相关资源。
171 对于程序中可能出现的受检查异常,要么用try…catch 语句捕获并处理它,要么用 throw 语句抛出它,Java 编译器会对此做检查。
172 File 对象调用方法 mkdir() 创建一个目录。
173 文件输入流(输入流的子类)提供对文件的存取。为了读取文件,使用文件输入流构造方法来打开 一个到达该文件的输入流。
174 输入流试图要打开的文件可能不存在,就出现I/O 错误,Java 生成一个出错信号,它使用一个 IOException 对象来表示这个出错信号。
175 read 方法给程序提供一个从输入流中读取数据的基本方法。
176 read 方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0~255 之间的一个整数),如果到达源的末尾,该方法返回 -1 。
177 虽然Java 在程序结束时自动关闭所有打开的流,但是当我们使用完流后,显式地关闭 任何打开的流仍是一个良好的习惯。
178 在操作系统把程序所写到输出流上的那些字节保存到磁盘上之前,内容有时被存放在内存缓冲区中,通过调用 close() 方法,可以保证操作系统把流缓冲区的内容写到它的目的地。
179 java.lang 包中的System 类有两个重要的类成员:in 和 out ,分别是输入流和输出流类型的对象。
180 FileInputStream 使用字节 读取文件,不能直接操作Unicde 字符。
181 RandomAccessFile 类中用 seek 方法,来定位RandomAccessFile 流的读写位置。
182 Java的抽象窗口工具包中包含了许多类来支持 GUI 设计。
183 JButton类、JLabel类是包javax.swing中的类,并且是javax.swing包中的 JComponent 的子类。
184 Java把有JComponent类的子类或间接子类创建的对象称为一个swing组件 。
185 javax.swing包的类 JPanel 是用来建立面板的。
186 javax.swing包中的 JScrollPane 类也是JContainer类的子类,该类创建的对象也是一个容器,称为滚动窗口。
187 javax.swing包中的 JFrame 类或子类所创建的一个对象就是一个窗口。
188 Java程序中可以向容器添加组件,一个容器可以使用 add() 方法将组件添加到该容器中。
189 在组件类的一些常用方法中 setBackground 方法是设置组件的背景颜色。
190 在组件类的一些常用方法中 setForeground 方法是设置组件的前景颜色。
191 Java中JFrame类的 setTitle 方法是用来设置窗口的名字。
192 JFrame类创建的对象是一个窗口容器,它默认布局是 BorderLayout 布局。
193 JPanel 的默认布局管理器是 FlowLayout 。
194 Java的java.awt包中定义了5种布局类,分别是FlowLayout、BorderLayout、CardLayout、 GridLayout 和GridBagLayout。
195 Java的java.awt包中定义了5种布局类,分别是FlowLayout、BorderLayout、 CardLayout 、GridLayout和GridBagLayout。
196 FlowLayout 对应的布局是容器将其中的组件按照加入的先后顺序从左向右排列。
197 BorderLayout 对应的布局是把容器内的空间简单地划分为东、西、南、北、中5个区域,每加入一个组件都应该指明把这个组件加在哪个区域中。
198 GridLayout 是使用较多的布局编辑器,其基本布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。
199 FlowLayout、GridLayout、BordrLayout布局对象都可以使用方法setVgap(intvgap)设置当前布局中组件的垂直间距 。
200 FlowLayout、GridLayout、BordrLayout布局对象都可以使用方法setHgap(inthgap)设置当前布局中组件的水平间距 。
201 使用 CardLayout 布局的容器可以容纳多个组件,但实际上同一时刻容器只能从这些组件中选出一个来显示。
202 Java中能够产生事件的对象都可以成为事件源 ,如文本框、按钮、键盘等。
203 Java中事件源发生事件时,监视器 就自动调用执行被类实现的某个接口方法。
204 当用户与GUI 交互,比如移动鼠标、按下鼠标键、单击Button 按钮、在文本框内输入文本、选择菜单项或者关闭窗口时,GUI 会接受到相应的事件 。
205 Java中,监听器 负责接收和处理这种事件。
206 Java中为了能监视到ActionEvent类型的事件,事件源必须使用 addActionListener() 方法获得监视器。
207 只要用户单击JButton,就会触发一个ActionEvent 事件,该事件被监听器接收,它的方法 actionPerformed() 被执行。
208 在监听类的事件处理方法中通过事件类的 getSource() 方法来获得事件源。
209 Java的 java.awt.event 包中包含了许多用来处理事件的类和接口。
210 鼠标事件类MouseEvent中的方法getSource()是获取发生鼠标事件的事件源 。
211 使用MouseListener接口处理鼠标事件,事件源发生的鼠标事件有5种,按下鼠标键、释放 鼠标键、点击鼠标键、鼠标进入和鼠标退出。
212 鼠标事件的类型是 MouseEvent ,即当发生鼠标事件时,该类自动创建一个事件对象。
213 使用MouseListener接口处理鼠标事件,鼠标事件源发生的鼠标事件包括,按下鼠标键、释放鼠标键、单击 鼠标键、鼠标进入和鼠标退出。
214 MouseMotionListener 和MouseListener 都监听 MouseEvent 事件。
215 javax.swing包中的 JButton 类专门用来建立按钮,即它的实例对象就是一个按钮。
216 在JButton类中, getText() 方法是用来获取按钮上的名字。
217 在javax.swing中 JLabel 类使用来创建标签的,即它的一个实例就是一个标签。
218 在javax.swing包中的 JTextField 类是专门用来建立文本框,它的一个对象就是一个文本框。
219 Java中文本框类的 setText(String s) 方法是在文本框中设置文本。
220 Java中文本框类的 getText() 方法是获取文本框中的文本。
221 Java中标签类的 setText(String s) 方法是设置标签的名字。
222 Java中标签类的 getText() 方法是获取标签的名字。
223 Java中 JTextArea 类是专门用来建立文本区的,即它的一个对象就是一个文本区。
224 javax.swing包中的 JCheckBox 类是专门用来建立选择框的。
225 在JCheckBox类中, isSelected 方法是用来返回选择框的布尔状态。
226 javax.swing包中的类 JList 类是专门用来建立列表框。
227 对话框与一般窗口的区别在于它必须依赖 于其他窗口。
228 对话框分为两种,如果有模式 对话框被显示,那么其他窗口都处于不活动状态,只有当用户关闭了对话框,才能操纵其他窗口。
229 对话框分为两种,如果无模式 对话框被显示,其他窗口照样处于活动状态。
230 在对话框类Dialog中的方法setModal(boolean)的作用是设置对话框的模式 。
231 在对话框类Dialog中的方法 setSize() 是设置对话框的大小。
232 对话框的默认布局是 BorderLayout 布局,在创建对话框时必须有对话框大小的设置。
233 FileDialog 是Dialog类的子类,它创建的对象称为文件对话框。
234 FileDialog是Dialog类的子类,它创建的对象称为文件对话框 。
235 Java开发程序大多是单线程 的,即一个程序只有一条从头至尾的执行线索。
236 多线程 是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。
237 线程 是指进程中的一个执行流程。
238 一个进程在其执行过程中,可以产生多个线程 ,形成多条执行线索。
239 每个java程序都有一个默认的主线程 。
240 对于java应用程序,主线程都是从 main 方法执行的线索。
241 在java中要想实现多线程,必须在主线程中创建新的线程对象 。
242 当一个线程处于创建 状态时,它仅仅是一个空的线程对象,系统不为它分配资源。
243 一个正在执行的线程可能被人为地中断,让出CPU 的使用权,暂时中止自己的执行,进入阻塞 状态。
244 处于死亡 状态的线程不具有继续运行的能力。
245 处于就绪 状态的线程首先进入就绪队列排队等候处理器资源,同一时刻在就绪队列中的线程可能有多个。
246 在线程排队时,优先级高 的线程可以排在较前的位置,能优先享用到处理器资源,而其他线程只能排在它后面再获得处理器资源。
247 对于优先级相同的线程,遵循队列的先进先出 原则被分配给处理器资源。
248 Java语言使用 Thread 类及其子类的对象来表示线程。
249 线程调度管理器 负责管理线程排队和处理器在线程间的分配,一般都配有一个精心设计的线程调度算法。
250 在java系统中,线程调度依据优先级基础上的先到先服务 原则。
251 当生成一个 Thread 类的对象之后,一个新的线程就产生了。
252 Java 中编程实现多线程应用有两种途径:一种是用Thread 类的子类创建线程,另一种是用Thread 类结合 Runnable 接口创建线程。
253 Thread 类综合了Java 程序中一个线程需要拥有的属性和方法。
254 start() 方法将启动线程对象,使之从新建状态转入就绪状态并进入就绪队列排队。
255 当 run 方法执行完毕,线程就变成死亡状态,所谓死亡状态就是线程释放了实体,即释放分配给线程对象的内存。
256 利用构造 方法创建新线程对象之后,这个对象中的有关数据被初始化,从而进入线程生命周期的新建状态。
257 优先级高的线程可以在它的run()方法中调用 sleep() 方法来使自己放弃处理器资源,休眠一段时间。
258 Java多线程使用中,调用 currentThread 方法可确定当前占有CPU的线程。
259 当用Thread 类的构造方法Thread(Runnabletarget)创建线程对象时,构造方法中的参数必须是一个具体的对象,该对象称作线程的目标对象 。
260 当线程调用start 方法时,一旦轮到它来享用CPU,目标对象就会自动调用接口中的 run 方法。
261 一个实现了 Runnable 接口的类实际上定义了一个主线程之外的新线程的操作。
262 Thread 类代表线程类,它的方法 run() ―包含线程运行时所执行的代码。
263 Thread 类代表线程类,它的方法 start() 用于启动线程。
264 Java 提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级 决定应调度哪些线程来执行。
265 在独占 方式下,当前活动线程一旦获得执行权,将一直执行下去,直到执行完毕或由于某种原因主动放弃CPU,或者是有一高优先级的线程处于就绪状态。
266 线程调用了yield()或 sleep() 方法主动放弃CPU。
267 线程的优先级用数字来表示, 范围从1 到 10 。
268 一个线程的缺省优先级是 5 。
269 使用多线程时,有时需要协调两个或多个线程的活动。使线程协调工作的过程称为同步化 。
270 可以通过使用 synchronized 关键词修改方法来同步化对方法的访问。
271 线程中, wait 的作用:释放已持有的锁,进入等待队列。
272 线程中, notify 的作用:唤醒wait 队列中的第一个线程并把它移入锁申请队列。
273 线程中, notifyAll 的作用:唤醒wait 队列中的所有的线程并把它们移入锁申请队列。
集合框架:
1 数组 的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的
2 堆栈 只允许对最后插入的元素进行操作(也就是后进先出,Last In First Out – LIFO)。如果你移除了最后一个元素,那么你可以操作倒数第二个元素,依次类推。
3 集合跟列表两者基本相似,但是集合 不允许存放重复的元素。
4队列和堆栈有些相似,不同之处在于在队列里第一个插入的元素也是第一个被删除的元素(即是先进先出)。
5 链表 是一种由多个节点组成的数据结构,并且每个节点包含有数据以及指向下一个节点的引用
6 HashMap 的访问时间接近稳定,它是一种键值对映射的数据结构
7 树 是一种由节点组成的数据结构,每个节点都包含数据元素,并且有一个或多个子节点,每个子节点指向一个父节点
网友评论