类的初始化
https://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html
@Override的作用
https://blog.csdn.net/L670697197/article/details/78685037
反射机制
https://www.w3cschool.cn/java/java-reflex.html
------------------------------------------------------------------------------------------------------------------------------------------------------------------
异常
捕获异常
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
多重捕获块
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}
finally关键字:无论是否发生异常,finally代码块中的代码总会被执行。
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
throws/throw关键字:
如果一个方法没有捕获一个检查性异常,那么该方法必须使用throws 关键字来声明。throws关键字放在方法签名的尾部,多个异常可用逗号隔开。
也可以使用throw关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
public void withdraw(double amount) throws RemoteException,
InsufficientFundsException
注:try代码后不能既没catch块也没finally块,try、catch、finally块之间不能添加任何代码。
定义自己的异常类
------------------------------------------------------------------------------------------------------------------------------------------------------------------
文件
创建:
File dummyFile = new File("test.txt");
boolean fileCreated = dummyFile.createNewFile();//若成功创建则返回true
创建临时文件:File tempFile = File.createTempFile("abc", ".txt");
当前工作目录和更改、是否存在该文件:
String workingDir = System.getProperty("user.dir");
System.setProperty("user.dir", "C:\\myDir");
boolean fileExists = dummyFile.exists();
路径:使用getAbsolutePath()和getCanonicalPath()方法来分别获得由File对象表示的绝对路径和规范路径。
文件分隔符(File.separator):在程序中使用名称分隔符将使您的Java代码在不同的平台上工作。
文件操作
https://www.w3cschool.cn/java/java-io-file-operation.html
------------------------------------------------------------------------------------------------------------------------------------------------------------------
泛型
https://zhuanlan.zhihu.com/p/28242753
用来规定一个类、接口或方法所能接受的数据的类型. 就像在声明方法时指定参数一样, 我们在声明一个类, 接口或方法时, 也可以指定其"类型参数", 也就是泛型.
-
变量类型中的泛型,和实例类型中的泛型,必须保证相同(不支持继承关系)。
- 既然有了这个规定, 因此在JDK1.7时就推出了一个新特性叫菱形泛型(The Diamond), 就是说后面的泛型可以省略直接写成<>, 反正前后一致。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
构造方法
方法名要与类名相同,没有返回值(包括void),用来进行初始化。
若没有显式的自定义构造方法,java会自动生成一个无参的构造方法。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
抽象类
抽象方法:
只有声明,而没有具体的实现
abstract void fun();//抽象方法必须用abstract关键字进行修饰
抽象类(还能有抽象方法的类)和普通类:
抽象类是为了继承而存在的
[public] abstract class ClassName {
abstract void fun();
}
0.抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
1、抽象类不能被实例化,因为它是存在于一种概念而非具体。
2、普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自身也是抽象类。
抽象类和抽象接口:
接口是对动作的抽象,抽象类是对本质的抽象。一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
[public] interface InterfaceName {
}
实现接口使用implements关键字:
class ClassName implements Interface1, Interface2[,...,] {
}
- 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
- 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
- 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
- 抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
- 抽象类主要用来抽象类别,接口主要用来抽象功能.
- 抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。
- 接口是设计的结果 ,抽象类是重构的结果
使用方向:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口
门和警报的例子:
interface Alarm {
void alarm();
}//警报为延伸出来的行为
abstract class Door {
public void open();
public void close();
}//门固有的行为
public class AlarmDoor extends Door implements Alarm {
void open() {
// ......
}
void close() {
// ......
}
void alarm() {
// ......
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------
内部类
https://blog.csdn.net/qq_33599978/article/details/70880803
------------------------------------------------------------------------------------------------------------------------------------------------------------------
this关键字
1.应用一:引用成员变量
2.应用二:调用类的构造方法
3.应用三:返回对象的值
super关键字
1.调用超类方法
2.调用超类的构造器
注:super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
浅析java中final,static和abstract关键词
https://blog.csdn.net/qq_28057577/article/details/51114798
------------------------------------------------------------------------------------------------------------------------------------------------------------------