Java常用基础API

简介

Java 的API(API: Application(应用) Programming(程序) Interface(接口))

Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只要会使用即可。在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。

1 Object类

Object类是Java语言中的根类,即所有类的父类,史祖。它所描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

在Object类众多方法中,我们先看看equals方法和toString方法。

1.1 equals方法

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较,Object类中的equals方法内部使用的就是==比较运算符。

在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。如果没有重写该方法,那么他和==号等价。

注意:在重写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

1.2 toString方法

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值(哈希值)。

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

2. String类

字符串是否以指定字符串开头。结尾同理。startsWith/endsWith。

字符串中是否包含另一个字符串。

String str = "abcde";

int index = str.indexOf("bcd"); //判断是否包含,包含则返回第一次出现该字符串的索引,不包含则返回-1

boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false

将字符串转成一个字符数组。或者字节数组。

String str = "abcde";

char[] chs = str.toCharArray();

byte[] bytes = str.getBytes();

3. 字符串缓冲区

3. 1 StringBuffer类

StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

StringBuffer sb = new StringBuffer();

sb.append("haha"); //添加字符串

sb.insert(2, "it");//在指定位置插入

sb.delete(1, 4);//删除

sb.replace(1, 4, "cast");//替换指定范围内的内容

String str = sb.toString();

StringBuffer sb = new StringBuffer();

String str = sb.append("Hello").append("hehe").toString();

无论多少数据,数据是什么类型,只要最终目的是变成字符串就可以使用StringBuffer这个容器

3. 2 StringBuilder

StringBuilder类,它也是字符串缓冲区,它也是一个可变的字符序列。类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。一般开发建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

这时候就要谈一谈String、StringBuffer、StringBuilder 的异同了。

(1)、可变不可变

String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象。

StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改,不是生成新的对 象;使用场景:对字符串经常改变情况下,主要方法:append(),insert()等。

(2)、线程是否安全

String:对象定义后不可变,线程安全。

StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区 大量数据。

StringBuilder:是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。

(3)、共同点

StringBuilder 与 StringBuffer 有公共父类 AbstractStringBuilder(抽象类)。

StringBuilder、StringBuffer 的方法都会调用 AbstractStringBuilder 中的公共方法,如 super.append(...)。

只是 StringBuffer 会在方法上加 synchronized 关键字,进行同步。最后,如果程序不是多线程的,那么使用 StringBuilder 效率高于 StringBuffer。

4. 正则表达式

正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。

public boolean matches(String regex) //判断字符串是否匹配给定的规则

public String[] split(String regex)  //根据给定正则表达式的匹配规则,拆分此字符串

5. 基本数据类型包装类

5.1 基本数据类型

类型 字节数 默认值 包装类型

byte 1个字节 0   byte

short 2个字节 0   Short

int 4个字节 0 Integer

long 8个字节 0l Long

float 4个字节 0.0f Float

double 8个字节 0.0 Double

char 2个字节 0 Character

boolean 字节数视情况而定 默认值 false:0为false 非0为true Boolean

将字符串转换成基本数据类型方式:

parseXXX(String s);其中XXX表示基本类型,参数为可以转成基本类型的字符串,如果字符串无法转成基本类型,将会发生数字转换的问题NumberFormatException。

其中Boolean、Double、Float 只有这一种parseXX,但是Integer、Short、Long、Byte还有另外一种形式:

public static int parseInt(String s,int radix)

public static short parseShort(String s,int radix)

public static long parseLong(String s,int radix)

public static byte parseByte(String s,int radix)

将基本数值转成字符串有3种方式:

①基本类型直接与""相连接即可;

②调用String的valueOf方法;

③调用包装类中的toString方法;

5.2 自动装箱拆箱

自动装箱:基本数值转成对象

自动拆箱:对象转成基本数值

Integer i = 4;

i = i + 5;

6. System类

6.1 概念

System代表程序所在系统,提供了对应的一些系统属性信息,和系统操作。System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象。System类中的都是static方法,类名访问即可。在JDK中,有许多这样的类。

6.2 常用方法

currentTimeMillis() 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值

exit(int status) 用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态

gc() 用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。

getProperty(String key) 用来获取指定(字符串名称)中所记录的系统属性信息

7. Arrays类

7.1  概念

此类包含用来操作数组(比如排序和搜索)的各种方法。需要注意,如果指定数组引用为 null,则访问此类中的方法都会抛出空指针异常NullPointerException。

7.2 常用方法

sort方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序)

//源arr数组元素{1,5,9,3,7}, 进行排序后arr数组元素为{1,3,5,7,9}

int[] arr = {1,5,9,3,7};

Arrays.sort( arr );

toString方法,用来返回指定数组元素内容的字符串形式

int[] arr = {1,5,9,3,7};

String str = Arrays.toString(arr); // str的值为[1, 5, 9, 3, 7]

binarySearch方法,在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组。

int[] arr = {1,3,4,5,6};

int index = Arrays.binarySearch(arr, 4); //index的值为2

int index2= Arrasy.binarySearch(arr, 2); //index2的值为-1

猜你喜欢

转载自blog.csdn.net/qq_36235275/article/details/81137897