java基础知识详细整理(图文并茂深入浅出)
- 格式:pdf
- 大小:1.57 MB
- 文档页数:21
目录目录 (1)1、第一个java程序 (6)2、变量、数据类型、运算符 (6)2.1.1变量的概念 (6)2.1.2定义变量的格式 (6)2.2数据类型 (6)2.2.1基本数据类型 (6)2.2.2引用数据类型 (6)2.3运算符 (6)2.3.1算术运算符 (7)2.3.2关系运算符 (7)2.3.3逻辑运算符 (7)3、控制语句 (7)3.1、if语句 (7)3.2、switch语句 (8)4、循环语句 (8)4.1、for (8)4.1.1语法格式 (9)4.1.2示例 (9)4.2、while (9)4.2.1语法结构 (9)4.2.2示例 (9)4.3、do{}while(); (9)4.3.1语法结构 (10)4.3.2示例 (10)4.3.1语法结构 (10)4.3.2示例 (10)5、跳转语句 (11)5.1、break (11)5.2、continue (12)5.3、跳转语句小结 (13)6、数组 (14)6.1、基本用法 (14)6.1.1、数据的基本要素 (14)6.1.2、使用数组的方法 (14)6.2、实用案例 (15)6.3排序 (15)6.3.1方法一:Arrays.sort(scores) (15)6.3.2方法二:冒泡排序 (15)6.3.3方法三:选择排序法 (16)6.4九九乘法表 (17)6.5多维数组 (17)6.5.1杨辉三角 (17)6.5.6多维数组的应用 (18)7、类和对象 (19)7.1、类 (19)7.1.1、类的表示方法 (19)7.1.2、类的成员 (20)7.2对象 (20)7.2.1、创建对象的语法: (20)7.2.2、使用对象的语法 (20)7.3对象数组 (21)8、方法 (21)8.1、构造方法 (21)8.2无参的构造方法 (22)8.3有参构造方法 (22)8.3.1、值传递 (22)8.3.2、引用传递 (22)8.3.3、形参与实参的传递示意图 (23) (24)8.4方法的返回值 (25)8.4.1、无返回值 (25)8.4.2、基本数据类型作为返回值 (25)8.4.3、以对象作为返回值 (25)8.5方法的重载 (25)8.6方法的重写 (26)9、关键字 (26)9.1、this和super (26)9.1.1this关键字 (26)9.1.2、super关键字 (27)9.2、static (28)9.3、abstract和final (33)9.3.1、abstract (33)9.3.2、final (33)10、封装和抽象 (35)10.1、封装 (35)10.1.1、封装概述 (35)10.1.2、封装的属性 (35)10.2、抽象 (36)11、继承 (37)11.1、继承的作用 (37)11.2、实例化子类对象 (39)11.2、extends (39)11.3、访问修饰符 (39)12、接口 (40)12.1、定义和实现一个简单的接口 (40)13、多态 (44)一、多态 (44)13.1、以父类或者接口作为方法的参数 (47)13.2、以父类或者接口作为方法的返回值 (47)13.3、工厂模式 (48)13.3.1、工厂模式的介绍 (48)13.3.2、简单工厂模式介绍 (48)13.4、代理者模式 (49)13.4.1、组成 (49)13.4.2、优点 (49)13.4.3、模式结构 (49)14、异常处理 (49)14.1、try-catch-finally (49)14.2、throw 和throws (50)14.2.1、使用throws声明抛出异常 (50)14.2.2、使用throw抛出异常 (50)14.3、log4j (50)14.3.1、log4j (50)14.3.2、怎么引入第三方工具包 (51)14.4、java中的异常分类 (51)14.4.1、Exception分为两大类异常 (52)15、集合框架 (52)15.1、Collection和Map的区别 (53)Collection接口用来存储一组不唯一,无序的对象; (53)List接口存储一组不唯一,有序(插入顺序)的对象; (53)Set接口存储一组唯一,无序的对象; (53)Map接口存储一组键值对象,提供key到value的映射; (53)15.2、List类(集合类转Array)转换方法 (54)15.3、Array类(数组类转List)转换方法 (54)15.4、如何有序集合对象创建与使用ArrayList类的使用 (55)15.4.1、创建一个集合对象 (55)15.4.2、向集合中添加对象 (55)获取集合中的某一个元素 (55)删除指定元素 (55)获取集合的大小 (55)取出集合中所有的元素 (56)清空集合中所有的元素 (56)判断是否包含某元素 (56)将数组插入到指定的索引位置 (57)集合元素的替换 (57)15.5、LinkedList类的使用 (57)在特殊位置添加元素addFrist(对象);或者addLast(对象); (58)15.6、Foreach循环(加强for循环) (59)15.7、Set接口 (59)HashSet常用方法: (60)HashSet的构造方法: (60)Set的子类和普通方法: (61)15.8、Iterator接口 (61)15.9、Map接口 (62)15.9.1、HashMap类存储数据 (63)15.9.2、Map类和Iterator迭代器的交互式使用方法 (64)15.10、泛型的定义 (66)15.10.1、泛型定义的语法 (67)参数化类型 (67)类型变量 (67)15.10.2、Map.Entry<K,V>的用法 (67)15.11、关于keySet()和entrySet()的区别 (68)16、字符串 (69)构造方法 (69)长度显示 (69)比较 (70)大小写转换 (70)定位 (70)提取 (70)字符串的分割 (71)判断字符出现的次数 (71)17、文件操作、IO流 (71)17.1、File类 (71)17.1.1、常用的字段 (71)17.1.2、常用的构造方法 (72)17.1.3、常用的方法 (72)17.2、文件流 (72)17.2.1、InputStream(读数据)——FileInputStream (73)构造方法 (73)常用方法 (73)读取数据完整示例 (73)17.2.2、OutputStream(写数据)——FileOutputStream (74)构造方法 (74)常用方法 (74)写入数据完整示例 (74)17.2.3、Reader——BufferedReader (74)构造方法 (74)常用方法 (75)读取文件完整示例 (75)17.2.4、Writer——BufferedWriter (75)构造方法 (75)常用方法 (75)写数据完整示例 (76)17.3、字符流与字节流的选择 (76)1、第一个java程序编写第一个java程序public static void main(String [] args){System.out.println(“hello world”);}2、变量、数据类型、运算符2.1.1变量的概念——内存中的一个存储区域——该区域有自己的名称(变量名)和类型(数据类型)——java中每个变量必须先声明后使用——该区域的数据可以在同意类型范围内不断变化2.1.2定义变量的格式数据类型变量名= 初始值变量名的第一个符号只能是:英文字母、_、$,中间不能有其他符号的存在。
java基础知识总结java基础知识总结pptjava基础知识总结篇(一):Java基础知识总结1.什么是类和对象?__ING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
对象:对现实世界中的实体的抽象。
在计算机中,是指可标识的存储区域。
类:具有共同属性和行为的对象的抽象。
类是创建对象的模板。
2.为什么要使用面向对象?首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节对其他对象是屏蔽的。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
3.面向过程思想和面向对象思想比较?面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
4.实例变量和局部变量的比较实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
实例变量的对象赋值为null。
不允许在同一作用域内定义两个相同名称的实例变量和局部变量,但实例变量和局部变量允许命名冲突。
区分实例变量和局部变量时一定要写this。
5.介绍一下对构造函数的理解构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。
构造方法没有返回值。
格式为:public 方法名。
构造方法的方法名与类名相同。
构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。
Java 10系统基础知识编程语言的I/O类库屮常常使用流这个抽象的概念,它代表任何有能力产生数据的数据源对象或吋有能力接收数据的接收端对象。
“流”概念源于UNIX屮的管道(pipe)的概念。
在UNIX屮,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等,它屏蔽了实际的I/O设备屮处理数据的细节。
一个流,必有源端和Fl的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet ±的某个URL。
流的方向是重要的,根据流的方向,流可以分为两类:输入流和输出流。
其实输入/输出是想对于内存来说的。
实际上,流的源端和Fl的端可简单地看成是字节的生产者和消费者,对于输入流,可不必关心它的源端是什么,只要简单地从流屮读数据, 而对输出流,也可不知道它的H的端,只是简单地往流屮写数据。
1: a・流:一组有序的数据序列。
2: b・字节流:数据流中最小的数据单元是字节。
3: c.字符流:数据流小最小的数据单元是字符。
一、java, io包中的类对应两类流一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流,其他的流则称为过滤流(包装流)过滤流:一些流可以从文件以及其他地方接收字节,另一些流可以将字节组合成更有用的数据类型。
将一个已经存在的流传递给另一个流的构造方法,将这两种流结合起来,结合后的流被称为过滤流。
过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流也类似。
我们很少用单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能(即装饰器设计模式)。
java的常用输入、输出流其实都是继承自4个抽象类,分别是♦基于单字节的Inputstream, OutputStream类(而向字节形式的I/O)♦基于双字节的Unicode代码单元的Reader, Writer类(面向字符形式的I /0)一旦打开输入流后,程序就可从输入流串行地读数据。
第一讲 Java语言入门1.1 Java的特点1.1.1面向对象:•与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个"混血儿"。
而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。
1.1.2可移植(平台无关性):•生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。
任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。
这正是Java实现可移植的机制。
•原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。
比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。
在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。
当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。
Java的字符串,则采用标准的Unicode格式保存。
可以说,没有这个特性,Java的可移植性也不可能实现。
1.1.3简单•JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;•取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。
C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等•JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
Java语言程序设计基础课件ppt第一章Java概述Java的特点Java是简单的Java是面向对象的Java是健壮的Java 是安全的Java是解释型的Java是可移植的Java是多线程的“一次编译,到处运行”的原理Java程序的运行环境编译型源程序字节码程序Java源程序可执行程序EXE裸机操作系统解释器编译连接编译执行解释执行.java.classJava虚拟机Java是解释执行的高级编程语言JAVA平台简介Java平台包括两部分:Java应用编程接口(JavaAPI)Java虚拟机(JavaVirtualMachine)JVM(JavaVirtualMachine)在一台计算机上由软件或硬件模拟的计算机。
Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件。
Java编译器针对Java虚拟机产生class文件,因此是独立于平台的。
Java解释器负责将Java虚拟机的代码在特定的平台上运行。
Java的开发工具-JDK什么是JDK?JDK:Java开发工具包(JavaDevelopmentToolkit),JDK是一个简单的命令行工具集,包括软件库、编译Java源代码的编译器、执行Java字节码的解释器、测试JavaApplet 的浏览器,以及其他的实用工具。
JDK(JavaDevelopmentKit)JRE(JavaRuntimeEnvironment)JavaVM(JVM)Ja vaRuntimeClassesJDK的安装与配置下载JDK,最新版本和文档的站点:官方:http://www.javaso校内:http://192.168.102.16//计算机系课件//Java语言程序设计基础//Java环境JDK的安装与配置配置环境变量我的电脑——属性——高级——环境变量——系统环境变量变量名:path----用于指定操作系统的可执行指令的路径变量值:JDK安装目录\bin用分号与原有的变量值区分开。
java基础知识点整理1.&和&&的区别?&:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true。
&&:短路与,如果第⼀个表达式为false时,第⼆个表达式就不会计算了。
2.在java中如何跳出当前的多重循环?在循环语句外前⾯定义⼀个标号,然后在⾥层循环体的代码中使⽤带有标号的break语句,即可跳出循环。
⽐如:3.最有效率的⽅法算出2X8等于⼏?使⽤位运算,效率最⾼:2<<3,表⽰2向左移动了3位,就相当于2乘以2的3次⽅,结果:16。
4.”==”和equals⽅法究竟有什么区别?==:表⽰两个变量的值是否相等,⽐较两个基本数据类型的数据或者引⽤变量,⽤==。
equals:⽤于⽐较两个独⽴对象的内容是否相同。
字符串的⽐较也⽤equals。
5. Int和integer的区别?Int是Java的8中基本数据类型之⼀,integer是int的封装类。
Int类型的默认值为0,integer默认值为null,所以区别在于,integer能区分出null值和0的区别。
6.三个与取整有关的⽅法:Math.ceil():表⽰向上取整;Math.ceil(11.3)=12;Math.ceil(-11.3)=-12。
Math.floor():表⽰向下取整;Math.floor(11.6)=11;Math.floor(-11.6)=-12。
Math.round():表⽰四舍五⼊;Math.round(11.5)=12;Math.round(-11.5)=-11;Math.round(11.3)=11;Math.round(-11.3)=-11;7.重载和重写的区别?重载(Overload):函数名相同,参数不同。
可以改变返回值类型,参数的个数和类型。
重写(Override):和⽗类的的⽅法名称、参数完全相同。
8.⾯向对象的特征?封装:将对象属性和⽅法的代码封装到⼀个模块中,也就是⼀个类中,保证软件内部具有优良的模块性的基础,实现“⾼内聚,低耦合”。
JSE第一部分分享者:张振羽2017.6.301.什么是 JDK API(1) Application Programming Interface ,应用程序编程接口(2) 是一些预先定义的函数,开发人员可提供直接调用的功能。
2.JDK包结构便于维护,按照功能划分,不同功能的累划分在不同功能的包中,常用的包如下表:3.字符串的基本操作3.1 String 及其API3.1.1 String(1) String是不可变对象(2) ng.String使用了final修饰,不能被继承。
(3)字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中(4) 任何一个字符对应2个字节的长度,1个字节 = 8位二进制。
3.1.2 String s=new String (“abc”)(1) 众所周知,答案是:创建两个对象(2) why?举例子:分析步骤:a) 栈中开辟一块空间存放引用str1(地址信息);b) String池中有一块空间,存放String常量"abc";c) 引用str1指向池中String常量"abc";d) str1所指代的地址即常量"abc"所在地址,输出为true;结论:创建了一个引用对象str1分析步骤:1) 栈中开辟一块空间存放引用str3;2) 堆中开辟一块空间存放一个新建的String对象"abc";3) 引用str3指向堆中的新建的String对象"abc";4) str3所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出false;3.2 StringBuilder常见API3.2.1 StringBuiler特点(a)JDK1.5出现StringBuiler(b)StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用(c)线程不安全3.2.2String 、StringBuiler、StrngBuffer三者区别(a) String长度不可变,StringBuiler和StringBuiler长度可变(b) 每一次对String操作改变,都会创建新的对象,而后两个不生成新的对象(c) StringBuiler和StringBuiler创建必须通过关键字new来创建,String可以不用new,可以直接赋值(d) StringBuffer线程安全,多线程操作时,使用StringBuffer 安全。
StringBuilder线程不安全,单线程操作时,使用StringBuilder 效率高。
注意:基本数据类型对象包装类都有 XXX parseXXX 方法,只有一个类型没有parse方法:Character 。
4.正则4.1正则(1) 正则本身也是字符串(2) 用于匹配字符串中字符次序的"规则字符串"(3) 很多编程语言,包括Java都支持了正则表达式4.2字符集4.3常用 API4.4经典的正则案例5.1 toString(a)该方法java希望我们重写时返回一个字符串,这个字符串的原则为:用一个字符串来描述当前对象.(c)因为Object实现的toString()方法不具备什么实际开发意义,所以若我们需要在子类中使用该方法时通常我们会重写它举例子:(3)重写toString(a)没有重写结果 (a)重写后结果5.2 equalsObject 提供了比较两个对象是否相等方法equals:1. 默认的equals不能比较对象中数据是否相等建议子类重写这个方法!2.重写时候, 按照关键数据比较两个对象是否相等举例:不重写equals方法:3.重写equals方法应遵循几个规则:(a) 任何对象与null比较都应返回false(b) 两个对象不属于同一个类时应返回false(c) 同一个对象equals比较应当恒等为true5.3 equals与 == 的区别(1) "=="是变量值比较,(2) 对于引用类型变量而言,该变量保存的是对象的地址(3 两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同一个对象(2) equals是内容比较(4)对于两个引用变量而言,是比较两个变量所引用的对象内容是否相同举例:没有toString的情况下输出p和p16.日期及常用API6.1Date及常用API6.2 SimpleDateFormat6.3 Calenda(1) Calendar本身是抽象类,规定了操作时间的方法定义.(2) 常用实现类GregorianCalendar,即:阳历立法(3) Calendar提供了一个静态方法getInstance来根据(4) 获取和设置时间分量注意:老外的周日是中国的周一7 .集合7.1什么是集合(1) java提供了一种可以存数一组数据的数据结构.(2)集合,用来存储一组元素,提供了相关操作元素的方法.(3) Collection(接口)有两个常见的子接口:List:可重复集,且有序.常用的有:ArrayList和LinkedList实现类Set:不可重复集,大部分实现类是无序的.7.2 集合和数组的区别(1) 数组是固定长度的;集合可变长度的。
(2) 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。
(3) 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。
7.3 ArrayList和LinkedList的区别1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因LinkedLis要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因ArrayList 要移动数据。
问题:为什么ArrayList随机访问快,而LinkedList增删快?7.4什么是数据结构(1)Java中常用的结构:数组、链表、栈、队列(2)是指相互之间存在一种或多种特定关系的数据元素的集合(3)特定语法组成的程序+针对不同的事物制定的不同算法。
7.5 ArrayList数据结构(数组)举例子:它在内部的数据结构即为数组,类似下面:int [] arrays = {2,4,6,8},假设,使数组变成{2,4,5,6,8}。
ArrayList内部实现:(1) 动态扩大数组。
(2) 将原来数组索引为“2”及其后面所有的元素向后移动。
(3) 新元素5到索引为2的位置。
7.6 LinkedList链表结构7.6.1 链表:(a) 是在非连续的内存单元中保存数据,并且通过指针将各个内存单元链接在一起。
(b) 链表不需要提前分配固定大小存储空间,当需要存储数据的时候分配一块内存并将这块内存插入链表中。
7.6.2 链表分类(a)单向链表(b)双向链表(c)循环链表LinkedList内部其实做了下面这些事情:(a) 对半查找出原来索引为2的节点将其前驱改为新增节点5;(b) 将新增节点5的前驱改为4,后继改为6;节点4的后继改为5。
栈结构:(1)栈用来存储一组元素,但是存取元素必须遵循先进后出原则(2)栈结构常被用来实现"后退"功能(3)Deque是双端队列,但是若只从一段进出队就实现了栈结构.Deque队列只允许在队尾添加数据,在队头删除数据。
但是可以查看队头和队尾的数据。
还有一种是双端队列,在两端都可以插入和删除:7.9集合常用的API三种方式:(1) 迭代器如果要增加删除元素,需要用迭代器的API,若用集合的API,会抛出异常Exception in thread "main"java.util.ConcurrentModificationException举例子:(1) 集合的get方法(3) 增强for循环7.11集合转为数组7.11集合转为数组注意:原因:1. 集合与数组共享存储空间2. 不是完整功能的List, 不能改变长度7.12集合排序案例1:Collections.sort(list) 自然排序案例2:自定义排序如何比较两个对象的大小?7.13 Map7.13.1面试谈谈你对map的认识(1) Map是个接口,没有继承于Collection接口。
(2) Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够根据key快速查找对应的value。
(3) Map中的键值对以Entry类型的对象实例形式存在;(4) key值不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。
(5) Map支持泛型,形式如:Map<K,V>(6) 连个实现类HashTable, HashMap7.13.2 谈谈HashTable和 HashMap7.13.3常用的API7.13.3遍历Map有三种方式:1:遍历所有的key2:遍历所有键值对3:遍历所有的value(相对前两种不太常用)。