一、类与对象
1、创建类
创建一个学生类、并且创造成员变量和方法
public class student{
String name;
int age;
public void study(参数列表){
…………
}
}
2、对象的使用
注:new 出来的东西都在堆当中
类名 对象名 = new 类名();
例:student stu = new student();
3、使用对象访问成员
访问成员方法: 对象.成员方法();
例: stu.study();
访问成员变量: 对象.成员变量;
例: stu.name;
二、封装
1、private关键字
private 数据类型 变量名;
2、如何访问成员变量
提供getXxx、setXxx方法
例:
public class student{
private String name;
private int age;
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void setAge(int a){
age = a;
}
public int getName(){
return age;
}
}
3、封装优化(一)之this关键字
注:this代表所在类的当前对象的引用(地址值);即谁在调用,就代表谁
public class student{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int age(){
return age;
}
}
4、封装优化(二)之构造方法
注:当一个对象初始化时,构造方法用来初始化该对象,给对象的成员变量赋初值。
且构造方法的类名与它所在类名相同,且没有返回值类型,且不需要void。
public class student{
private String name;
private int age;
public student(){}
public student(String name,int age){
this.name = name;
this.age = age;
}
}
5、构造方法的注意事项以及标准代码
注意事项:
- 如果你不提供构造方法,系统会自动给出一个无参构造方法。
- 如果你写了构造方法,系统不再提供无参构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数
标准代码——JavaBean:
它是Java语言编写类的一种标准规范,符合JavaBean的类必须是具体的且公共的,并且具有无参构造方法,提供用来操作成员变量的getXxx和setXxx方法。
public class student{
//成员变量
private String name;
private int age;
//构造方法
public student(){}
public student(String name,int age){
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
三、Scanner类
1、具体实现
//导包
import java.util.Scanner;
public class student{
public static void main(String[] args){
//创建一个键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//System.in 表示通过键盘录入数据
int a = sc.nextInt();
//表示通过对象来调用成员方法
//nextInt 表示将下一条标记为int
String b = sc.next();
//查找并返回扫描仪的下一个完整令牌
}
}
2、匿名对象
new Scanner(System.in).nextInt();
注意事项:
创建匿名对象直接调用方法,并没有变量名
一旦调用了两次方法,就创建了两个对象,导致空间的浪费
匿名对象也可以作为方法的参数和返回值列表
四、Random类
1、具体实现
//导包
import java.util.Random;
public class student{
public static void main(String[] args){
Random r = new Random();
//产生一百以内的随机数
for(int i=0;i<100;i++){
int num = r.nextInt();
//每调用一次nextInt方法,就会出现一个新的随机数
System.out.println("随机数:"+ num );
}
}
}
五、ArrayList类
1、具体实现
//导包
import java.util.ArrayList;
public class student(){
public static void main(String[] args){
//创建一个数组
ArrayList<String> list = new ArrayList<>();\
//从JDK7之后,右侧泛型可以留空,但“<>”必须写上
//创建学生对象
String n1 ="小杜";
String n2 ="小王";
String n3 ="小张";
//把创建的学生元素添加到集合当中,利用ArrayList这个类的方法
list.add(n1);
list.add(n2);
list.add(n3);
System.out.println(list);
//最后打印输出
}
}
2、常用的方法
public boolean add(E e);将指定的元素添加到此集合的尾部
public E remove(int index);移除把此集合中指定位置的元素,返回被删除的元素
public E get (index);返回此集合中指定位置的元素,返回获取的元素
public int size();返回此集合中的元素数,遍历集合时可以控制索引范围,防止越界。
六、String类
1、特点
- 字符串的值在创建之后不可改变。
- 因为字符串String对象是不可变的,所以它们可以被共享。
- "abc" = char[] data{"a","b","c"}
2、常用的方法
判断功能的方法:equals和equalsIgnoreCase
获取功能的方法:length、concat、charAt、indexOf、subString
转换功能的方法:tocharArray、getByte、replace
分割功能的方法:split
七、static关键字
静态方法
静态原理
静态代码块
八、Array类
1、操作数组的方法
public static String toString;返回指定数组内容的字符串表示形式。
public static void sort();对指定的数组进行升序排列;
九、Math类
1、基本运算方法
public static double abs();返回double数值的绝对值
public static double ceil();返回大于等于参数的最小整数
十、继承
1、概述
:其中多个类可称为子类,单独的一个类可以称为父类、超类或者基类
2、表示形式:
class 子类 extends 父类{……}
3、成员方法重写
: @override
4、继承后的特点——构造方法
5、super和this关键字
6、继承的特点:
- 继承只支持单继承,不支持多继承。
- 继承可以多层继承(有体系结构)
- 子类和父类是相对概念
十一、抽象类
1、表示形式
注:修饰符和参数列表要注意
抽象类:public abstract class 类名{}
抽象方法:public abstract void 方法名();
2、注意事项
- 抽象类不能创建对象,也就是不能实例化,否则编译不通过,但是可以创建子类继承
- 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
- 抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类
- 抽象类的子类必须重写父类的所有方法,否则编译也不通过,除非子类也是抽象类
十二、接口
1、定义与实现方式
public interface 接口名{}
class 类名 implments 接口名{
//重写接口中的抽象方法(必须)
//重写接口中的默认方法(可选)
}
2、基本实现和多实现
注:类与接口的关系是实现关系,即类实现接口,该类可以称为接口的实现类或者子类
抽象方法
默认方法
静态方法
私有方法
十三、多态
1、体现
父类类型 变量名 = new 子类对象;
2、向上转型和向下转型
向上转型:父类类型 变量名 = new 子类对象;
向下转型:父类类型 变量名 = (子类类型) 子类对象;
十四、final关键字
十五、权限修饰符
十六、内部类
1、概念
:如果在A类中新建一个B类,那么就称B类是内部类,A类是外部类
2、访问特点
- 内部类可以访问外部类成员,包括私有方法
- 外部类要想访问内部类,必须得新建一个内部类的对象
3、匿名内部类(重点)
- 是内部类的简化写法——new 父类名或接口名();
- 匿名内部类必须是实现一个父接口或者继承一个父类
- 也可以做为函数参数传递
十七、引用类型用法
1、class做为成员变量
2、interface做为成员变量
3、interface做为方法参数与返回值类型
十八、Object类、时期时间类
1、Object类
2、Date类
常用方法:
public long getTime() ;把日期时间转换成对应毫秒值
3、DateFormat类
常用方法:
public String format();把日期格式化字符串
public Date parse();把字符串转换成为Date对象
4、Calendar类
常用方法:
get和set方法
add和getTime方法
十九、System类
1、常用方法:
currentTimeMills方法
:获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
arraycopy方法
:将数组中指定的数据拷贝到另一个数组中。
二十、StringBuilder类
1、常用方法
append方法:添加任意类型数据的字符串形式,并返回当前对象自身
toString方法:将当前StringBuilder对象转换为String对象
二十一、包装类
基本类型 | java.lang中的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
注:从JDK5开始就自动完成装箱和拆箱动作
二十二、Collection接口
1、集合类的继承体系
2、Collection常用功能
public boolean add(E e)
: 把给定的对象添加到当前集合中 。public void clear()
:清空集合中所有的元素。public boolean remove(E e)
: 把给定的对象在当前集合中删除。public boolean contains(E e)
: 判断当前集合中是否包含给定的对象。public boolean isEmpty()
: 判断当前集合是否为空。public int size()
: 返回集合中元素的个数。public Object[] toArray()
: 把集合中的元素,存储到数组中。
List集合
1、常用方法
:get、add、remove、set方法
2、List子类
- ArrayList集合
- LinkList集合
Set接口
1、两个集合
- HashSet集合
- LinkedHashSet集合
Colletions集合工具类
二十三、Map集合
1、常用的集合
- HashMap集合
- LinkedHashMap集合
2、Map接口中常用的方法
public V put(K key, V value)
: 把指定的键与指定的值添加到Map集合中。public V remove(Object key)
: 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。public V get(Object key)
根据指定的键,在Map集合中获取对应的值。boolean containsKey(Object key)
判断集合中是否包含指定的键。public Set<K> keySet()
: 获取Map集合中所有的键,存储到Set集合中。public Set<Map.Entry<K,V>> entrySet()
: 获取到Map集合中所有的键值对对象的集合(Set集合)。
二十四、泛型
1、定义格式
修饰符 class 类名<代表泛型的变量> { }
二十五、Iterator迭代器
1、常用方法
public E next();返回迭代的下一个元素。
public boolean hasNext() ;如果任有元素要返回的话,则返回ture
二十六、异常
1、异常体系
:异常的的根类是java.lang.throwable,其下有两个子类java.lang.Exception和java.lang.Erro
2、异常处理
- 抛出异常throw
使用格式: 在方法内——thorw new 异常类名(参数)
- Objects非空判断
public static <T> T requireNonNull(T obj):查看指定引用对象不是null
- 声明异常throws
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ }
- 捕获异常try……catch
try{
编写可能会出现异常的代码
}catch(异常类型 e){
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}
- finally代码块
3、异常注意事项
- 多个异常分别处理。
- 多个异常一次捕获,多次处理。
- 多个异常一次捕获一次处理
- 运行时异常被抛出可以不处理。即不捕获也不声明抛出。
- 如果finally有return语句,永远返回finally中的结果,避免该情况.
- 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
- 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
4、自定义异常
二十七、线程
1、线程与进程
2、并发与并行
后继
Lambda表达式、反射、注解、IO流