9、 常用API(1)

引入:API(Application Programming Interface)应用程序编程接口。Java API指的就是JDK中提供的各种功能的Java类。源代码-在JDK中有src.zip文件,这个文件夹是所有Java类的源文件。可以在其中查看相对应的类的源码。我们可以通过查帮助文档来了解Java提供的API如何使用。

Object类:Object类是Java语言中的根类,即所有类的父类。其所有方法子类都可以使用。其中的toString、equals是非常常用的方法。

☆当调用System.out.println()方法时,实际上是调用被打印者的toString方法,返回字符串,再将字符串打印的过程。但是Object类的toString方法返回的为对象地址值,即对象的类型+@+哈希值(地址值)。

☆由于引用类型不能像基本类型一样使用==运算符来进行运算判断,所以判断两个对象是否”相同”使用的是equals方法。Object类的equals方法比较的为对象地址值。(如果有别的需求则按照别的需求来重写equals方法!)
☆其他方法:public final Class<?> getClass() //返回对象数据类型
public int hashCode() //返回对象哈希值(地址值)(常作为识别不同对象的依据)
protected void finalize() throws Throwable //垃圾回收器调用,执行清除资源

String类:字符串是日常开发过程中最常用的。代表一个字符序列,其底层为字符数组。我们之前认为的一些高深莫测的问题其实都是通过字符串的拼写来完成的,比如在浏览器发送一个HTTP请求,实际就是发送一个符合规定格式的字符串。字符串是特殊的引用类型,表现在字符串是常量,每一个字符串的值都是无法被改变的(请一定区分开是对象内容改变还是变量指向的地址值改变),存在于内存当中的特殊区域——常量池,直接输出字符串对象输出的是该对象中的数据。。当使用字面值常量来表示字符串时,字符串一旦生成,在常量池中是不可变的,那么不管有多少个引用,只要他们指向的字符串值相同,即就是这些引用指向同一片内存区域。但是,如果使用new关键字创建对象,不使用字面值常量,则其仍为堆内存中普通的对象,各自有各自的地址。

public class Test{
	public static void main(String[] args) {
	String s1 = new String("hello");
	String s2 = "hello";
	String s3 = "hello";
	System.out.println(s1==s2); //false
	System.out.println(s1==s3); //false
	System.out.println(s2==s3); //true
	}
}

在这里插入图片描述
☆构造方法:
public String(String original);
public String(char[] value);
public String(char[] value,int offset,int count);
直接赋值也可以是一个对象。

public class Test {
	public static void main(String[] args) {
	String s1 = new String("hello");//String(String original):把字符串数据封装成字符串对象
	char[] chs = {'h','e','l','l','o'};
	String s2 = new String(chs);//String(char[] value):把字符数组的数据封装成字符串对象
	String s3 = new String(chs,1,3);//String s3 = new String(chs,0,chs.length);s3="ell"
	String s4 = "hello";
	}
}

☆常见方法
判断功能方法:boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾
获取功能方法:int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符
int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1
String substring(int start):从start开始截取字符串到字符串结尾
String substring(int start,int end):从start开始,到end结束截取字符串;包括start,不包括end

//字符串的遍历
public class Test {
	public static void main(String[] args) {
	String s = "abcde";
	for(int x=0; x<s.length(); x++) {System.out.println(s.charAt(x));}
	}
}
//统计字符串中大写、小写以及数字字符个数
public class Test {
	public static void main(String[] args) {
	int bigCount,smallCount,numberCount;
	Scanner sc = new Scanner(System.in);//键盘录入一个字符串数据
	System.out.println("请输入一个字符串数据:");
	String s = sc.nextLine();
	for(int x=0; x<s.length(); x++) {
	char ch = s.charAt(x);
	if(ch>='A' && ch<='Z') {bigCount++;}
	else if(ch>='a' && ch<='z') {smallCount++;}
	else if(ch>='0' && ch<='9') {numberCount++;}
	System.out.println("大写字符:"+bigCount+"个");
	System.out.println("小写字符:"+smallCount+"个");
	System.out.println("数字字符:"+numberCount+"个");
	}
	}
}

☆转换功能方法:char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串

//键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。
public class Test {
	public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个字符串:");
	String s = sc.nextLine();
	String s1 = s.substring(0, 1);//截取首字母
	String s2 = s.substring(1);//截取除了首字母以外的字符串
	String s3 = s1.toUpperCase()+s2.toLowerCase();
	}
}

☆去除空格和分割功能方法:String trim()去除字符串两端空格
String[] split(String str)按照指定符号分割字符串

public class Test {
	public static void main(String[] args) {
	String s = "  hello  world  ";
	System.out.println(s.trim());//输出hello   world
	String s1 = "aa,bb,cc";
	String[] strArray = s4.split(",");
	String a="";
	for(int x=0; x<strArray.length; x++) {
	a+=strArray[x];
	}
	System.out.println(a);//aabbcc
	}
}

StringBuilder类:我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题。String的内容是固定的。StringBuilder的内容是可变的。

☆方法:构造方法:public StringBuilder()
public int capacity():返回当前容量,理论值
public int length():返回长度(字符数),实际值
public StringBuilder append(任意类型):添加数据,并返回自身对象(这种特性可以链式编程)
public StringBuilder reverse():反转功能
public String toString():通过toString()就可以实现把StringBuilder转成String
StringBuilder(String str):通过构造方法就可以实现把String转成StringBuilder

//判断对称字符串
public class Demo {
	public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个字符串:");
	String s = sc.nextLine();
	String result = new StringBuilder(s).reverse().toString();
	System.out.println(result.equals(s));
	}
}

StringBuffer类:字符串是不可变的,所以每拼写一次字符串均会产生新的对象,而字符串缓冲区是一个可变的字符串临时存储区域。在该区域内存储、拼写需要的字符串,当需要真正的字符串时,再将存储区内的字符串取出,这样全部过程只有一个字符串缓冲区对象,更为高效。StringBuffer是线程同步的(安全的),StringBuilder是不同步的(不安全的),二者方法完全一致。线程同步操作需要消耗更多的系统资源,所以更慢,而在日常开发过程中,同一个字符串的操作通常不会涉及多线程问题,所以在不考虑安全问题的情况下,尽量使用速度更快的StringBuilder。

猜你喜欢

转载自blog.csdn.net/ao__ao/article/details/83024982
9-1
今日推荐