java API 个人学习笔记

1. API

API是一些预先定义好的函数

  1. 我们无需理解起内部机制和细节,就可以使用其功能
  2. API也作为规则,面向接口开发
  3. java.lang包是java的核心,包含了java基础类,无需导包,默认存在
  4. java.util包是java中的工具包,包含各种常用工具包

2. Object

每个类都使用Object作为超类(顶级父类),一个类没有明确指定父类,默认继承Object类。

常用方法:

toString():默认返回对象地址值,重写后打印对象类型+属性
hashCode():返回对应对象的哈希码值
equals():默认实现==比较两个对象地址值 String默认重写了equlas(),比较的是两个字符串的具体内容

3.String

String底层是封装的char[]数组对象,被final修饰

3.1 创建String对象的两种方法:

  1. 通过创建对象:存放在堆内存中
    char[] value = {‘a’,‘b’,‘c’};
    String s = new String(value);
  2. 直接创建:底层也会new String(),存放在堆中常量池,效率高
    String s = “abc”;

3.2 String的常用方法

length()-查看字符串的长度
charAt()—获取指定下标处位置上的字符
lastIndexOf()-某个字符最后一次出现的位置
substring()-截取子串,如果参数有两个左闭右开[1,5)
equals()-判断两个串是否相等,String重写了Object的此方法,内容相同就返回true
startsWith()-判断是不是以参数开头
endsWith()–判断是不是以参数结尾
split()—以指定字符分割
trim()-去掉首尾两端的空格
getBytes()-把串转换成数组
toUpperCase()-变成全大写
toLowerCase()-变成全小写
String.valueOf(10)-把int类型的10转换成String类型

StringBuilder/StringBuffer

append()方法对String拼接的优化

4.正则表达式

正确的字符串格式规则。 常用来判断用户输入的内容是否符合格式的要求,严格区分大小写。
常用方法matches():判断当前字符串是否匹配正则表达式

5.包装类型

byte,short,long,double,float,boolean首字母大写为对应包装类型
int包装类型为Integer,char包装类型为Character
数字包装类(Byte,Short,Integer,Double,Float)的抽象父类为Number,提供了获取值的方法(比如byteValue())

5.1 Integer、Double

Integer创建对象:

  1. new Integer(2);
  2. Integer.valueOf(2); 包含256个缓冲对象,范围-128~127。
    使用valueOf()时,指定范围内的值直接访问缓存对象。

Double创建对象:

  1. new Double(2.7);
  2. Double.valueOf(2.7); //和new没区别

常用方法:

Double.parseDouble(“String”);//Double字符串解析为十进制
Integer.parseDouble(“String”);//Integer字符串解析为十进制整数

5.2 自动装箱/拆箱

自动装箱:把基本类型包装成对应包装类型的过程
自动拆箱:从包装类型的值,自动变成基本类型的值

6.BigDecimal

创建对象:

BigDecimal(double val):将double转换为BigDecimal
BigDecimal(String val):将String类型字符串的形式转换为BigDecimal

常用方法:

Add(BigDecimal bd) : 做加法运算
Subtract(BigDecimal bd) : 做减法运算
Multiply(BigDecimal bd) : 做乘法运算
Divide(BigDecimal bd) : 做除法运算,除不尽时会抛异常

由于double本身进制转换问题,使用BigDecimal还会有不精确现象,所以使用重载的参数类型是String的构造函数

7. I/O流

7.1 Stream

流只能单方向流动
程序角度思考in为写入程序,out为从程序输出
数据只能从头到尾顺序的读写一次

7.2 字节流

字节流–针对二进制文件。

继承关系:

字节输入流:
InputStream:抽象类,不能创建对象,作为超类,提供共性方法
FileInputStream:文件字节输入流,子类,操作文件的字节输入流
BufferedInputStream:子类,缓冲字节输入流,高效
ObjectInputStream:反序列化流
字节输出流:
OutputStream:抽象类,不能创建对象,作为超类,提供共性方法
FileOutputStream:文件字节输出流,子类,操作文件的字节输出流
BufferedOutputStream:子类,缓冲字节输出流,高效
ObjectOutputStream:序列化流

7.3 字符流

字符流–针对文本文件

继承关系:

字符输入流:
Reader:抽象类,不能创建对象,作为超类,提供共性方法
FileReader:子类,操作文件的字符输入流,
BufferedReader:子类,缓冲字符输入流
字符输出流:
Writer:抽象类,不能创建对象,作为超类,提供共性方法
FileWriter:子类,操作文件的字符输出流,
BufferedWriter:子类,缓冲字符输出流

8.泛型、集合

8.1泛型Generics

特点:

可以通过泛型约束集合中的元素类型,在编译期间进行类型检查
可以实现通用代码的编写,使用表示元素的类型是Element类型
编译后会被删除,不出现源码中,不会影响JVM运行时性能
泛型可以在接口、类、方法上使用

8.2集合 Collection接口

集合的继承:

Collection :父级接口
List :接口,数据有下标,有序,可重复
ArrayList: 子类
LinkedList :子类
Set :接口,数据无下标,无序,不可重复
HashSet:子类
Map:接口,以<K,V>键值对的方式存数据
HashMap:子类

方法:

add():将指定对象添加到集合末尾
addAll():将指定集合中所有元素添加到此集合中末尾
remove():将指定对象从集合中移除
isEmpty():判断当前集合是否为空
size():查看此集合的元素数
contains():判断集合是否包含指定元素
toArray():将此集合转化为 数组
iterator():返回此集合的迭代器,用于遍历集合中的对象

9.进程和线程

进程的特点:独立性、动态性、并发性
线程:是操作系统OS能够进行运算调度的最小单位。
进程和线程的关系:一个操作系统中可以有多个进程,一个进程中可以包含一个线程(单线程程序),也可以包含多个线程(多线程程序),每个线程在共享同一个进程中的内存的同时,又有自己独立的内存空间.
实现多线程的方式:继承Thread 实现Runnable
线程的生命周期:

新建状态、就绪状态、运行状态、阻塞状态(等待阻塞,同步阻塞,其他阻塞)、死亡状态

多线程不安全问题的条件:在多线程程序中 + 有共享数据 + 多条语句操作共享数据
多线程不安全问题的解决:synchronized修饰可能出现问题的类,synchronized修饰代码块

10. 单例设计模式

单例设计模式最重要的是确保对象只有一个

  1. 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。
  2. 在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。
  3. 定义一个静态方法返回这个唯一对象。

10.1 懒汉式

不管以后会不会使用到该实例化对象,先创建了再说

优点:实现起来简单,没有多线程同步问题。
缺点:在某些特定条件下会耗费内存

public class Singleton {

    // 将自身实例化对象设置为一个属性,并用static、final修饰
    private static final Singleton instance = new Singleton();
    
    // 构造方法私有化
    private Singleton() {}
    
    // 静态方法返回该实例
    public static Singleton getInstance() {
        return instance;
    }
}

10.2 懒汉式

先不急着实例化出对象,等要用的时候才创建对象–延迟加载思想

优点:在某些特定条件下会节约了内存
缺点:有线程安全问题,可以通过加锁方式(同步代码块/同步锁)解决

public class Singleton {

    // 将自身实例化对象设置为一个属性,并用static修饰
    private static Singleton instance;
    
    // 构造方法私有化
    private Singleton() {}
    
    // 静态方法返回该实例
    public static synchronized Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

11. 反射

反射可以在运行时获取一个类的所有信息

获取字节码对象

Class.forName(“类的全路径”);
类名.class
对象.getClass();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值