java基础day08
java中的常用API-----01
1、说明
API(应用程序接口):
数据接口:获取数据接口(前后端分离)、数据可视化
功能接口:手机短信接口,邮箱发送接口,支付接口
Java中常用的API指常用的一些类的方法
2、api
1-Object
Object是java中所有类的直接或间接的父类--------有可以叫祖宗类
Object上的常用方法:
方法名 | 意义 |
---|---|
Object clone() | 本地方法(native),将当前对象进行克隆,被克隆对象所在类必须实现Cloneable的接口。克隆相当于赋值,基于存在的对象克隆一个属性相同的对象 |
void finalize | 当前类所创建的对象,如果没有引用时,被判定为垃圾对象,但是该对象不是被立即回收而是达到了垃圾回收器的条件时触发,在触发对象回收时,会调用该方法,完成资源的清理。这个概念有点类似于析构(当对象没有引用时,会自动调用方法,完成对象所持有资源的释放,并清理对象)但是java中的finalize,不等同于析构。java没有析构的概念。System.gc();唤醒垃圾回收器,清理垃圾对象。但是垃圾回收器不一定会立即执行。如果在对象不被使用时,释放对象所占用资源,应该自己编写相应的代码实现。 |
Class<?> getClass | 获取对象的实际类型 |
hashCode() | 可以认为是唯一的---同一个对象的哈希码一致,不同对象的哈希码不同。---取值大概是43亿个;哈希码的取值是散列的---随机分布在这43亿个取值范围中 |
boolean equals(0bject obi): | 用于比较两个对象的地址是否相同,通常情况下,equals方法需要重写实现当两个引用地址不同,但是属性相同时,也可以判定为相等。 |
String toString() | 将一个对象·作为字符串打印输出,则该方法的返回值就作为要打印的内容,一般作为代码调试 |
instanceof关键字,用于判断某个对象是否为指定的类型:
obj instanceof ClassName
null关键字:表示当前的引用地址为空,也作为对象中引用类型属性的默认值
null表示可以用于比较是否相等,但不能做其他任何操作,否则抛空指针异常
以下方法是Object的其他方法:与线程通信相关的方法
其他方法 | 意义 |
---|---|
notify() | 唤醒线程池中的任意一个线程 |
notifyAll() | 唤醒所有线程 |
wait(long timeout) | 线程等待(挂起),并设置超时时间 |
wait() |
2、String
定义: 表示字符串,并且是一个最终类
字符串拼接问题:
在使用""对字符串拼接时,实际上使用的是new stringBuilder().append()
如果遇到需要循环拼接字符串的场景,则应该使用stringBuilder(),节约内存空间.
在字符串拼接的应用中有两个类都可以处理:
StringBuilder:(默认),存在多线程并发安全问题,线程不安全类。并发效率高
StringBuffer: 加入了关键字synchronized,保证线程安全。并发效率相比stringBuilder较快 字符串string实际上是char valuel](字符数组)
常用方法:
方法 | 意义 |
---|---|
charAt(int index) | 获取指定位置上的字符;如果指定的下标不存在,则会出现StringIndexOutOfBoundsException |
length() | 获取字符串的长度 |
toCharArray() | 将字符串转化为一个字符数组 |
compareTo(String str) | 按字典顺序(实际上就是按照从小到大的顺序)来比较两个字符串 |
concat(String str) | 拼接两个字符串,返回一个新字符串 |
getBytes(String charsetName) | 将字符串按照指定的编码转化为字节数组 |
equals(Object o) | 比较两个字符串是否一致。比较的是两个字符串的实际值 |
endsWith(String suffix) | 判断是否是指定的结尾 |
startsWith(String suffix) | 判断是否是指定的开头 |
contains(String str) | 判断字符串中是否包含str。 |
hashCode() | -获取对象的哈希码---注意,同一个字符串的哈希码在任何条件下都是一样的。 |
String(char[] cs, int index, int offset) | 表示从字符数组cs的第index位开始,将offset个元素转化为字符串 |
indexOf(int ch, int index | 表示从字符串的第index位开始,向后寻找字符ch第一次出现的位置;如果找不到,则返回-1 |
import java.util.Arrays;
public class Demo4Exercise {
public static void main(String[] args) {
// charAt(int index)---获取指定位置上的字符;如果指定的下标不存在,则会出现StringIndexOutOfBoundsException
String str1="abcd";
System.out.println(str1.charAt(0));//a------可以把字符串看出数组的下标
// length()---获取字符串的长度
String str2="abcd";
System.out.println(str2.length());//4---可以看作字符的位数
// toCharArray()---将字符串转化为一个字符数组
String str3="abcd";
char[] chars = str3.toCharArray();
//遍历数组也可以直接使用toString方法
for (char ch:chars
) {
System.out.println(ch);
}
// compareTo(String str)---按字典顺序(实际上就是按照从小到大的顺序)来比较两个字符串
String str401="Qbz";
String str402="Bac";
int i = str401.compareTo(str402);//大于多少就是正数多少,反之负多少,如果是因为字符串比较的就是首位---大小写不分
System.out.println(i);
// concat(String str)---拼接两个字符串,返回一个新字符串---------也可以直接使用+,
String str501="abcd";
String str502="abcd";
String concat = str501.concat(str502);
String s = str501 + str502;
System.out.println(concat);//abcabc
System.out.println(s);//abcabc
// getBytes(String charsetName)---将字符串按照指定的编码转化为字节数组
String str6="abcd";
byte[] bytes = str6.getBytes();//将字符串的每个字符进行按照编码写进一个字节数组,因为是字节数组里面传入的就是每个字符对应的ascli码,如果是使用的汉字则再不同的编码里对应的数的位数也不同
System.out.println(Arrays.toString(bytes));
// equals(Object o)---比较两个字符串是否一致。比较的是两个字符串的实际值
String str701="abcd";
String str702="abcd";
System.out.println(str701.equals(str702));//ture 比较值以及内容 “==”比较的是值
// endsWith(String suffix)---判断是否是指定的结尾
String str8="abcd";
System.out.println(str8.endsWith("c"));//false
// startsWith(String suffix)---判断是否是指定的开头
String str9="abcd";
System.out.println(str9.startsWith("b", 1));//true 就是判断是否在1索引处以b开始
System.out.println(str9.startsWith("b"));//false就是判断是否以b开始
// contains(String str) ---判断字符串中是否包含str。
String str10="abcd";
System.out.println(str10.contains("ab"));//true
System.out.println(str10.contains("ad"));//false--------虽然a和d都存在,但是ad是一个新的字符了不是分开判断
System.out.println(str10.contains("cd"));//true
System.out.println(str10.contains("e"));//false
// hashCode()---获取对象的哈希码---注意,同一个字符串的哈希码在任何条件下都是一样的。
String str1101="abcd";
String str1102="abcd";
int s1101 = str1101.hashCode();
int s1102 = str1102.hashCode();
if (s1101==s1102){
System.out.println("对");
}else {
System.out.println("错");
}
// String(char[] cs, int index, int offset)---表示从字符数组cs的第index位开始,将offset个元素转化为字符串
char[] arr={'a','b','c','d','e','f','g'};
String s1 = new String(arr, 2, 5);
System.out.println(s1);//cdefg
// indexOf(int ch, int index)---表示从字符串的第index位开始,向后寻找字符ch第一次出现的位置;如果找不到,则返回-1
String str13="abcdefg";
System.out.println(str13.indexOf('d',2));
}
}