黑马程序员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;}}内存分析:单列设计的另外一种方式:单列延迟加载方式:只有对象被调用的时候才会被加载,才被初始化,称之为懒汉式。
Day07总结:1、构造函数:特点:1、函数名和类名相同2、不用定义返回值类型3、不可以写return语句作用:创建一个对象都会执行这个构造函数,所以构造函数的作用给对象进行初始化。
每一个对象的创建,都必须要通过对应的构造函数进行初始化,对象不初始化是不能用的。
注意:1、之前写对象的时候也没有写构造函数?因为该类当中的在没有定义类的情况下有一个默认的空参数的构造函数,方便与该类的对象进行初始化。
2、如果在类中定义了具体的构造函数,那么默认的空参数构造函数就没有了。
2、构造函数和一般函数的区别:1、格式:两种函数的格式不同:构造函数:修饰符类名(参数列表){}一般函数:修饰符返回值类型自定义函数名(参数列表){}2、运行方式构造函数:构造函数是在对象已经建立就执行对应的构造函数,给对象进行初始化。
一般函数:对象创建后,再调用一般函数。
3、作用不同构造函数:是对对应对象进行初始化的,叫做对象已建立时要做什么事情?一般函数:给对象提供更多的功能,方便与对象的调用。
4、调用次数构造函数:对象创建时,就调用一次,因为初始化动作最先执行,只执行一次一般函数:对象创建后,可以被多次调用。
3、什么时候定义构造函数呢?分析具体事务时,该事务已经存在,就应该具备一些属性值,或者行为,那么将这些内容都定义在构造函数中。
一个类中构造函数可以有多个,而且是以重载的形式存在。
实现代码:Class CarDemo{Car c=new Car();C.show();Car c1= new Car();C.show();}Class Car{Private int num;//为什么要定义为私有?因为汽车禅城都要有4个轮胎,所以把这些属性定义到构造函数中,在对象进行初始化的时候就已经有了4个轮胎Car(){Num=4;}//当有五个的轮胎的车生产时。
Car(int a){Num=a;}Public void setNum()//为什么要写一般函数?当num进行了私有化时就相当于把它进行了封装,这只是提供了一种访问它的方式。
【黑马程序员】Java基础:Java语句笔记第一篇:【黑马程序员】Java基础: Java语句笔记【黑马程序员】Java基础: Java语句笔记摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。
今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!关键语句介绍一、while 语句一般形式:whi l e ( 条件表达式 ) { 语句体……… } 执行过程:条件表达式为真,执行语句体。
否则,退出!二、do while 语句一般形式: do { 语句体……. } while ( 条件表达式 ); 执行过程:先执行一次语句体,判断条件表达式是否为真,为真再执行do语句中的语句体。
为假,退出。
需要注意:与whi l e语句区别黑马程序员合肥中心编著1. while ( 条件表达式 ) 后面有分号 ;2. 不管条件表达式是否为真,语句体均会执行一次。
三、for 语句一般形式:for( 子句 1; 子句 2; 子句 3) { 语句体…… } 执行过程:四、break 、 cont inue 语句 break 退出所在循环 : int stopHere = 5; for(int i=1; i<8; i++) { if(i == stopHere) { break; } System.out.println("i = " + i);黑马程序员合肥中心编著} //打印结果:5,6,7,8均没有打印出来。
需要注意的一个问题: int stopHere = 5; for(int i = 1; i < 8; i + + ) { if (i = = stopHere) { / /语句体 } break; System. out . println("i = " + i ); } 这个时候编译器会报错:无效的 System.out 输出语句。
Day13总结1、单列设计模式:1、恶汉式:代码表现:Class Single{Privtae static final Single s=new Single();Private Single(){}Public static Single getInstance(){Return s;}}2、懒汉式:延迟加载,存在着多线程并发访问的安全问题,需要利用同步来解决安全问题,可是同步会降低效率,所以利用双重if()判断形式解决效率低的问题。
实现代码:Class Single{Private Single(){}Private static Single s=null;Public static Single getInstance(){If(s==null){Synchroinzed{If(s==null)S=new Single();}Return s;}}}2、死锁:即同步的短处,不是线程和进程没有了,而是不动了。
表现形式:同步嵌套的时候,利用的锁不一样,容易引发死锁。
实现代码:3、线程间通信:其实就是多个线程在操作同一个资源,可是操作的动作不同,动作不同,意味着线程的任务是不一样的。
就需要对任务对象进行单独的封装和描述。
4、等待唤醒机制:最重要的机制重点掌握Wait():等待:让当前线程出于冻结状态,当前线程就被存储到线程池当中。
Notify();唤醒线程池中的任意一个线程,让该线程恢复到运行状态,会具有CPU的执行资格。
notifyAll():唤醒线程池中的所有等待的线程,让它们具有CPU的执行资格。
所谓的监视器:就是多线程中的锁。
上面几个功能必需在同步当中,要标示清楚它所在的锁。
也就说:wait到底让哪个锁上的线程等待了,notify:究竟是唤醒了哪个锁上被等待的线程。
NotifyAll:用上面的一样。
为何是Object中的方式?因为这些方式都是必需要标识出所属的锁,而锁是任意的对象。
能被任意对象挪用的方式必然概念在Object类中。
⿊马程序员_基础学习笔记总结1.java api System.getProperties()⽅法该⽅法返回⼀个Properties对象,这个对象⾥存储的是java虚拟机启动时系统的基本资料,如操作系统类型(windows、linux..),系统使⽤语⾔,系统默认字符集等。
当java开发跨平台代码时常常需要根据运⾏程序的操作系统类型做⼀些特定操作,就可以通过System.getProperties()返回的对象检查系统类型。
2.java api Runtime 对象。
使⽤单例设计模式设计,⽆构造函数不能通过new创建,可通过getRuntime()⽅法得到Runtime对象。
这个对象⽐较重要的⽅法是exec(String command),通过它可以执⾏命令,效果与在windows 命令窗⼝下执⾏相同。
3.java api ⽇期操作。
datedate类须结合 format⼦类sampleCalendarFormat获得指定格式的⽇期。
calendar操作⽇期主要使⽤calendar类,主要⽅法为get和set,⽇⽉和天数为数值,且⽉从0开始算。
使⽤很灵活,如要获取任意年的⼆⽉有多少天可通过代码set(year,2,1);add(Calendar.DAY_OF_MONTH,-1)把⽇期调到⼆⽉的最后⼀天然后获取。
4.java api match包重要的⼏个类,ceil floor round pow random(util包下也有个random⽽且功能更丰富)5.java api io流概述字符流: Writer Reader字节流: OutputStream InputStream知识点: 如果类声明⾥有抛异常,那在使⽤的时候要么在所在⽅法抛,要么⽤try{}catch(){};规律1:使⽤时个具体功能有相应⼦类完成,⼦类名称有规律,都⼜⽗类名称结尾,开头是功能。
如:FileWriter ,FileReader为⽂件读写⼦类。
黑马程序员JavaEE基础班知识点整理天地玄黄,宇宙洪荒。
如果你也和我一样看过不少网络小说,那你的想象力肯定很丰富,这点作为程序员是很重要的。
如果你和我一样喜欢《黑客帝国》《银河系漫游指南》《钢铁侠》《三体》《西部世界》。
那有可能科幻就是你坚持钻研技术的动力来源。
虽然我们暂时不能像黑客帝国里一样进入虚拟世界,不能像邓肯一样到宇宙尽头餐馆吃饭,没有贾维斯的智能管家系统,也不能把机器人做的无法分辨真伪,但是如果没有人们对未来的想象我们的技术就没有了追求。
这些追求促使我们不断的学习,让技术不断的前进,我相信这些电影电视小说里的情节一定会实现。
抱有这样的期待和好奇很多同学来到黑马学习技术,首先接触的就是黑马的基础班。
视频课程,讲义是必须的,但是我们还要有知识的梳理。
今天我们就整理了基础班的一下问答和笔试题供大家交流学习。
希望大家梳理一下自己的基础知识,基础知识是我们技术飞船的主架,主架坚固才能让我们在宇宙里航行的更远~理论知识点一、基础概念1、面向对象的理解并举例2、面向对象的三大特性,并分别阐述对每个特性的理解3、阐述成员变量和局部变量的区别4、构造方法的概念和作用,和一般方法的区别5、静态代码块、构造代码块、构造方法的特点及执行顺序6、描述类和对象的关系7、创建对象的步骤等二、IO流理论知识点:1、io流的基本流都有哪些,简单说说基本流的体系2、字节流和字符流的使用场景3、拷贝文本文件一般会用到哪个流?为什么?4、在io流中拷贝文件一般会用哪几个流?5、在io流的拷贝过程中,通过while 循环读取字节进行拷贝,需要通过哪个流的什么方法读取字节6、File类的常用方法都有哪些?7、遍历指定目录下的文件的所有名称,一般用什么方法?8、在io流中一般常用的字符编码集都有哪些?简单阐述几种9、在字符流中,带缓冲区的包装流都有哪一些?具体阐述一下。
10、为什么read()方法返回值是int类型?11、标准输入流和输出流是什么?三、集合理论知识点1、集合的由来2、数组和集合的使用场景3、数组和集合的区别4、集合的遍历5、在迭代集合中元素时,可不可以通过集合对象的方法操作集合中的元素?6、 List的三个子类的特点7、栈和队列数据结构8、 List有三个儿子,在不同的场景分别应该使用谁呢?9、 HashSet保证元素唯一的原理10、 TreeSet两种排序方式11、 list集合和set集合有什么区别?12、双列集合获取键和值的两种方式13、 HashMap和Hashtable的区别14、 Collection和Collections的区别?四、反射理论知识点1、反射概述2、获取类的字节码文件三种方式五、线程理论知识点1、线程的生命周期。
黑马程序员java笔记黑马程序员是一家知名的IT培训机构,其提供的Java笔记是一个非常实用的学习资源,主要包括以下内容:1.Java基础语法:包括变量、数据类型、运算符、控制流、异常处理等知识点,通过笔记的方式详细讲解了Java编程的基础知识。
2.Java面向对象编程:介绍了面向对象的概念、类和对象、继承和多态等核心知识点,帮助读者深入理解Java面向对象编程的特性。
3.Java常用类库:包括了Java标准库中常用的类和接口,如String、ArrayList、HashMap等,并提供了相应的示例代码和注释说明。
4.Java网络编程:介绍了Java网络编程的基础知识,包括TCP/IP协议、Socket编程、HTTP协议等,让读者能够了解如何使用Java进行网络通信。
5.Java多线程编程:介绍了Java多线程编程的相关知识,包括线程的概念、线程的创建、线程的同步和通信等,让读者能够掌握多线程编程的技巧。
6.Java与数据库交互:介绍了如何使用Java与数据库进行交互,包括JDBC API的使用、SQL语句的编写等,让读者能够掌握Java数据库编程的基本方法。
7.Java Web开发:介绍了Java Web开发的基础知识,包括Servlet、JSP、JSTL等技术的使用,以及如何使用Java进行Web应用程序的开发。
8.Java进阶知识:包括Java泛型、Java注解、Java反射等进阶知识点,让读者能够更加深入地了解Java的高级特性和应用。
黑马程序员提供的Java笔记内容全面且详细,适合初学者和有一定基础的开发者使用。
通过学习这些笔记,可以帮助读者更好地掌握Java编程语言的核心知识点和技能,提高自己的编程能力。
实用标准文案 精彩文档 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[]) {