黑马程序员java培训就业班笔记集合体系地的总结
- 格式:doc
- 大小:197.50 KB
- 文档页数:6
J a v a基础知识总结(超级经典)写代码:1,明确需求。
我要做什么?2,分析思路。
我要怎么做?1,2,3。
3,确定步骤。
每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。
用具体的java语言代码把思路体现出来。
学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。
demo4,该技术什么时候用?test。
----------------------------------------------------------------------------------------------- 一:java概述:1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java;Java的三种技术架构:JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdkpath=%JAVA_HOME%\bin2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
黑马程序员_javaweb讲义和笔记资料一、简介黑马程序员是一家专业的IT培训机构,提供全面的编程技术培训服务。
javaweb是其中的一门重要课程,本文为黑马程序员_javaweb讲义和笔记的资料整理。
二、javaweb基础知识1. Java语言概述Java语言的特点和优势,Java开发环境的搭建等。
2. Servlet技术Servlet的基本概念、生命周期、Servlet容器等。
3. JSP技术JSP的基本语法、JSP指令、JSP内置对象等。
4. MVC设计模式MVC设计模式在javaweb开发中的应用和实践。
三、javaweb开发流程1. 需求分析分析项目需求,明确开发目标和功能要求。
2. 数据库设计设计数据库表结构,确定数据存储方式和关系。
3. 技术选型根据项目需求和开发要求,选择合适的技术框架和工具。
4. 编码实现使用Java语言和相关技术进行编码实现。
5. 测试调试运行和调试项目,确保功能的正确性和稳定性。
6. 部署上线将项目部署到服务器上线,提供给用户访问和使用。
四、javaweb开发常用框架和工具1. Spring框架Spring框架的介绍和核心特性,以及在javaweb开发中的应用。
2. SpringMVC框架SpringMVC框架的详细讲解,包括请求映射、数据绑定、视图解析等。
3. MyBatis框架MyBatis框架的使用方法和技巧,以及与数据库的集成。
4. Maven工具Maven的基本使用和配置,常用插件介绍。
五、javaweb开发中的常见问题和解决方案1. 数据库连接异常分析数据库连接异常的原因和解决方法。
2. 页面跳转问题页面跳转的实现方式和常见错误排查。
3. 表单数据验证表单数据验证的常用技术和插件,提高数据输入的准确性和安全性。
4. 性能优化优化javaweb应用的性能,减少响应时间和资源占用。
六、实例项目提供一个实例项目,通过对该项目的讲解和分析,帮助学员理解和掌握javaweb开发的方法和技巧。
一、黑马程序员—java概述与基础知识 61、何为编程? 62、Java语言概述,历史、特点63、什么是跨平台性?原理是什么?JVM 64、Jre和Jdk的区别? 75、java虚拟机JVM 76、Java程序运行机制77、学习java注意的地方78、Java语法格式89、代码注释:单行//,多行/* */,文档注释/** */ 810、Java中的标识符811、java中的常量和变量812、Java成员变量和局部变量914、基本数据类型转换之向上转型和向下转换1115、Java的运算符1116、表达式和三目运算符1217、程序流程控制1218、三大循环结构: 1419、嵌套循环与流程控制17二、黑马程序员—方法与数组181、什么是方法(Method)?182、Java中方法的格式:193、方法里的属性194、方法特点195、什么是方法的重载(Overload)?206、可变参数217、数组简介:228、一维数组的声明与初始化:229、数组的使用:2310、分配内存空间2411、二维数组:2512、操作数组的工具类-Arrays 2613、Java5新特性对数组的支持:27三、黑马程序员—面向对象(1)271、什么叫面向对象?272、类283、构造方法284、static关键字305、匿名对象316、this关键字317、面向对象之封装318、访问修饰符329、类的设计分析3210、面向对象之继承3311、子类访问父类和方法覆写3412、super关键字和调用父类构造方法3413、面向对象之多态3514、引用变量类型转换37四、黑马程序员—面向对象(2)381、基本数据类型的包装类382、基本数据类型和包装类相互转换383、基本类型和String之间的转换394、Object类395、代码块406、构造方法的私有化427、Singleton模式(单例模式) 饿汉式和懒汉式428、final 关键字449、抽象类4510、抽象类的体现-模板模式4711、接口(interface) 4812、接口的使用5013、面向接口编程之制定标准和简单工厂模式5014、面向接口编程之适配器模式5215、接口和抽象类的比较5316、匿名内部类5417、枚举类54五、黑马程序员—异常处理和常用类571、异常572、异常处理格式573、多异常处理584、异常的分类595、声明异常(throws)606、throw 608、throw和catch同时使用 619、常用类6210、String方法6411、StringBuffer 与StringBuilder 6612、Math和Random和UUID 6913、Date和Calendar 7014、System 74六、黑马程序员—线程技术741、进程和线程752、创建线程方式753、两种进程创建方式比较774、线程的生命周期785、控制线程796、多线程安全问题817、多线程安全问题的解决方法828、线程通信86七、黑马程序员—集合框架(1)891、集合类&容器892、Collection接口 903、Iterator接口914、集合遍历输出方式916、TreeSet 957、List接口998、List接口中常用类1019、Map接口104八、黑马程序员—集合框架(2)1071、Collections类1072、Arrays 1093、泛型(Generic) 1094、泛型的使用1105、声明多个泛型类型和通配符1146、泛型的上限与下限1157、泛型接口和方法1178、泛型的嵌套(map例子)118九、黑马程序员—IO操作(1) 1191、IO的概述和File方法1192、递归(Recursion) 1203、文件过滤器java.io.FilenameFilter 1224、流1235、操作流的步骤(重点)1246、字节流和字符流1257、文件拷贝1278、字节→字符转换流1299、自动关闭资源的try语句130十、IO文件操作(2) 1311、内存操作流1312、打印流1333、格式化输出1344、标准流1355、Scanner(简单文本扫描器) 1376、缓冲流1397、合并流(SequenceInputStream)140 十一、黑马程序员—网络编程1411、什么是网络编程?1412、网络通讯要素1423、TCP和UDP的联系和用途1424、InetAddress与Socket 1435、UDP传输1446、TCP传输1488、小例子154十二、黑马程序员—反射机制1561、反射的概念1562、获得Class对象1583、九个预定义Class对象1594、利用Class获取类的属性信息1605、Class中得到构造方法Constructor、方法Method、字段Field 1616、利用反射创建对象1667、使用反射调用方法1698、使用反射调用可变参数方法1709、使用反射操作字段17110、反射和泛型-反射来获取泛型信息173十三、黑马程序员—反射机制1751、GUI(图形用户界面) 1752、布局管理器1763、事件监听机制组成1774、Dialog 1845、菜单1871、Eclipse的使用技巧1912、静态导入(1.5特性,好处是不用写类名)1923、可变参数1935、基本数据类型的自动拆箱与装箱1946、枚举1947、反射实现框架功能1961、内省 了解JavaBean 1982、内省综合案例和Beanutils工具包 1983、注解(Annotation)2014、泛型2041、类加载器2082、类加载器的委托机制2083、一个类加载器的高级问题分析2124、代理的概念与作用2125、动态代理技术2146、分析JVM动态生成的类 2148、实现类似spring的可配置的AOP框架 220黑马程序员——面试题之交通灯管理系统 2241、面向对象的分析与设计2252、Road类的编写 2263、Lamp类的编写2274、LampController类的编写2305、MainClass类的编写 230黑马程序员——面试题之银行业务系统2321、需求2322、需求分析2333、NumberManager类 2334、NumberMachine类2345、CustomerType枚举类2356、ServiceWindow类2357、MainClass类与Constants类238一、黑马程序员—java概述与基础知识1、何为编程?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
Day11知识总结:1、异常处理细节:1、定义功能时,功能中有什么问题,都应该进行预先的处理比如try catch.如果处理不了,应该通过throws声明抛出,让调用者进行处理。
2、调用了抛出异常的功能的函数,应该进行处理,如果使用try catch处理的话,被调用的功能上抛出几个异常,就应该对应几个catch语句,必须要对多个异常进行针对性的处理。
3、如果出现多个catch中存在着父类异常的catch,那么这个catch一定放在catch的最后,通常这种情况在面试很多见。
4、如果函数内抛出异常,那么一定要在函数上声明,否则编译失败,但是要注意函数内抛出的异常是运行时异常(RuntimeException),那么函数上是可以不用throws声明的。
5、如果函数内抛出了异常,进行了本功能内部的处理,但是处理的并不完全,这时应该在异常处理中,继续将异常抛出,让在函数上声明让调用者知道问题的存在,但是有可能需要将异常进行转换,尽量抛出调用者识别的异常,处理起来更方便。
6、当子类覆盖父类中的异常声明的方法时,子类方法只能声明父类的异常或者该异常的子类。
如果父类抛出了多个异常,那么子类在覆盖时买智能抛出父类异常的子集。
7、如果父类和接口中的方法没有声明抛出过异常,那么子类的覆盖父类方法时,也不能抛出异常,如果子类中的方法发生了异常,那么子类只能try catch不能用throws声明,只能try,不能抛,如果非要在函数内抛出异常,那么只能抛出RuntimeException,因为这种异常不用在函数声明上。
2、finally:定义一定会被执行的代码。
通常用来关闭资源,异常处理的三种格式:1、try catch finally2、Try catch//可以多个catch3、Try finally记住:catch是用于处理异常的,如果没有catch就代表异常没有被处理过,如故哦该异常是检测时异常,必须被声明。
代码体现:3、异常总结:异常是什么?是对问题的描述,将问题进行对象的封装。
黑马毕向东J A V A基础总结笔记The pony was revised in January 2021J a v a基础知识总结(超级经典)写代码:1,明确需求。
我要做什么?2,分析思路。
我要怎么做?1,2,3。
3,确定步骤。
每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。
用具体的java语言代码把思路体现出来。
学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。
demo4,该技术什么时候用?test。
-----------------------------------------------------------------------------------------------一:java概述:1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java;Java的三种技术架构:JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
黑马程序员入学Java知识——精华总结J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结!一、黑马程序员—java概述与基础知识 (6)1、何为编程? (6)2、Java语言概述,历史、特点 (6)3、什么是跨平台性?原理是什么?JVM (6)4、Jre和Jdk的区别? (7)5、java虚拟机JVM (7)6、Java程序运行机制 (7)7、学习java注意的地方 (8)8、Java语法格式 (8)9、代码注释:单行//,多行/* */,文档注释/** */ (8)10、Java中的标识符 (8)11、java中的常量和变量 (9)12、Java成员变量和局部变量 (9)14、基本数据类型转换之向上转型和向下转换 (11)15、Java的运算符 (12)16、表达式和三目运算符 (12)17、程序流程控制 (13)18、三大循环结构: (15)19、嵌套循环与流程控制 (17)二、黑马程序员—方法与数组 (19)1、什么是方法(Method)? (19)2、Java中方法的格式: (19)3、方法里的属性 (20)4、方法特点 (20)5、什么是方法的重载(Overload)? (21)6、可变参数 (22)7、数组简介: (22)8、一维数组的声明与初始化: (23)9、数组的使用: (24)10、分配内存空间 (25)11、二维数组: (26)12、操作数组的工具类-Arrays (27)13、Java5新特性对数组的支持: (28)三、黑马程序员—面向对象(1) (28)1、什么叫面向对象? (28)2、类 (29)3、构造方法 (30)5、匿名对象 (32)6、this关键字 (32)7、面向对象之封装 (32)8、访问修饰符 (33)9、类的设计分析 (34)10、面向对象之继承 (34)11、子类访问父类和方法覆写 (35)12、super关键字和调用父类构造方法 (36)13、面向对象之多态 (37)14、引用变量类型转换 (38)四、黑马程序员—面向对象(2) (39)1、基本数据类型的包装类 (39)2、基本数据类型和包装类相互转换 (40)3、基本类型和String之间的转换 (41)4、Object类 (41)5、代码块 (42)6、构造方法的私有化 (43)7、Singleton模式(单例模式) 饿汉式和懒汉式 (44)8、final 关键字 (46)9、抽象类 (46)10、抽象类的体现-模板模式 (48)11、接口(interface) (50)12、接口的使用 (51)13、面向接口编程之制定标准和简单工厂模式 (52)14、面向接口编程之适配器模式 (54)15、接口和抽象类的比较 (55)16、匿名内部类 (56)17、枚举类 (56)五、黑马程序员—异常处理和常用类 (59)1、异常 (59)2、异常处理格式 (60)3、多异常处理 (60)4、异常的分类 (61)5、声明异常(throws) (62)6、throw (62)8、throw和catch同时使用 (64)9、常用类 (64)10、String方法 (66)11、StringBuffer 与StringBuilder (68)12、Math和Random和UUID (71)13、Date和Calendar (73)14、System (76)六、黑马程序员—线程技术 (77)2、创建线程方式 (78)3、两种进程创建方式比较 (80)4、线程的生命周期 (81)5、控制线程 (82)6、多线程安全问题 (84)7、多线程安全问题的解决方法 (85)8、线程通信 (89)七、黑马程序员—集合框架(1) (93)1、集合类& 容器 (93)2、Collection接口 (94)3、Iterator接口 (94)4、集合遍历输出方式 (95)6、TreeSet (99)7、List接口 (103)8、List接口中常用类 (104)9、Map接口 (108)八、黑马程序员—集合框架(2) (110)1、Collections类 (111)2、Arrays (112)3、泛型(Generic) (113)4、泛型的使用 (114)5、声明多个泛型类型和通配符 (118)6、泛型的上限与下限 (119)7、泛型接口和方法 (121)8、泛型的嵌套(map例子) (122)九、黑马程序员—IO操作(1) (123)1、IO的概述和File方法 (123)2、递归(Recursion) (125)3、文件过滤器java.io.FilenameFilter (126)4、流 (127)5、操作流的步骤(重点) (128)6、字节流和字符流 (129)7、文件拷贝 (131)8、字节→字符转换流 (134)9、自动关闭资源的try语句 (134)十、IO文件操作(2) (135)1、内存操作流 (135)2、打印流 (137)3、格式化输出 (139)4、标准流 (140)5、Scanner(简单文本扫描器) (141)6、缓冲流 (144)7、合并流(SequenceInputStream) (145)十一、黑马程序员—网络编程 (146)1、什么是网络编程? (146)2、网络通讯要素 (147)3、TCP和UDP的联系和用途 (147)4、InetAddress与Socket (148)5、UDP传输 (149)6、TCP传输 (153)8、小例子 (159)十二、黑马程序员—反射机制 (162)1、反射的概念 (162)2、获得Class对象 (163)3、九个预定义Class对象 (164)4、利用Class获取类的属性信息 (165)5、Class中得到构造方法Constructor、方法Method、字段Field (167)6、利用反射创建对象 (172)7、使用反射调用方法 (175)8、使用反射调用可变参数方法 (176)9、使用反射操作字段 (178)10、反射和泛型-反射来获取泛型信息 (179)十三、黑马程序员—反射机制 (181)1、GUI(图形用户界面) (181)2、布局管理器 (182)3、事件监听机制组成 (183)4、Dialog (190)5、菜单 (193)1、Eclipse的使用技巧 (197)2、静态导入(1.5特性,好处是不用写类名) (199)3、可变参数 (200)5、基本数据类型的自动拆箱与装箱 (201)6、枚举 (201)7、反射实现框架功能 (203)1、内省了解JavaBean (205)2、内省综合案例和Beanutils工具包 (205)3、注解(Annotation) (208)4、泛型 (211)1、类加载器 (215)2、类加载器的委托机制 (216)3、一个类加载器的高级问题分析 (220)4、代理的概念与作用 (220)5、动态代理技术 (222)6、分析JVM动态生成的类 (222)8、实现类似spring的可配置的AOP框架 (229)黑马程序员——面试题之交通灯管理系统 (233)1、面向对象的分析与设计 (234)2、Road类的编写 (234)3、Lamp类的编写 (236)4、LampController类的编写 (239)5、MainClass类的编写 (239)黑马程序员——面试题之银行业务系统 (241)1、需求 (241)2、需求分析 (242)3、NumberManager类 (242)4、NumberMachine类 (243)5、CustomerType枚举类 (244)6、ServiceWindow类 (244)7、MainClass类与Constants类 (248)一、黑马程序员—java概述与基础知识1、何为编程?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
Day23总结:1、打印流:就是输出流,可以直接操作输入流和文件printStream:字节流特点:1、构造函数接收File对象、字符路径、字符输出流、以为着打印的目的可以是很多。
2、该对象具有特有的方法,print println可以打印任何数据类型的数据。
3、特有的printf方法可以保持任意类型的数据表现形式的原样性,将数据输出到目的地,对于OutputStream父类中的write是将数据的最低字节写出去、API:为其他的输出流添加了功能,使他们能够方法便的打印各种数据值表示形式,它还提供了其他两项功能。
与其他输出流不同,printStream永远不会抛出IOException异常,而是异常情况仅设置可通过checkError方法测试的内部标识,另外,为了自动刷新,可以创建一个printStream,这以为着可在写入byte数组之后自动调用flush方法,可吊桶其中一个println方法,或者写入一个换行符或者字节(\r\n),printStream打印的所有字符都使用平台默认字符编码转换为字节,在需要写入字符而不是写入字节的情况下,应该使用printWriter 类。
注意:能写一个整数、还能打印一个整数为什么?Write(97);a0000-0000 0000-0000 0000-0000 0110-0001 97将最后一个八位写入到硬盘,也就是最后一个字节0110-0001记事本把这个二进制解析了,然后查表返回a;Print(97);你看到是什么?目的里面就是什么?97原理:先把97--->"97"--->"97".getBytes()(2个字节)printWriter字符流:使用频繁,因为需要将数据从服务端打印到客户端特点:1、当操作的数据是字符时,可以选择printWriter比printStream更方便。
2、它的构造函数可以接收File对象,字符串路径、字节输出流、字符流。
202X年黑马程序员JavaEE基础班知识点整理202X年黑马程序员JavaEE基础班知识点整理JavaEE(Java Enterprise Edition)是一种基于Java语言的企业级应用开发平台。
它提供了一套强大的API和开发工具,帮助开发人员轻松构建可扩展、安全、可靠的企业级应用程序。
JavaEE基础班是为初学者设计的课程,旨在帮助学员掌握JavaEE的基本知识和技能。
下面是202X年黑马程序员JavaEE 基础班的知识点整理。
一、Java语言基础1. Java语言特性2. Java语法和基本数据类型3. 控制语句(if-else、switch-case、for、while)4. 数组和字符串的处理5. 面向对象编程(类、对象、继承、多态)6. 异常处理二、JDBC(Java Database Connectivity)1. JDBC的概述和作用2. JDBC的四个步骤(加载驱动程序、建立连接、执行SQL语句、处理结果集)3. JDBC的常用类和接口(Connection、Statement、ResultSet)4. PreparedStatement的使用5. JDBC连接池和连接池的使用三、Servlet1. Servlet的概述和作用第1页/共4页2. Servlet的生命周期3. Servlet的开发和部署4. Servlet的请求和响应5. Servlet的重定向和转发6. Servlet的会话管理和Cookie的使用7. 过滤器和监听器的使用四、JSP(JavaServer Pages)1. JSP的概述和作用2. JSP的开发和部署3. JSP的脚本和表达式4. JSP的内置对象和标准动作5. JSP的访问数据库6. JSP的MVC模式五、Web开发框架(Spring MVC)1. Spring MVC的概述和作用2. Spring MVC的架构和配置3. 控制器和请求处理方法4. 模型和视图5. 数据绑定和表单验证6. 异常处理和国际化六、ORM框架(MyBatis)1. ORM的概述和作用2. MyBatis的概述和作用3. MyBatis的配置和映射文件4. MyBatis的CRUD操作5. MyBatis的动态SQL和参数处理6. MyBatis的事务管理七、Web服务(SOAP和RESTful)1. Web服务的概述和作用2. SOAP的原理和标准3. SOAP的开发和部署4. RESTful的原理和特点5. RESTful的开发和部署6. RESTful的安全性和性能优化八、分布式系统和集群1. 分布式系统的概述和特点2. 分布式系统的通信和协调3. 集群的概念和原理4. 集群的负载均衡和故障恢复5. 分布式缓存和分布式数据库6. 分布式事务和一致性九、面向服务的架构(SOA)1. SOA的概述和特点2. SOA的基本概念和架构3. Web服务的开发和部署4. SOA的安全和可靠性5. SOA的性能优化和容错机制6. SOA与微服务架构的关系以上是202X年黑马程序员JavaEE基础班的知识点整理,涵盖了Java语言基础、JDBC、Servlet、JSP、Web开发框架、ORM框架、Web服务、分布式系统和集群、面向服务的架构等方面的知识。
Day05上午:1、数组的静态初始化多种定义格式:Int[] arr=new int[]//标准格式,可以明确数组的数据类型,和数组名,但是不知道数组的长度Int arr[]=new int[]Int[] arr=new int[]{2,1,3,4,5,}//通过大括号可以标示出数组中的内容,此处最好别写长度,因为容易出错,因为即初始化实体,又初始化实体中的元素。
Int[] arr={2,1,3,4,5};//可以明确数组的数据类型,和数组名,也可以知道数组中的内容。
2、arr.length:方便获取数组中的元素个数的方式。
3、操作数组的最基础的思想以及核心思想:a)最基础的思想:就是遍历。
什么是遍历。
Eg:int[] arr = new int[3];int[] arr = {4,8,9,2,6,9};//明确了数组的类型和长度,并明确了数组中元素的内容。
// int[] arr1 = new int[]{4,8,9};//方便获取数组中的元素个数的方式,可以使用数组实体一个属性。
lengthSystem.out.println("len:"+arr.length);for(int x=0; x<arr.length; x++){if(x%2==1)System.out.println("arr["+x+"]="+arr[x]);//arr[0] = 4;}这就是遍历的思想,获取数组中的元素,通常会用到遍历。
b)核心思想:就是操作数组中元素的角标,角标即索引,因为存数据的最终目的就是取出数据使用,就是操作角标,操作动作:1、给数组角标上的元素赋值,2、获取角标上元素的值,存储都得用角标4、数组中常见的操作:a)获取最值:思路:1、首先我们要定义一个功能完成获取数组中最大值的动作;2、定义个函数来实现这一功能;明确结果,整数数组中的最大值,int,明确是否有未知内容参与运算,参数列表中有一个参数,数组类型int[],一定要注意这里是数组类型,不是int型;3、如何实现功能细节呢?1、对数组中的元素进行比较,将比较后比较大的值进行记录,并参与下一次比较,当数组中的元素都比较完成后,最大值就已经被记录下来了。
Day08总结上午:1、静态代码块:格式:Static{静态代码块中的执行语句。
}特点:随着类的加载而加载而且只执行一次,类一加载静态代码块就执行。
作用:用于给类进展初始化的,注意区别构造代码块:给对象都进展初始化。
代码实现:Eg:Class StaticCode{Static//开始执行静态代码块{}Public static void show(){Sop("show run");}}Class StaticCodeDemo{Static//静态代码块,对类进展初始化最开始执行。
{Sop("b");}Public static void main(String[] args){//new StaticCode();//调用staticCodel类StaticCode s=null;}Static//第二步执行。
{Sop("c");}}2、单列设计形式:a)什么是设计形式:解决某一类问题最行之有效的方法。
b)单列设计形式:解决一个类在内存中只存在一个对象。
i.为了防止其他程序过多的建立该类对象。
先控制制止其他程序建立该类对象ii.还为了让其他程序可以访问到该类对象只好在本类中自定义一个对象。
iii.为了方便其他程序对自定义对象的访问可以对外提供一些访问方法。
怎么代码表达:1、将构造函数私有化。
2、在类中创立一个本类对象。
3、提供一个方法可以获取到该类对象。
代码表达:Eg:Class Single 恶汉式:定义单列时,建议使用恶汉式。
{Private int num;Public void setNum(){}Public int getNum(){}Private static Single s=new Single();//这里要加static因为下面方法中访问到了s.静态只能访问static的。
//为什么要私有?对成员数据可控?因为方法很有可能有参数,所以不用把S 暴露出去,加private;Public static Single getIntnstance(){Return s;}}Class SingleDemo{Public static void main(String[] args){Single s1=Single.getInstance();Single s2=Single.getInstance();S1.getNum(23);Sop(s2.getNum());//结果为23Single s2=new Single();Single s1=new Single();S1.getNum(30);Sop(s2.getNum());//0Student s1=Student.getStudent();Student s2=Student.getStudent();S1.setAge(40);S2.setAge(50);}}Class Student{Private int age;Private static Student s=new student();Private Student(){}Public static Student getStudent(){Return s;}Public void setAge(int age){This.age=age;}Public int getAge(){return age;}}内存分析:单列设计的另外一种方式:单列延迟加载方式:只有对象被调用的时候才会被加载,才被初始化,称之为懒汉式。
实用标准文案 精彩文档 1、Collection: 集合框架的由来:因为每个容器对象的自身的数据结构不同,所以对它们进行单独的描述和对象封装,并不断的向上抽取共性内容,这样变形成了集合框架。 定义:集合就是一个容器、用来存储对象、长度可变。 理解:其实班级就是一个容器,班上的每一个学生都是单独封装了功能的对象,因为班级中的人数由于有人请假每天都再变化,所以长度是可变的, 常见方法: 1、增加: add();增加一个元素 addAll();增加一部分元素。 2、删除: Remove();删除一个元素,会返回boolean类型,其实用到是equals方法,所以判断是否有符合要求的元素。如果删除成功会改变集合的长度。下面同理。 removeAll();删除全部 Clrea();清空容器 总结:在这里要尤其注意,面试题中经常考到。 3、判断: Contains();是否包含,也就说要所有的都包含在其中才算包含,否则不算包含。 isEmpty();集合是否为空 Size();集合长度。 4、取: retainAll();取交集。 理解总结: 班级就是一个容器,班级中进来一位新生就是Add()添加一个元素,来了一堆同学就是addAll,班上出去一个学生就是remove删除一个,出去一部分就是removeAll删除一部分,班级是不是有人,isEmpty,班上是否包含张三contains,班上有多少人size。班上是否包实用标准文案 精彩文档 含隔壁班的同学retainAll.去交集。 集合使用细节: 1、直接存储基本数据类型值也是可以的,因为JDK1.5后有自动装箱,会将基本数据类型转成对象,JDK1.4绝对不行。Eg:coll.add(3) 2、集合对象中存储的其实是对象的元素的引用。 3、Add的参数是Object类型,可以接收所有的类型的对象,会出现向上转型,取出元素时类型还是Object不能使用具体对象的特有内容,想要使用特有内容向下转型。Eg:Object obj="obj";想要取出访问子类的特有方法,向下转型,String s=(String)it.next();sop(s.length());
|--List:有序列表(存取顺序是一致的)因为该子体系元素中有索引或角标,可
以存储重复的元素。 常用方法: //添加: List.add(1,"abc7");//[abc1,abc7,abc2,abc3]在角标1位置往后顺延。 //删除 Object obj=list.remove(2);//删除指定索引上的元素,根据角标删除会返回来被删对象 Sop(obj);//obj:abc2 [abc1,abc7,abc3] //获取:获取指定角标上的元素并返回,这也是和remove的区别。 Object obj=list.get(1); Sop(obj);//obj:abc1 [abc1,abc7,abc3] //获取元素的索引,如果元素存在返回索引,不存在返回-1,依次还可以判断元素是否存在。 Int index=list.indexOf("abc1"); Sop(index);//index=1 //获取指定的子列表sublist(fromIndex,toindex)包含头不包含尾 List=list.sublist(1,2);//[abc1] //修改: Object obj=list.set(1,"haha"); Sop(obj);//[abc1,haha,abc3] 记住:只有list集合支持增删改查。
|--ArrayList:低层是数组数据结构,不同步,查询快,增删慢,
|--LinkedList:低层是链表数据结构,不同步,查询慢,增删较快。
|--Vector:低层是数组数据结构,同步,安全效率低,还有其特有方法
枚举。由于名称过长被iterator取代。 总结:掌握这些集合的方法,它们的方法和list集合的方法很相似,重点掌握各种集合的特点,尤其是前两个子类的低层数据结构。
|--Set 无序、不能存储重复的元素、方法个collection集合的方法一致。 实用标准文案 精彩文档 |--HashSet 低层是哈希表数据结构,无序,能保证元素的唯一性,是根据元素的两个方法来保证元素的唯一性的,hasCode和equals方法。只有当hasCode算出的哈希值相同的情况下才去判断equals方法是否为true.如果为真说明两个元素相同,不存储,所以往hashSet集合中存储自定义对象时要覆写hasCode方法和equals方法, 重点掌握上述保证唯一性的方法以及哈希表内存原理实现。
|--linkedHashSet 以元素的插入顺序来维护集合的连接表,允许以插入的顺序的集合中迭代的 怎么去理解? HashSet hs=new HashSet(); hs.add("B"); hs.add("A"); hs.add("D"); hs.add("E"); hs.add("C"); hs.add("F"); System.out.println("HashSet:"+hs); LinkedHashSet lhs=new LinkedHashSet(); lhs.add("B"); lhs.add("A"); lhs.add("D"); lhs.add("E"); lhs.add("C"); lhs.add("F"); System.out.println("LinkedHashSet:"+lhs); TreeSet ts=new TreeSet(); ts.add("B"); ts.add("A"); ts.add("D"); ts.add("E"); ts.add("C"); ts.add("F"); System.out.println("TreeSet:"+ts); 结果: HashSet:[D, E, F, A, B, C] LinkedHashSet:[B, A, D, E, C, F] TreeSet:[A, B, C, D, E, F] 从结果可以知道对于LinkedHashSet集合可以保证元素按照添加的顺序取出元素,而TreeSet集合可以对集合中的元素进行自然排序。
|--TreeSet 实用标准文案 精彩文档 用于给set集合中元素按照指定的顺序进行排序,低层是二叉树结构,线程是不同步的, 两种排序方式: 1、让元素自身具备比较功能,就是强制让元素去实现comparable接口,覆盖compareTo方法。这时元素具备的自然排序。可是如果元素自身不具备比较的功能,获取具备的比较功能不是所需要的。这时该排序方式就不能用了。 2、让集合自身具备比较功能,需要定义比较器,其实就是将实现了Comparator接口的子类对象作为参数传递给TreeSet集合的构造函数,让treeSet集合一创建就具备了比较功能。该子类必须要覆盖compare方法。 掌握二叉树数据结构的特点:不明白?
2、Map: 特点: 1、它是集合框架中的顶层 2、它存储的是键值对。 3、Map集合中必须保证键的唯一性。 4、如果存储键值对时,键重复,新值覆盖旧值。其实存储的就是一种映射关系。 常见方法: 增加: Put(); putAll(); 删除: Clrea(); Remove(key); 判断: containKey(); containValue(); 获取: get(Object key); Size(); Values(); entrySet();将map集合中的映射关系 map.Entry其实Entry也是一个接口,它是map接口中的一个内部接口。 Interface Map{ public static interface Entry{ public abstract Object getKey(); public abstract Object getValue();
} } keySet();将map中所有的键都存入了set集合,因为set具备迭代器,所以可以迭代方式取出所有的键,在根据get方法获取每一个键对应的值。 Map集合的取出原理:将map集合转成set集合,在通过迭代器取出. 实用标准文案 精彩文档 |--HashMap:低层是哈希表数据结构,该集合是不同步的,允许使用null键和null值。
JDK1.2效率高 |--LinkedHashMap:保证按照插入的顺序进行取出。
|--TreeMap:低层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。 3、Iterator 迭代器原理:其实就collection这个集合公共取出方式,因为每个容器的自身的数据结构不同,它们的取出方式也是不同的,要根据每个容器的特点来定义特定的取出方式,而取出方式直接在访问容器中的元素,所以将取出方式定义在容器的内部,是一个内部类,而对外提供访问接口。这样可以通过接口访问任何的collection容器中的元素,所以它的出现降低了耦合性,我们只用面对Iterator接口,和使用接口就可以了。 理解:抓布娃娃游戏机。
|--ListIterator 列表迭代器:要想在迭代过程中进行增删操作Iterator是不可以的,它只有删除动作,所以可以使用其子接口listIterator,是list集合特有的取出方式,它包包含了增删改查的方法。
4、Collections和Collection的区别:(面试题) 1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set
2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。 Java代码
1. import java.util.ArrayList; 2. import java.util.Collections; 3. import java.util.List; 4. 5. public class TestCollections { 6. 7. public static void main(String args[]) {