1、Java 学习笔记Java 相关课程系列笔记之一笔记内容说明4 月 18 日的五天 Java 训练营(刘英谦老师主讲,占笔记内容 10%) ;Java 基础和面向对象(刘苍松老师主讲,占笔记内容 40%) ;Java SE 核心 I 和 Java SE 核心 II(范传奇老师主讲,占笔记内容 40%) ;其他视频及书籍资料(占笔记内容 10%)1目 录一 、 Java 技术基础 .11.1 编程语言 .11.2 Java 的特点 .11.3 Java 开发环境 .11.4 Java 开发环境配置 .21.5 Linux 命令与相关知识 .21.6 Eclipse/Myeclipse 程序结构
2、.3二 、 Java 语言基础 .42.1 基础语言要素 .42.2 八种基本数据类型 .42.3 常量和变量 .52.4 运算符与表达式 .52.5 编程风格 .62.6 流程控制语句 .72.7 数组 .82.8 字符串 .82.9 方法三要素 .92.10 插入排序 .92.11 冒泡排序 .92.12 冒泡排序:轻气泡上浮的方式 .102.13 二分法查找 .102.14 Java 系统 API 方法调用 .112.15 二进制基础 .112.16 Java 基础其他注意事项 .11三 、 面向对象 .133.1 类 .133.2 对象 .133.3 包 .143.4 方法及其调用 .
3、143.5 引用 .143.6 访问控制(封装) .143.7 构造器 .143.8 super()、super 和 this()、this .153.9 重载和重写 .163.10 继承 .173.11 static .203.12 final .213.13 多态 .223.14 抽象类 .223.15 接口 .233.16 内部类 .233.17 匿名类 .2423.18 二维数组和对象数组 .253.19 其他注意事项 .26四 、 Java SE 核心 I .274.1 Object 类 .274.2 String 类 .284.3 StringUtils 类 .304.4 Stri
4、ngBuilder 类 .304.5 正则表达式 .314.6 Date 类 .324.7 Calendar 类 .324.8 SimpleDateFormat 类 .334.9 DateFormat 类 .334.10 包装类 .344.11 BigDecimal 类 .354.12 BigInteger 类 .354.13 Collection 集合框架 .354.14 List 集合的实现类 ArrayList 和 LinkedList .364.15 Iterator 迭代器 .394.16 泛型 .404.17 增强型 for 循环 .404.18 List 高级数据结构:Queue
5、 队列 .414.19 List 高级数据结构:Deque 栈 .414.20 Set 集合的实现类 HashSet .424.21 Map 集合的实现类 HashMap.434.22 单例模式和模版方法模式 .45五 、 Java SE 核心 II .465.1 Java 异常处理机制 .465.2 File 文件类 .485.3 RandomAccessFile 类 .505.4 基本流:FIS 和 FOS.525.5 缓冲字节高级流:BIS 和 BOS.535.6 基本数据类型高级流:DIS 和 DOS .535.7 字符高级流:ISR 和 OSW.545.8 缓冲字符高级流:BR 和
6、BW.555.9 文件字符高级流:FR 和 FW.565.10 PrintWriter .575.11 对象序列化 .575.12 Thread 线程类及多线程 .585.13 Socket 网络编程 .625.14 线程池 .645.15 双缓冲队列 .6411、 Java 技 术 基 础1.1 编 程 语 言机器语言:0 1 在硬件直接执行汇编语言:助记符高级语言: (Java 运行比 C/C+慢)1)面向过程的高级语言:程序设计的基本单位为函数,如:C/C+语言。2)面向对象的高级语言:程序设计的基本单位为类,如:Java、C#。1.2 Java 的 特 点平台无关性、简单性、面向对象、
7、健壮性、多线程、自动内存管理。平台无关性:指 Java 语言平台无关,而 Java 的虚拟机却不是,需要下载对应平台 JVM虚拟机的。自动内存管理:对临时存储的数据自动进行回收,释放内存。如:引用类型的变量没有指向时,被回收;程序执行完后,局部变量被回收。1.3 Java 开 发 环 境Java Developement KitJava 开发工具包,简称 JDK,是由 Sun 公司提供的一个免费的 Java 开发工具,编程人员和最终用户可以利用这个工具来编译、运行 Java 程序。目前版本有 JDK1.0、JDK1.1、JDK1.2、JDK1.3、JDK1.4、JDK1.5(J2SE5.0)
8、、JDK1.6(J2SE6.0 ) 、JDK1.7( J2SE7.0) 。JDK 结构:JDK|-开发工具(Tools)命令:java、javac、jar、rmic .|- JRE(Java 基本运行环境)|-系统 API 库,系统类库| 系统带来的标准程序库,标准 API |- J VM java 虚拟机 java 语言的执行环境21.4 Java 开 发 环 境 配 置安装完 JDK 之后,不能立刻使用,需要设置环境变量:1)设置 PATH:D:Javajdk1.6.0bin (指向 JDK 中 bin 文件夹,有各种编译命令) 。2)CLASSPATH:告诉 Java 程序去哪里查找第三
9、方和自定义类,如果 .class 文件和类源文件在同一文件夹内,则不需要配置 classpath,后续有包,则需要。AWindows:在命令行执行set CLASSPATH=E:workspace1304bin (临时环境配置)java day02.Demo1 注意事项: E: set classpath = c: (不加分号就不找当前路径)= . ; c: ; d: ;(先找 classpath,若无,再找当前路径) C、D 两盘有同名 . class 文件,classpath 设置为 D 盘,而命令行窗口当前盘符为 C 盘,则 JVM 现找 classpath 路径,后找当前路径。BLin
10、ux:在控制台执行设置 CLASSPATH 环境变量,指向 package 所在的目录,一般是项目文件夹中的bin 目录。执行 java package.ClassName (包名必须写) 。export CLASSPATH=/home/soft01/workspace/1304/bin (临时环境配置)java day01.HelloWorldjava -cp /home/soft01/workspace/1304/bin day01.HelloWorld(二合一) 注意事项: Windows 根目录是反斜线: Linux 根目录是斜线:/1.5 Linux 命 令 与 相 关 知 识1)L
11、inux 无盘符,只有一个根目录(root)2)终端 = 控制台 = 命令行窗口3)pwd:打印当前工作目录,显示当前工作目录的位置4)ls:列表显示目录内容,默认显示当前目录内容5)cd:改变当前工作目录;cd 后不加参数=返回 home 文件夹;cd :返回 home; cd /:切换到根目录; cd . :返回上一层目录(相对的) ;6)mkdir:创建文件夹(目录) 注意:目录 = 文件夹7)rm:删除文件;rm xx xx:可删多个文件;rm rf xx:-为减号,r 表递归,f 表强制8)cat xx:显示文本文件内容9)启动 Java 开发工具:cd/opt/eclipse ./
12、eclipse . 表当前目录下10)绝对路径: /home (以 / 开始为绝对路径,相对于根目录)相对路径:home (相对于当前工作目录)11)home(用户主目录,用户的家):/home/username 如:/home/soft0112)主目录(home):有最大访问权限:什么都能干,增删改查、建目录等其他地方:一般只能查看,不能增删改查、创建目录等31.6 Eclipse/Myeclipse 程 序 结 构Project 项目文件|- src 源文件| |- Package 包| |- .java 源文件|- bin |- Package 包|- .class 字节码程序 注意事项
13、: Myeclipse5.5 消耗少,Myeclipse6.5 最稳定42、Java 语 言 基 础2.1 基 础 语 言 要 素1)标识符:给类、方法、变量起的名字A必须以字母或下划线或 $ 符号开始,其余字符可以是字母、数字、$ 符号和下划线。B只能包含两个特殊字符,即下划线 _ 和美元符号 $ 。不允许有任何其他特殊字符。C标识符不能包含空格。D区分大小写。2)关键字:只有系统才能用的标识符 注意事项: true、false 、null 不是关键字!是字面量。 main 不是关键字!但是是一个特殊单词,可以被 JVM 识别,主函数是固定格式,作为程序的入口。3)注释:单行注释:/ 多行注
14、释:/* */ 文档注释:/*/ 注意事项:开发中类前、属性前、方法前,必须有文档注视。2.2 八 种 基 本 数 据 类 型1)四种整数类型(byte、short、int、long):byte:8 位,用于表示最小数据单位,如文件中数据,-128127short:16 位,很少用,-32768 32767int:32 位、最常用,-231-1231 (21 亿)long:64 位、次常用 注意事项: int i=5; / 5 叫直接量(或字面量) ,即直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L 或 l。 小于 32 位数的变量,都按 int
15、结果计算。 强转符比数学运算符优先级高。见常量与变量中的例子。2)两种浮点数类型(float、double):float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾数。 注意事项: 二进制浮点数:1010100010=101010001.0*2=10101000.10*210(2 次方)=1010100.010*211(3 次方)= . 1010100010*21010(10 次方) 尾数: . 1010100010 指数:1010 基数:2 浮点数字面量默认都为 doub
16、le 类型,所以在定义的 float 型数据后面加 F或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X。 float 的精度没有 long 高,有效位数(尾数)短。 float 的范围大于 long 指数可以很大。 浮点数是不精确的,不能对浮点数进行精确比较。3)一种字符类型(char) :char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符) ,5使用 Unicode 码代表字符,0216-1(65535) 。 注意事项: 不能为 0 个字符。 转义字符:n 换行 r 回车 t Tab 字符 “ 双引号 表示一个 两字符 char 中间
17、用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过 “处理”显示为字符。4)一种布尔类型(boolean):true 真 和 false 假。5)类型转换: char自动转换:byteshortintlongfloatdouble 强制转换:会损失精度,产生误差,小数点以后的数字全部舍弃。容易超过取值范围。2.3 常 量 和 变 量变量:内存中一块存储空间,可保存当前数据。在程序运行过程中,其值是可以改变的量。1)必须声明并且初始化以后使用(在同一个作用域中不能重复声明变量)!2)变量必须有明确类型(Java 是强类型语言) 。3)
18、变量有作用域(变量在声明的地方开始,到块结束) 。变量作用域越小越好。4)局部变量在使用前一定要初始化!成员变量在对象被创建后有默认值,可直接用。5)在方法中定义的局部变量在该方法被加载时创建。常量:在程序运行过程中,其值不可以改变的量。 注意事项: 字面量、常量和变量的运算机制不同,字面量、常量由编译器计算,变量由运算器处理,目的是为了提高效率。eg:小于 32 位数的字面量处理byte b1 = 1; byte b2 = 3;/byte b3 = b1+b2;/编译错误,按照 int 结果,需要强制转换byte b3 = (byte)(b1+b2);/byte b3 = (byte)b1+(byte)b2;/编译错误!两个 byte、short、char 相加还是按 int 算System.out.println(b3); /选择结果:A 编译错误 B