Java学习历程记录(一)
阅读原文时间:2023年07月08日阅读:2

一、类与对象


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、构造方法的注意事项以及标准代码

注意事项:

  1. 如果你不提供构造方法,系统会自动给出一个无参构造方法。
  2. 如果你写了构造方法,系统不再提供无参构造方法。
  3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数

标准代码——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 父类名或接口名();
  • 匿名内部类必须是实现一个父接口或者继承一个父类
  • 也可以做为函数参数传递

十七、引用类型用法


十八、Object类、时期时间类

常用方法:

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集合

get、add、remove、set方法

  • ArrayList集合
  • LinkList集合

Set接口

1、两个集合

  • HashSet集合
  • LinkedHashSet集合


二十三、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 requireNonNull(T obj):查看指定引用对象不是null

  • 声明异常throws

    修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }

  • 捕获异常try……catch

    try{
         编写可能会出现异常的代码
    }catch(异常类型  e){
         处理异常的代码
         //记录日志/打印异常信息/继续抛出异常
    }

  • finally代码块

3、异常注意事项

  1. 多个异常分别处理。
  2. 多个异常一次捕获,多次处理。
  3. 多个异常一次捕获一次处理
  • 运行时异常被抛出可以不处理。即不捕获也不声明抛出。
  • 如果finally有return语句,永远返回finally中的结果,避免该情况.
  • 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
  • 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出

4、自定义异常

二十七、线程

1、线程与进程

2、并发与并行

后继

Lambda表达式、反射、注解、IO流