JAVA已经隶属于Oracle公司
JAVA的优点:
1、将源码编译为字节码
2、依赖各种平台上的虚拟机来解释执行字节码
3、实现了一次编写、到处运行的特性
4、能够接纳、兼容、和运行其他程序语言产生的字节码
JAVA是程序语言
java规范规定了语法和功能
JCP:掌管java规范
JDK:实现Java规范
通过搜索 java achieve下载各种版本的JDK
课程目录:
1、基本语句和结构
2、面向对象思想(重点)
3、继承和多态(重点)
4、异常处理
5、数据结构
6、文件处理
一、JAVA环境搭建
安装JDK
1、搜索Java Archive,下载JDK版本
2、配置JAVA_HOME环境变量
3、配置Path环境变量
JAVA编译原理
在IDE输入程序在JDK上编译为.class文件,然后再JRE通过java.exe在虚拟机JVM上运行
其中:
JDK:主要负责编译
JRE:主要负责运行
二、JAVA类基础知识
JAVA中所有的东西都放在类里面
JAVA的项目是由一个一个class构成
类的构成:变量和方法
运算符:
a<<1左移乘2
a>>1右移除2
类基础:
重载:函数名相同,形参列表必须不同,如果调用则系统会选择合适的方法调用
构造函数就是一种重载
类:
同一个对象不同引用,在内存中有不同的存放地址
定义变量需要给一个初始化的值
基本类型赋值是拷贝赋值、对象赋值是reference赋值
构造函数:
构造函数的作用:在实例化类到时候就开始赋值
面向对象的法则:
1、类的成员属性是私有的
2、类的方法是公共public,通过方法修改成员属性值
this关键词的两个作用:
1、负责指向本类的成员方法
2、代替本类的构造函数
三、继承、接口、抽象类
-
继承:
1、类别内的对象属性和方法都有一定的共同点
2、子类继承父类的所有属性和方法(不能继承private)
3、单根继承原则:每个类只能继承一个类
所有类默认是继承于Object,所以会有一些公用的方法:
clone、equals、finalize、getClass、hashCode、toString、wait、notify等 -
抽象类:
1、抽象类关键字abstract
2、一个类继承抽象类就不能继承其他抽象类 -
接口:
1、一个类可以实现多个接口,继承和实现可以同时进行。
2、接口可以继承多个接口
3、类实现接口就要实现所有接口的方法
抽象类和接口的相同点:
两者不能被实例化不能被new出
不同点:
1、抽象类abstract、接口interface
2、抽象类有构造函数,接口无
3、抽象类可以有main并运行,接口无
4、抽象类可以有private和protected,接口只有public
- 转型、多态、契约设计
1、类型可以互相转化
子类可以转化为父类、父类不能转化为子类
2、子类继承父类的所有方法
四、Static、final和常量设计
static
作用在:类、变量、方法、匿名方法块
-
static变量
- 只依赖于类实现,可以用类.变量名
- 多个对象调用的值只储存在一个共同的栈中 static方法
- 直接通过类名应用
- 静态方法中只能使用静态变量
- 静态方法禁止引用非静态方法
static修饰的内部类使用较少,可忽略
-
static块
- 在类被一次加载时调用
- static块只执行一次,顺序为static块>匿名块>构造函数
单例模式
- 限定某一个类在整个运行过程中,只能保留一个实例对象在内存空间。
-
单例模式:保证一个类只有一个对象
- 采用static共享对象实例
- 采用private构造函数,防止外界new
final
-
final
- 修饰的类不可继承
- 修饰的父类方法子类不可改写
- 修饰的基本类型字段
五、package、import、classpath
package
- 常用域名当做包名、逆序
- 类的完整名称为包名+类名
import
import作用:引入其他类
-
import原则
- 位置放在package后、类定义前
- 通过*来引入一个目录下的所有类【不推荐】 Jar文件的导入和导出
- jar文件是java特有的一种文件格式,便于程序文件的传播
- jar文件是class文件的压缩包 java访问权限
- 啊
六、JAVA常用类
String类
StringBuffer和Stringbuilder【不同步】
- 方法一致,区别在同步上
- 属于可变对象,对象赋值后共享一个内存空间
时间相关类
java.sql.Date
使用数据库时用
Calender
是抽象类
-
注意
- 获取月,记住默认是0-11,要加上1
- 获取星期,英语国家是从周日开始算
格式化
学会查看以上类的API
七、JAVA异常及异常处理
异常:程序不正常的行为或状态
-
Throwable
- 所有错误的祖先 Error
- 系统内部错误或资源耗尽,不管 Exception
- 程序有关异常,重点关注
- RuntimeException程序自身错误:5/0,空指针,数组越界
-
非RuntimeException,外界相关错误,打开空文件,加载不存在的类
异常处理:程序返回安全状态,允许用户保存结果,并以适当方式关闭程序
- 允许用户及时保存结果
- 抓住异常,分析异常内容
- 控制程序返回到安全状态
-
try-catch-finally
- catch:发生异常执行的内容,可以有多个
- finally:无论是否有异常都会执行 注意
- 一般将小的异常写在前面,大的宽泛的写在后面
- 方法如何可能存在异常,但不处理,通过throws来声明异常
- 一个方法被覆盖,覆盖它的方法必须有相同的异常
- 父类的方法抛出多个异常,重写的子类必须抛出父类的那些异常,不能超出父类异常范围
自定义异常
Exception类是所有异常的父类,继承自Throwable,它的兄弟是Error【系统异常暂时不管】
自定义异常条件:
1、继承Exception
2、定义构造函数调用父类Exception的message构造函数
七、JAVA数据结构
数组
数组是存放多个数据的容器
-
数组的特点
- 同一种类型、按线性排列、
- 通过索引快速访问数据
- 需明确容器的长度
- length为数组大小长度,从0开始【不可越界,否则会报错】
JCF
容器框架
- 对外的接口
- 接口的实现
- 算法
框架提高数据存取效率,避免重复劳动。
-
JCF的集合接口为Collection
- add、contains、remove、size、iterator JCF的迭代器接口为Iterator
- hasNext、next、remove
列表
-
List
- 有序、允许重复
- 主要实现ArrayList【非同步】、LinkedList【非同步】、Vector【同步】 ArryList
- 不支持同步
- 利用索引快速访问
- 不适合指定位置插入、删除、主要用于查询
- 可动态调整容器大小 LinkedList
- 双向链表,不支持同步
- 当做堆栈、队列、双端队列
- 顺序访问高效,随机访问差,中间插入和删除高效
- 用于经常变化的数据
集合
-
集合的特点
- 确定性:任何对象都能判断是否属于一个集合
- 互异性:集合中每个元素都是不同的
- 无序性:集合内顺序无关
Java中的集合接口Set
-
HashSet:基于散列函数的集合,无序,不支持同步
-
TreeSet:基于树结构的集合,可排序,不支持同步
注意:排序按从小到大排序 -
LinkedHashSet:基于散列函数和双向链表的集合,可排序,不支持同步
注意,LinkedHashSet保持链表的顺序性,和插入顺序一致
-
HashSet,LinkedHashSet,TreeSet
- 元素必须是对象,如Integer
元素重复判断原则:
1、HashSet和LinkedHashSet
- 判断两个元素的hashCode返回值是否相同,不同返回false
- 相同,判定equals方法,不同返回false
- hashCode和equals属于公共方法,因为Object类有
2、TreeSet
- 需要元素继承自Comparable接口
- 比较两个元素的compareTo方法
映射Map
工具类
- 不存储数据,在数据容器中实现高效操作
八、JAVA文件读写
文件系统是由操作系统管理、文件分隔符Linux/Unix用/ ;windows用\隔开【程序汇总用“/” “\”作为转译】
文件类:java.io.File
常用方法:
-
注意
- File类不涉及文件的内容,是用来表示文件的属性
-
File是访问文件和目录的重要类
JAVA的IO包概述
Java读取文件,只能以数据流的形式读写
文件读写
try-resource方法就是在try后跟括号写流,执行后自动关闭,优秀写法
教程中读写二进制和文本有区别:
读取二进制:字节流→装饰缓存流→转化缓存
读写文件:字节流→转化缓存→装饰缓存流