1、Day 郑春光: tops777 V 信chp1.语言基础 基本语法、标识符、命名规范、八种基本类型、基本操作符、运算符chp2.选择结构 if 、if else、if else if else、switch casechp3.循环控制 while、do while、for、break、continuechp4.函数 函数的三要素、return 的用法chp5.数组 一维数组、数组参数、数组返回值、数组增删、扩容、排序、二维数组chp6.面向对象 类和对象、实例变量、构造方法、方法重载、引用的概念、this 关键字chp7.面向对象三大特性封装、继承、多态、对象创建过程、访问修饰符、super
2、 关键字、方法重写、instanceofchp8.三个修饰符 static、final、abstractchp9.接口 基本语法、接口的作用、解耦合chp10.常用类 内部类、Object、包装类、Stringchp11.集合框架 Collection、List、Set、Map 的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型chp12.异常 概念、分类、产生、传递、处理、自定义异常chp13.线程 概念、创建、状态转换、数据共享、同步chp14.I/O 框架 File 类、流的分类、基本字节流、基本字符流、字节过滤流、字符过滤流、桥转换、对象序列化
3、chp1.语言基础一、Java 语言:1.由来:I.Sun Microsystem 于 1995 年推出的 Java 面向对象的程序设计语言II. 1996 年发布 1.0 版本III. 1999 年发布 J2SE、J2EE、J2MEIV. 2005 年更名为 JavaSE、JavaEE、JavaME Java Platform Standard Edition Enterprise MicroV.2009 年被 Oracle 收购VI. 2011 年发布 Java 7.0VII.2014 年发布 Java 8.02.特点:I.纯面向对象(使用计算机模拟现实世界,解决现实问题,贴近人类思维模式
4、)。 II. 简单性(相对 C+、C#,不易造成内容溢出,减少代码量,可读性强)。III. 跨平台性(操作系统、服务器、数据库)。3.执行机制:I.编译执行:源文件编译成机器码,一次编译,多次执行,执行效率高,不可跨平台。II. 解释执行:源文件一行一行解释,一行一行执行,不同操作系统下具备不同的解释器, 执行效率低,可以跨平台。III. Java 先编译再执行:源文件编译成字节码文件(.class 平台中立文件),再将字节码文件进行解释执行。4.名词解释:I.JVM(Java Virtual Machine 虚拟机)使用软件在不同操作系统中,模拟相同的环境。II. JRE(Java Runt
5、ime Environment 运行环境)包含 JVM 和解释器,完整 Java 的运行环 境。III. JDK(Java Development Kit 开发环境)包含 JRE+类库+开发工具包(编译器+调试工具)。二、开发和运行环境的搭建:1.JAVA_HOME:C:Program FilesJavajdk1.6.0_212.PATH:;C:Program FilesJavajdk1.6.0_21bin3.CLASSPATH:. /当前路径三、Windows DOS 常用命令:1.更换盘符:D:2.查看盘符内容:dir3.进入文件夹:cd 文件夹名称4.返回上一级:cd5.清除:cls6.
6、删除文件:del 文件名称7.删除文件夹:rd 文件夹名称8.新启 DOS:start9.退出:exit四、创建源文件、编写类:1.创建以.java 结尾的源文件。2.class:类(代码的容器)。3.class 名称:自定义4.main:主函数,程序执行入口。一个类中,只能有一个主函数。5.输入语句区分大小写。6.一行只写一句代码,以 ; 结束。五、第一个应用程序:1.编译:javac 源文件名称.java /javac A.java2.执行:java 类名 /java HelloWorld六、类的实际用法和阐述:1.在一个源文件中,可以定义多个类,编译后,每个类都会生成独立的字节码文件。2
7、.每个类中都可以有自己的主函数。3.公开类(public)的类名必须和源文件名称完全相同。4.一个源文件中,只能有一个公开类。七、Package(包):1.作用:管理类、区分类。2.语法:package 包名;(必须是类的第一行)3.编译:javac -d . 源文件名称4.执行:java 包名.类名 /全限定名5.引入包:import /TODO 未完成 Scanner八、编码规范:1.良好的注释习惯:I. 注释不参与编译。II. 单行注释: / 单行注释III. 多行注释: /* 多行注释 */IV. 文档注释: /* 文档注释 */2.良好的格式控制:I. 层级要有缩进。II. 一行只写
8、一句代码。III. 不省略3.良好的标识符命名规范:I.硬性:a. 字母、数字、_、$,不能以数字开头。b. 不能与关键字、保留字重名。II.软性:a. 望文生义、见名知义。b. 类名可以由一个或多个单词组成,每个单词的首字母大写(Pasacl 命名法)。c. 变量、函数可以由一个或多个单词组成,首单词首字母小写,拼接词首字母大写(Camel 命名法)。helloWorldd. 包名全小写,只可以使用特殊字符.,并且不能以.开头或结尾。e. 常量全大写,多个单词用_连接。 HELLO_WORLD九、变量:1. 概念:一个数据存储空间的表示,它是存储数据的基本单元。2. 语法:I. 声明:数据类
9、型 变量名;II. 赋值:变量名 = 值; /等号右边赋值给等号左边III. 声明并赋值:数据类型 变量名 = 值;IV. 同时声明多个相同类型的变量:数据类型 变量名 = 值 , 变量名 = 值 , 变量名;3. 应用:I. int money;II. money = 5;III. int money = 5;IV. int a = 5 , b = 6 , c = 10 , d;十、数据类型:1.基本数据类型(原始、简单):I. 整数:a.byte 1 个字节 -27 27-1 -128 127b.short 2 个字节 -215 215-1 -32768 32767c.int 4 个字节
10、-231 231-1 -2147483648 2147483647d.long 8 个字节 -263 263-1 -922 京 922 京 /值后+LII. 小数(浮点型):近似值 1bit 符号 8bits 指数位 23bits 尾数位a.float 4 个字节 1.4E-45 3.4E38b.double 8 个字节 4.9E-324 1.7E308III. 字符:a.char 2 个字节 u0000 uFFFF A 65 u0041b.Ps:ascii 编码 Unicode 编码 万国码 万维码 统一码 c.转义字符: ” t nIV. 布尔:a.boolean 1byte/1bit t
11、rue/false2.引用数据类型(对象):I.字符串: String “字面值”十一、类型转换:1.自动类型转换:I. 两种类型相互兼容。II. 目标类型大于源类型。(目标类型的取值范围包含源类型)2.强制类型转换:I. 两种类型相互兼容。II. 目标类型小于源类型。III. 整数长度合适,数据完整。 int i = 100 ; byte b = (byte)i;IV. 整数长度不适,数据截断。 int i = 200 ; byte b = (byte)i;V. 小数强转整数,失去精度。 double d = 2.5; int i = (int)d;VI. 字符整数互转,数据完整。 int
12、i = 20320; char c = (char)i;十二、表达式:1.使用运算符连接的变量或字面值,并可以得到一个最终结果。2.自动类型提升:I. 两个操作数,有一个为 double 时,运行结果提升为 double。II. 没有 double,有一个为 float 时,结果为 float。III. 没有 float,有一个为 long 时,结果为 long。IV. 没有 long,有一个为 int 时,结果为 int。V. 没有 int,结果为 int。十三、运算符:1.算数运算符:+ - * / % + -2.赋值运算符:= += -= *= /= %=3.关系运算符: = = = !
13、=4.逻辑运算符:I. chp2.选择结构一、选择结构:1.基本 if 选择结构:if(布尔表达式)/条件满足时所执行的代码块2.if else 选择结构:if(布尔表达式)/条件满足时所执行的代码块else/条件不满足时所执行的代码块3.多重 if 选择结构:if(布尔表达式)/代码块 1else if(布尔表达式)/代码块 2else if(布尔表达式)/代码块 3else/代码块 4注意:相互排斥,当有一个条件被满足时,其他均不再执行。适用于区间判断,保证升降顺序。4.嵌套 if 选择结构:if(外层布尔表达式)if(内层布尔表达式)/内层条件满足时所执行的代码块else/内层条件不满足
14、时所执行的代码块else/外层条件不满足时所执行的代码块注意:选择结构中,可嵌套另外一个选择结构,可任意组合,当外层条件满足时,再判断内层条件。二、分支结构:1.switch 分支结构:switch(整数/字符/JDK7+中的 String)case 1:/代码块break;case 2:/代码块break;case 3:/代码块break;default:/代码块break;注意:适用于等值判断,所有 case 取值不可相同。当某个条件满足时,并不会自动结束整个分支结构,需增加 break。2.break 关键字:终止当前 switch 分支结构。三、局部变量:1.概念:声明在函数内部的变量
15、,需先赋值再使用。2.作用范围:定义行开始到所定义的代码块结束。3.避免命名冲突。四、Scanner 控制台输入:1.引入 java.util.Scanner;2.声明 Scanner 类型的变量。3.使用 Scanner 类中对应的函数(区分类型):4.常用函数:I. nextInt() /整数II. nextDouble() /小数III. next() /字符串IV. next().charAt(0)/字符chp3.循环控制一、循环:1.概念:通过某个条件,使一段代码周而复始的执行。2.组成:初始部分、循环条件、循环操作、迭代部分。3.循环的分类:I. while 循环:while(布尔
16、表达式)/循环操作特性:先判断,再执行。应用场合:循环次数明确。2. do while 循环:do/循环操作while(布尔表达式);特性:先执行,再判断。(无条件执行一次)应用场合:循环次数不明确。3. for 循环:for(1 初始部分 ; 2 循环条件; 4 迭代部分)/3 循环操作特性:先判断,再执行。应用场合:循环次数明确。二、流程控制语句:1.break:终止、跳出 switch 分支结构或循环结构。2.continue:结束本次、进入下一次循环。三、嵌套循环:1.概念:一个完整的循环结构中,嵌套另外一个完整的循环结构。2.图形:外层控制行数,内层控制列数。3.其他:外层控制循环次
17、数,内层控制单次循环操作。4.循环 Label 标签。 5.三重循环及以上效率低、可读性差。chp4.函数一、概念:实现特定功能的一段代码,可反复使用。二、语法: public static 返回值类型 函数名称(形式参数列表)/函数主体三、组成:1.函数名称:望文生义(Camel)2.函数主体:逻辑代码,完成特定功能。3.形式参数列表:可声明一个或多个形参,函数的局部变量,由调用时进行赋值。4.返回值类型:基本数据类型、引用数据类型、void。(根据函数需要定义)5.返回值:I. return 值; /结束当前函数,并伴有返回值,返回到函数调用处。II. 规定:一个函数只能有一个返回值。II
18、I. 注意:当函数存在分支语句时,保证所有分支都具有返回值。IV. return; /单独出现,表示结束当前函数。只能在返回值类型为 void 时使用。四、调用:1.无参函数的调用:函数名称();2.有参函数的调用:函数名称(实参 1,实参 2,实参 3,实参 N); /赋予实际值,类型、顺序、个数必须与形参列表完全相同。3.调用具有返回值函数时的数据接收:数据类型 变量名 = 函数名称(实参列表);4.执行机制:调用函数时,程序会跳转至函数定义位置,并优先执行函数内部内容。函数执行结束后,携带返回值回到调用位置,继续执行。五、总结:1.一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套
19、。2.一个函数只做一件事。3.减少代码冗余、提高复用性、提高可读性、提高可维护性、方便分工合作。六、递归:1.将大问题拆分成小问题,解决方式相同,遵循一定的规律。自己调用自己。2.避免无穷递归。chp5.数组一、概念:一串连续的存储空间,存储多个相同数据类型的值。二、语法:1.声明:I. 数据类型 变量名; /先声明分配空间:变量名 = new 数据类型 长度 ; /再分配空间II. 数据类型 变量名= new 数据类型 长度 ;/声明并分配空间III. 数据类型 变量名= new 数据类型值 1,值 2,值 3; /声明并赋值(显示初始化)IV. 数据类型 变量名= 值 1,值 2,值 3;
20、/声明并赋值(显示初始化)不可分行书写2.数组的默认值:I. int 0II. double 0.0III. char u0000IV. boolean falseV. String null 任何引用数据类型的默认值3.数组的访问:I. index(索引、下标):有效值(0 length - 1)II. 数组名下标 进行数组元素的访问。III. 遍历:从头至尾逐一访问数组元素。IV. 长度:数组名.length; /获取数组长度。三、应用:1.统计 int 类型数组中元素的总和。2.数组扩容:I. 声明:在原数组长度基础上,重新声明新数组。II. 赋值:a.通过循环将原数组中所有元素逐一赋值
21、给新数组。b.System.arraycopy(原数组,原起始,新数组,新起始,长度);/需先创建新数组c.java.util.Arrays.copyOf(原数组,新长度);/返回与原数组相同类型的新数组3.增删元素:I. 增加:将插入位置起的所有元素,依次后移。II. 删除:将删除位置起的所有元素,依次前移。4.数组元素倒置:5.常见错误:数组下标越界:java.lang.ArrayIndexOutOfBoundsException四、排序:1.冒泡排序:相邻的两个数组比较大小,互换位置(升序:前小后大,降序:前大后小)口诀:外层 length-1 内层 length-1-i/第一轮 i =
22、 0 i 5/4 3 5 2 1/3 4 5 2 1/3 4 2 5 1/3 4 2 1 5 -/第二轮 i = 1 i 5/3 4 2 1 5/3 2 4 1 5/3 2 1 4 5/第三轮 i = 2i 5/2 3 1 4 5/2 1 3 4 5/第四轮 i = 3 i 5/1 2 3 4 52.选择排序: 固定值与其他值依次比较大小,互换位置。口诀:外层 length-1 , 内层 int j = i+1;3.自动排序:java.util.Arrays.sort(数组名); /JDK 提供(只能做升序)降序:使用数组元素倒置for(int i = 0 ; i nums.length /
23、2 ; i+)int temp = numsi;numsi = numsnums.length - 1 - i;numsnums.length - 1 - i = temp;五、二维数组:1.概念:一维数组的一维数组,数组的元素还是数组。2.矩形:I. 数据类型 数组名; /声明数组名 = new 数据类型高维长度低维长度; /分配空间II. 数据类型 数组名 = new 数据类型高维长度低维长度; /声明并分配空间III. 数据类型 数组名 = new 数据类型 1,2,4,5,6,7,3,1,4,9 ;IV. 数据类型 数组名 = 1,2,4,5,6,7,3,1,4,9 ;3.不规则:I.
24、 数据类型 数组名 = new 数据类型高维长度; /分配空间数组名高维 = new 数据类型长度; II. 数据类型 数组名 = new 数据类型1,4,3,5,6,7,3,1,4,9;4.遍历:I. 高维:数组名.length;II. 低维:数组名高维下标.lengthIII. 访问元素:数组名高维低维IV. 由二重循环解决:外层控制行,内层控制列。chp6.面向对象一、 面向对象思想(Object Oriented Programming):1.一切客观存在的事物都是对象,万物皆对象。2.对象一定具备自己的特征(属性)和行为(方法)。3.将数据及对数据的操作行为放在一起,作为一个相互依存
25、、不可分割的整体。4.从面相过程编程(从过程入手,逐一完成功能)到面相对象编程(分许、构建对象,以多个对象所具备的能力合理调用协同完成功能)二、类:1.概念:I. 抽象:在多个相同或类似的对象中,抽取共性的特征和行为,保留所关注的部分。II. 类是对象的集合(模板)。2.组成:I. 属性:a.成员变量(实例变量):声明在类的内部,方法的外部。当通过类构建对象的同时,所有成员变量成为对象不可分割的特征。b.数据类型 变量名; /类内,方法外。c.成员变量和局部变量的区分:局部变量 成员变量定义位置 方法或方法内部的结构中 类的内部、方法的外部默认值 无默认值 字面值(与数组相同)使用范围 从定义
26、行到包含其结构结 束 从定义行到本类结束命名冲突 不允许重名 可与局部变量重名,局部优 先注:如成员变量的声明和赋值分开完成,则赋值语句必须在方法内部。II. 方法: public 返回值类型 方法名称(形参列表)/方法体III. 方法的重载(Overload):a.概念:方法名称相同,参数列表不同(类型不同,个数不同,顺序不同)b.作用:屏蔽使用差异,使用方式灵活,方便。IV. 构造方法:a.方法名称和类名完全相同。b.没有返回值类型。c.创建对象时,触发构造方法的调用,不可手动通过引用调用。d.构造方法也可重载,多个构造方法要遵循重载规则。e.通过关键字 new 对象时,根据传入的参数调用其对应的构造方法。