接口----实现 implements
继承----重载 override
Super
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
super引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
当我们要调用父类方法时使用。所以,无论何时,父类和子类都具有相同的命名方法,那么为了解决歧义,我们使用super关键字。
super关键字也可以用来访问父类的构造函数。
抽象类
抽象类中不一定全是抽象方法
但是如果一个类存在了抽象方法 那么这个类一定是抽象类
Autowired
@Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作
自动装配的工作
工厂模式
工厂模式:工厂模式本质就是代替new创建对象
为什么要用工厂模式讲的很好的链接
https://www.zhihu.com/search?type=content&q=%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F
变量
局部变量在成员函数中 且必须被初始化
实例变量 就是成员数据 在类内部 但是在成员函数外部
类变量 也叫静态变量 生命位置和实例变量一样 不同的是必须加上static
修饰符
访问修饰符:
default public private protect
非访问修饰符:
static final abstract synchronized volatile
number类
所有的包装类都是number类的子类
包装类只有6个:byte integer float double long short
charactor类
就是包装类
将内置类型转换成类
编译器会自动地将内置类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
转义序列
\n表示换行符
\t制表符
等等
String类
操作字符串的类
string类支持的方法看Java api文档
StringBuffer类和StringBuilder类
string类的对象是不能被修改的
但是stringBuffer类和StringBuild类的对象可以被多次修改
但是stringBuffer是线程安全的
stringBuilder不是线程安全的
数组
声明数组变量
dataType[] arrayRefVar; // 首选的方法
用new创建数组
dataType[] arrayRefVar = new dataType[arraySize];
日期时间
java.util包提供了Date类来封装当前的日期和时间
import java.util.Date;
除了Date
还有Calendar类
正则表达式
与下面两个类相关
import java.util.regex.Matcher;
import java.util.regex.Pattern;
具体使用查API
finalize方法
这个方法是对象在被垃圾回收器析构之前被调用
主要用于清楚回收对象
相当于手动回收内存
System.gc(); //调用Java垃圾收集器
流(Stream)、文件(File)和IO
相关操作都在java.io包中
BufferedReader类是从控制台读取字符流
FileInputStream从文件中读取数据
FileOutputStream向文件写入数据
与文件和I/O相关的类有
File
FileWritter
FileReader
Scanner类
import java.util.Scanner;
Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据
异常处理
异常分为三种:检查性异常 运行异常 错误
异常的类 Exception
所有的异常类都是Exception的子类
而Exception又是Throwable的子类
Java 语言定义了一些异常类在java.lang标准包中。
继承
object是所有类的祖先
重写 重载
子类重写父类的方法不能改变父类方法的返回类型和参数列表
类中 方法重载必须改变参数列表 返回类型是否修改随意
多态
子类对象赋值给父类
抽象类
抽象类就是被abstract修饰的类
不能实例化对象
因此只能被继承
泛型
泛型是指参数类型的泛型
具体来说就是无论是泛型方法还是泛型类
可以接受任何类型的参数
泛型方法
public static < E > void printArray( E[] inputArray )
{
// 输出数组元素
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
泛型类
public class Box<T> {
}
序列化
一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。
序列化一个对象,并将它发送到输出流。
public final void writeObject(Object x) throws IOException
网络编程
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。
网络协议用于保持通讯
TCP
UDP
Socket
URL
发邮件
下载jar包
引入包
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
然后就按规定写程序发邮件
多线程
一个进程包含多个线程
线程的生命周期:新建 运行 终止 睡眠 就绪
创建线程的三种方法
通过实现Runnable接口;
通过继承Thread类本身;
通过 Callable 和 Future 创建线程。
Applet
applet是一种Java程序。它一般运行在支持Java的Web浏览器内。
applet类提供了一个框架 可以在这个框架下开发小程序
import java.applet.*;
import java.awt.*;
设计模式
工厂模式
工厂创建对象
抽象工厂模式
超级工厂创建工厂
工厂再创建对象
单例模式
类只能创建单个对象 且提供访问这个唯一对象的方法
原型模式
适配器模式
桥接模式
过滤器模式
组合模式
装饰模式
外观模式
代理模式
责任链模式
迭代器模式
观察者模式
中介者模式
解释器模式
状态模式
空对象模式
策略模式
模板方法模式
访问者模式
MVC模式
静态方法
// A static or class method
static void aClassMethod() {
}
当调用类的静态方法时,该类的实例可能不存在。因此,不允许从静态方法内部引用实例变量。
类定义一加载到内存中,类变量就存在。类定义在创建类的第一个实例之前加载到内存中。
数据类型
Java支持两种数据类型:
基本数据类型 内置数据类型
引用数据类型 对象
final关键字
final变量 只能被赋值一次
final类 不能有子类
final方法 该方法不能在子类中被覆盖
枚举类型
关键字 enum
枚举类型
public enum Gender {
MALE, FEMALE; // The semi-colon is optional
}