黑马程序员入学Java知识(精华总结)资料.doc

上传人:小飞机 文档编号:3953387 上传时间:2023-03-28 格式:DOC 页数:251 大小:1.73MB
返回 下载 相关 举报
黑马程序员入学Java知识(精华总结)资料.doc_第1页
第1页 / 共251页
黑马程序员入学Java知识(精华总结)资料.doc_第2页
第2页 / 共251页
黑马程序员入学Java知识(精华总结)资料.doc_第3页
第3页 / 共251页
黑马程序员入学Java知识(精华总结)资料.doc_第4页
第4页 / 共251页
黑马程序员入学Java知识(精华总结)资料.doc_第5页
第5页 / 共251页
点击查看更多>>
资源描述

《黑马程序员入学Java知识(精华总结)资料.doc》由会员分享,可在线阅读,更多相关《黑马程序员入学Java知识(精华总结)资料.doc(251页珍藏版)》请在三一办公上搜索。

1、黑马程序员入学Java知识精华总结J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结!一、黑马程序员java概述与基础知识61、何为编程?62、Java语言概述,历史、特点63、什么是跨平台性?原理是什么?JVM74、Jre和Jdk的区别?75、java虚拟机JVM86、 Java程序运行机制87、 学习java注意的地方88、Java语法格式89、代码注释:单行/,多行/* */,文档注释/* */910、Java中的标识符911、java中的常量和变量912、Java成员变量和局部变量1014、基本数据类型转换之向上转型和向下转换1215、Java的运算符1216

2、、表达式和三目运算符1317、程序流程控制1318、三大循环结构:1519、嵌套循环与流程控制18二、黑马程序员方法与数组191、什么是方法(Method)?192、 Java中方法的格式:203、方法里的属性204、方法特点205、什么是方法的重载(Overload)?216、 可变参数227、数组简介:238、一维数组的声明与初始化:239、数组的使用:2410、分配内存空间2611、二维数组:2712、操作数组的工具类-Arrays2713、Java5新特性对数组的支持:28三、黑马程序员面向对象(1)291、什么叫面向对象?292、类293、构造方法304、static关键字315、匿

3、名对象326、this关键字327、面向对象之封装338、访问修饰符349、类的设计分析3410、面向对象之继承3411、子类访问父类和方法覆写3512、super关键字和调用父类构造方法3613、面向对象之多态3714、引用变量类型转换39四、黑马程序员面向对象(2)391、基本数据类型的包装类402、基本数据类型和包装类相互转换403、基本类型和String之间的转换414、Object类415、代码块426、构造方法的私有化447、 Singleton模式(单例模式) 饿汉式和懒汉式448、final 关键字469、抽象类4710、抽象类的体现-模板模式4911、接口(interface

4、)5112、接口的使用5213、面向接口编程之制定标准和简单工厂模式5214、面向接口编程之适配器模式5415、 接口和抽象类的比较5516、匿名内部类5617、枚举类57五、黑马程序员异常处理和常用类591、异常592、异常处理格式603、多异常处理614、异常的分类615、声明异常(throws)626、throw638、throw和catch同时使用649、常用类6510、String方法6711、StringBuffer 与 StringBuilder6912、Math和Random和UUID7213、Date和Calendar7314、System77六、黑马程序员线程技术771、进

5、程和线程782、创建线程方式783、两种进程创建方式比较804、线程的生命周期815、控制线程826、多线程安全问题847、多线程安全问题的解决方法858、线程通信90七、黑马程序员集合框架(1)931、集合类 & 容器932、Collection接口943、Iterator接口954、集合遍历输出方式956、TreeSet997、List接口1038、List接口中常用类1049、Map接口108八、黑马程序员集合框架(2)1111、Collections类1112、Arrays1133、泛型(Generic)1134、泛型的使用1145、声明多个泛型类型和通配符1186、泛型的上限与下限1

6、197、泛型接口和方法1218、泛型的嵌套(map例子)122九、黑马程序员IO操作(1)1231、IO的概述和File方法1232、递归(Recursion)1253、文件过滤器 java.io.FilenameFilter1264、流1275、操作流的步骤(重点)1286、字节流和字符流1297、文件拷贝1318、字节字符转换流1349、自动关闭资源的try语句134十、IO文件操作(2)1361、内存操作流1362、打印流1373、格式化输出1394、标准流1405、Scanner(简单文本扫描器)1416、缓冲流1447、合并流(SequenceInputStream)145十一、黑马

7、程序员网络编程1461、什么是网络编程?1462、网络通讯要素1473、TCP和UDP的联系和用途1474、InetAddress与Socket1485、UDP传输1496、TCP传输1538、小例子159十二、黑马程序员反射机制1621、反射的概念1622、获得Class对象1633、九个预定义Class对象1644、利用Class获取类的属性信息1655、Class中得到构造方法Constructor、方法Method、字段Field1676、利用反射创建对象1727、使用反射调用方法1758、使用反射调用可变参数方法1769、使用反射操作字段17810、反射和泛型-反射来获取泛型信息17

8、9十三、黑马程序员反射机制1811、GUI(图形用户界面)1812、布局管理器1823、事件监听机制组成1834、Dialog1905、菜单1931、Eclipse的使用技巧1972、静态导入(1.5特性,好处是不用写类名)1993、可变参数2005、基本数据类型的自动拆箱与装箱2016、枚举2017、反射实现框架功能2031、内省了解JavaBean2052、内省综合案例和Beanutils工具包2053、注解(Annotation)2084、泛型2111、类加载器2152、类加载器的委托机制2163、一个类加载器的高级问题分析2204、 代理的概念与作用2205、动态代理技术2226、分析

9、JVM动态生成的类2228、 实现类似spring的可配置的AOP框架229黑马程序员面试题之交通灯管理系统2331、面向对象的分析与设计2342、Road类的编写2343、Lamp类的编写2364、LampController类的编写2395、MainClass类的编写239黑马程序员面试题之银行业务系统2411、需求2412、需求分析2423、NumberManager类2424、NumberMachine类2435、CustomerType枚举类2446、ServiceWindow类2447、MainClass类与Constants类248一、黑马程序员java概述与基础知识1、何为编程

10、?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。2、Java语言概述,历史、特点是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级语言。是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠

11、,与平台无关的编程语言。java5.0之后的三大技术框架J2EE(Java 2 Platform Enterprise Edition)企业版在jdk5.0版本后称为JAVAEE,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。是传智播客就业班和黑马训练营的主要学习内容之一.。J2SE(Java 2 Platform Standard Edition)标准版在jdk5.0版本后称为JAVASE,这是在java基础阶段主要学习的内容,也是java的基础,以后不管从事Android开发或者是物联网+云计算的开发,等是建

12、立在JSE基础上的,因此该技术是java的最核心技术,是传智播客基础班的主要上课内容.。J2ME(Java 2 Platform Micro Edition)小型版在jdk5.0版本以后称为JAVAME,该技术多应用于一些电子产品的嵌入式开发,以前在手机开发上应用的也比较多,但是随着智能手机的发展,现在手机应用程序(比如Android程序)的开发已经不再使用该技术。3、什么是跨平台性?原理是什么?JVM 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就

13、可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。我的总结:Java程序之所以能够实现跨平台运行,是因为它根本就不直接运行在任何底层平台上,而是需要在哪里运行,就在哪里(如Windows平台)事先准备好自己的Java平台,而这只是仅仅是安装和配置一个软件而已!4、Jre和Jdk的区别? JRE:(Java Runtime Environment),java运行环境。包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。JDK:(Java

14、 Development Kit Java)开发工具包。JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等 简单而言:使用JDK开发完成的java程序,交给JRE去运行。我的总结:必须熟练的记忆,核心类库,开发工具!5、java虚拟机JVMJava Virtual Machine ,简称JVM;它是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一,JVM读取并处理编译过的与平台无关的字节码(cla

15、ss)文件。Java编译器针对JVM产生class文件,因此是独立于平台的。Java解释器负责将JVM的代码在特定的平台上运行。Java虚拟机是不跨平台的.6、 Java程序运行机制编译: javac 文件名.文件后缀名运行: java 类名我的总结:Java程序的组成:Java源文件,字节码文件。7、 学习java注意的地方Java语言拼写上严格区分大小写;一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类;若源文件中包括了public类,源文件必须和该public类同名;一个源文件中包含N个Java类时,编译后会生成N份字节码文件,即每个类都会生成一份

16、单独的class文件,且字节码文件名和其对应的类名相同;我的总结:一个Java源文件只定义一个类,不同的类使用不同的源文件定义;将每个源文件中单独定义的类都定义成public的;保持Java源文件的主文件名与源文件中的类名一致;8、Java语法格式任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了。代码都定义在类中,类由class来定义,区分 public class 和 class;代码严格区分大小写,如main 和 Main 是不一样的;Java中的标识符与关键字;注释;main方法的作用:程序的入口保证程序的独立运行被JVM调用9、代码注释:单行/,多

17、行/* */,文档注释/* */1.单行注释 /:/后到本行结束的所有字符会被编译器忽略;2.多行注释 /* */:/* */之间的所有字符会被编译器忽略3.文档注释 /* */: 在/* */之间的所有字符会被编译器忽略,java特有的(用于生成文档);我的总结:多行和文档注释都不能嵌套使用。10、Java中的标识符可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。命名规则:(1) 由字母、数字、下划线、$组成,不能以数字开头注意:此处的字母还可以是中文,日文等;(2) 大小写敏感(3) 不得使用java中的关键字和保留字(4) 别用Java API里面的

18、类名作为自己的类名。11、java中的常量和变量变量的概念:占据着内存中的某一个存储区域;该区域有自己的名称(变量名)和类型(数据类型);该区域的数据可以在同一类型范围内不断变化;为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用;使用变量注意:变量的作用范围, 初始化值定义变量的格式:t数据类型 变量名 = 初始化值;注:格式是固定的,记住格式,以不变应万变。作用范围:定义开始到定义它的代码块结束;同一范围内,不允许多个个局部变量命名冲突12、Java成员变量和局部变量局部变量:不是声明在类体括号里面的变量;局部变量使用前必须初始化值;局部变量没有默认初始化值;局部变量的作用域是

19、从定义开始到定义它的代码块结束;成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量;(其实Java中没有全局变量,由于Java是面向对象语言,所有变量都是类成员)成员变量的作用域是整个类中;我的总结:注意成员变量和局部变量的区别package reviewDemo;public class Demo2 public static void main(String args) int i; System.out.println(i); 备注:局部变量调用前没有初始化,所以编译的时候就会报错!package reviewDemo;public class Demo2 stat

20、ic int i; public static void main(String args) System.out.println(i); 备注:此时i为全局变量,未初始化会被赋予默认的初始化值!程序正确!我的总结:局部变量是定义在方法中的变量,出了该方法就不能访问该变量了.成员变量是在类中定义,并且在类的成员方法中都能访问的变量.13、基本数据类型在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这些类型的值来代表一些简单的状态。Java 语言的基本数据类型总共有以下8 种,下面是按照用途划分出的4 个类别: 定点类型:整数型是一类代表整数值的类型。当需要代表一个整数的值

21、时,可以根据需要从4 种类型中挑选合适的,如果没有特殊要求的话,一般选择int 类型。4 种整数型区别主要在每个数据在内存中占用的空间大小和代表的数值的范围。浮点类型:小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从以下2 种类型中挑选合适的。如果没有特殊要求,一般选择double类型。由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型。字符型:字符型代表特定的某个字符,按照前面介绍的知识,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算

22、机完成从编号转换成对应字符的工作。Java 语言中为了更加方便国际化,使用Unicode 字符集作为默认的字符集,该字符集包含各种语言中常见的字符。在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例如A、a等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。布尔型:布尔型代表逻辑中的成立和不成立。Java 语言中使用关键字true 代表成立,false 代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java 把逻辑的值用布尔型来进行表达。14、基本数据类型转换之向上转型和向下转换向上转换:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原

23、则:容量小的类型可自动转换为容量大的数据类型;byte,short,char int long float doublebyte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。boolean 类型是不可以转换为其他基本数据类型。Eg:int i = 123;long l = i;/自动转换,不需强转float f = 3.14F;double d = f;向下转换:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:容量小的类型可自动转换为容量大的数据类型;byte,short,char int long float doublebyte,short

24、,char之间不会相互转换,他们在计算时首先会转换为int类型。boolean 类型是不可以转换为其他基本数据类型。Eg:long l = 123L;int i = (int) l;/必须强转double d = 3.14;float f = (float) d;我的总结:类型转化小转大,自动!自动类型转换(也叫隐式类型转换) 大转小,强转!强制类型转换(也叫显式类型转换) 15、Java的运算符运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种: 算术运算符(+ 、 、* 、/ 、%)赋值运算符(= 、+=、-=、*=、/=,、%=)关系运算符(、=、)我的总结:逻辑运算符用

25、于连接布尔型表达式,在Java中不可以写成3x3 & x6 。“&”和“&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“|”的区别同理,双或时,左边为真,右边不参与运算。“ ”与“|”不同之处是:当左右都为true时,结果为false。16、表达式和三目运算符是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;a + b3.14 + a(x + y) * z + 100boolean b= i 5)System.out.println(变量i大于5);else if (i 4)System.o

26、ut.println(变量i小于4);elseSystem.out.println(其他);switch控制语句格式:switch(表达式)case 表达式可能的结果值1:执行语句;break;case 表达式可能的结果值2:执行语句;break;.default:执行语句;break;/最后这个一般不写备注:case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default。结束switch语句的两种情况:遇到break,switch语句执行结束。如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,

27、运行可以执行的语句,直到遇到break或者switch结束为止。class switch2 public static void main(String args) int a = 7,b = 5;switch(a-b)case 3:/表达式可能的值;System.out.println(33!);break;case 4:System.out.println(44!);break;default:/都没有执行则 执行该语句!System.out.println(其它的);注意:switch语句只能使用byte、char、short、int四种基本类型以及它们的包装类和枚举18、三大循环结构:

28、用于处理需要重复执行的操作;根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;while:事先不需要知道循环执行多少次;do while:同上,只是至少要执行一次(先做,后判断);for:需要知道循环次数;循环结构(while & do while)while语句格式:while(条件表达式值为true)执行语句;do while语句格式:do执行语句;while(条件表达式值为true);我的总结:do while特点是无论条件是否满足,循环体至少被执行一次。循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false值

29、;循环结构(for)格式:for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))执行语句;(4)执行顺序:(1) (2) (4) (3) (2) (4) (3)备注:1, for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。2, while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。3, 最简单无限循环格式:while(true) , for(;),无限循环存

30、在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。Eg:用三种循环控制求出100以内前5个3的倍数的数字;class whilepublic static void main(String args) int i = 1,k = 0;while(i=100)if(i%3=0)if(k5)System.out.println(i);k+;i+;class dowhilepublic static void main(String args) int i = 1,k = 0;doif(i%3=0)if(k5)System.out.println(i);k+;i+;while(i=100)

31、;class forpublic static void main(String args) int i = 1,k = 0;for(;i100;i+)if(i%3=0&k5)System.out.println(i);k+;19、嵌套循环与流程控制嵌套循环:循环里套循环假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。Eg:利用for循环语句的嵌套打印出乘法口诀表class break1 public static void main(String args) for(int i=1;i=10;i+)/定义i与j的值必须在for循环里面,否则每次跳

32、出循环重新执行就无法取值for(int j=1;j=10;j+)if(j=i)System.out.print(j+*+i+=+i*j+ );/小注意:print()括号里面必须传递参数,println()无限制!System.out.println();流程控制break语句、 continue语句;break:终止该层循环;continue:跳过该层循环注:若这两个语句离开应用范围,存在是没有意义的。:这个两个语句后面都不能有语句,因为执行不到。:continue语句是跳过本次循环,继续下次循环。:标签的出现,可以让这两个语句作用于指定的循环。Eg:package reviewDemo;p

33、ublic class Demo2 public static void main(String args) int i = 1;for (; i 10; i+) System.out.println(i);if(i = 8)break;/流程控制,不会完全执行!二、黑马程序员方法与数组第二篇:1、什么是方法(Method)?方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:结构化代码将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。:减少代码重复一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对

34、应的功能代码。方法在书写时需要注意以下两点:逻辑严谨方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。:通用性强(可重复利用)方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。在Java 语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。我的总结:方法:一段可重复使用的代码段;程序中完成独立功能的一段代码的集合。2、 Java中方法的格式:修饰符 返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,)执行语句;return 返回值;/需要的话参数列表(参数的类型 ,参数的个数,参

35、数的顺序)我的总结:只要上述有一个不一样,那么这个参数列表就不一样!对于方法而言,即使同名也不是同一个方法,也就是下面讲的方法签名。3、方法里的属性访问控制符:访问控制符限定方法的可见范围,或者说是方法被调用的范围。方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private。其中无访问控制符不书写关键字即可。具体的范围在后续有详细介绍。形式参数:在方法被调用时用于接收外界输入的数据。实参:调用方法时实际传给方法的数据。返回值:方法在执行完毕后返还给调用它的环境的数据。返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型 vo

36、id。方法签名:方法名和方法的参数列表(能区别方法);/最关键的java语言中调用方法:对象名.方法名(实参列表)。实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。return 语句终止方法的运行并指定要返回的数据。4、方法特点它可以实现独立的功能;必须定义在类里面;它只有被调用才会执行;它可以被重复使用;方法结束后方法里的对象失去引用;如何定义一个功能,并通过方法体现出来: 明确该功能运算后的结果.明确返回值类型; 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;Eg:package reviewDemo;/* * player 的值分别是1,2,3或者其他值时,该

37、方法返回“大明”,“二明”,“小明”,“我没有这个孩子”。 */public class Demo2 public static void main(String args) int player = 5;System.out.println(返回的结果是:+show(player);public static String show(int p)switch (p) case 1:return 大明;case 2:return 二明;case 3:return 小明;default:return 我没有这个孩子!;5、什么是方法的重载(Overload)?概念:在同一个类中,允许存在一个以上

38、的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。存在的原因:屏蔽了一个对象的同一类方法由于参数不同所造成的差异。特点:与返回值类型无关,只看参数列表。以下是方法重载的示例:public void a(int a)public int a()public void a(int a,String s)Eg:class Chongzai public static void main(String args) int ret = name(3,4,5);System.out.println(ret);public static int name(int a, int b)int c =

39、 a+b;return c;public static int name(int a, int b, int m)/这就叫做方法的重载,只要参数列表不一样。好处:用户使用时限制很小;int c = a+b+m;return c;我的总结:方法重载,方法名相同,但是参数列表不一致!(和方法覆写不一样,方法覆写的方法名和参数列表都必须一样),注意方法重载和方法覆写的不同!6、 可变参数从java5开始出现了可变参数,这是对java方法及数组的拓展!方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定。定义格式: 返回值类型 方法名(参数类型 . 形式参数)可变参数的特点:只能出现在参数列表的最后;. 位于变量类型和变量名之间,前后有无空格都可以;调用可变参数的方法时,编译器为该可变参数隐含创建一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号