一.package
1.什么是package
package可以给Java中类指定包, 通常我们会按照功能将多个类定义到不同的包中, 方便管理.
Java提供的类就分了很多个包, 例如: java.io, java.util
2.怎么定义包
在源代码的第一条语句, 使用package关键字定义包
包名全部小写, 用"."分隔
通常就是把公司的域名反过来写, 后面跟上项目名, 模块名等
3.编译和运行带包的类
编译: javac -d <目录> 源文件名 例如: javac -d . PackageDemo.java
运行: java 包名.类名 例如: java cn.itcast.PackageDemo
4.使用其他包中的类
在一个类中使用另一个类的时候, 如果直接使用类名形式访问, 会在当前包中查找. 没有则报错.
如果想使用其他包中的类, 就需要使用import导入.
一个类要被其他的包中使用, 类必须是public的. public的类必须和文件名同名.
5.导入*和导入类名的区别
*: 导入指定包中的所有类. 如果当前包中有和导入包同名的类, 先找当前包中的, 如果当前包中没有, 才找导入的包中的.
类名: 导入指定包中指定的类. 不论当前包中是否有同名的类, 直接找导入包中的.
6.使用两个同名的类
如果一个类中需要使用两个不同包中同名的类, 那么使用的时候, 在类名前面加上包名即可
7.有包类和无包类之间的访问
无包的类可以使用有包的类, 直接导入即可
有包的类不能访问无包的类, 因为直接使用是找同一个包中的类, 导入的话没有包没办法导入
*** 8.总结
以后写类都要带上包
类要public, 和文件名同名
导入用类名
编译时带-d
运行时带包名
二.jar
1.什么是jar
jar文件是class文件的一种压缩格式, 通常我们会将一个软件的所有class打包成一个jar文件
2.怎么打jar包
jar cvf jar文件名 要打包的文件名 要打包的文件名 ...
例如: jar cvf day11.jar cn org Xxx.class
* 3.使用jar包中的类
将jar包的路径配置到classpath中, 即可使用其中的类
4.运行jar包
在META-INF文件夹中找到MANIFEST.MF文件, 拷贝到其他文件夹中
在其中添加MainClass配置, 例如: Main-Class: org.it315.PackageDemo
然后再用修改后的文件替换原文件
命令行中执行: java -jar jar文件名 例如: java -jar F:\day11.jar
三.异常
1.什么是异常
异常就是Java程序运行的时候出现的一些错误对象, 他们都是Exception类的子类.
程序运行的过程中如果出现了异常, 下面的代码将不再执行.
* 2.异常的分类
运行时异常: 在编译前不需要进行任何处理, 编译不报错. RuntimeException的子类.
编译时异常: 在便以前代码中必须对有可能出现的异常进行处理, 否则编译报错. Exception中除了RuntimeException的其他子类.
3.抛出异常
在程序中可以使用throw关键字抛出一个异常对象
如果抛出一个编译时异常, 那么方法签名上必须声明, 并且调用者必须处理(声明或捕捉)
如果抛出一个运行时异常, 那么可以处理也可以不处理
程序中如果抛出了异常, 当前方法结束, 不再继续执行
*** 4.处理异常
抛出: 在方法签名上使用throws关键字声明当前方法如果收到异常就抛出给调用者. 一旦抛出, 下面代码将不再执行.
捕获: 把有可能出现异常的代码放在try中, 用catch捕获异常, 这时如果异常出现了, 那么就会执行catch中的代码. 之后还会执行catch后面的代码..
5.finally代码块
finally是配合try使用的, 只要执行了try, finally一定会执行. 除非使用System.exit(0)退出虚拟机
如果有多行代码都是必须执行, 而且这些代码会出现异常, 那么try finally有可能嵌套使用
* 6.重写方法时的注意
子类重写父类方法时不能抛出父类没有声明的异常
* 7.如何处理多个异常
如果使用一段代码有可能出现多个异常, 那么可以在throws关键字后跟上多种异常类型以逗号分隔, 或者可以使用多个catch分别捕获.
如果使用catch捕获多个异常, 父类类型不能在子类类型的上面
8.自定义异常
如果希望创建一种新的异常类型, 方便在代码中抛出和捕获, 可以定义类继承Exception或RuntimeException
然后这个类就可以和Java中提供的异常一样使用了
如果需要接收异常信息, 可以定义有参的构造函数
四.面向对象重点
1.封装
私有化成员变量, 提供get和set方法
2.构造函数
定义构造函数
通过构造函数给成员变量赋值
了解自动生成构造函数的原理
3.this
构造函数中使用this()
在方法中用this来代表调用方法的对象
内部类中使用"外部类名.this.成员名"访问外部类的成员
4.static
静态变量和普通变量的区别
静态方法和普通方法的区别
5.继承
定义子类继承父类
了解子类实例化的过程, super()
向上转型, 强制类型转换
子类重写父类方法
6.Object
equals
toString
7.多态
了解什么是多态
8.抽象类和接口
了解它们的区别
9.内部类
匿名内部类
10.异常
了解异常的分类
会用两种方式处理异常
11.package
会定义包, 导入包
会编译运行带包的类