01-常用API--(API、Object、String、StringBuilder)

常用API

1.API简介
1.1API概念
API全名
application(应用) programming(程序) interface(接口)
API是应用程序编程接口
Java API
Java API就是sun公司提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用,为使用提供的帮助文档。
文档注释
在JDK中有src.zip文件,这个文件夹是所有Java类的源文件,可以在其中查看相对应的类源码。源码类、方法等代码上,就有对应的文档注释,也就是API的原材料。如果直接通过源代码的文档注释来了解api的使用,将过于繁琐。
帮助文档
我们可以通过javadoc.exe将文档注释,转换成html格式的帮助文档。实际使用中人们觉得html格式的文档查询时也不是非常灵活。再借助第三方工具,将html文档转成chm文档,我们之后将通过chm帮助文档来查看Java提供的API使用情况。
1.2、API帮助文档阅读方式学习
在这里插入图片描述
2.常用类
2.1Object类
Object类是Java语言中的根类,即所有类的父类。其中描述的所有方法子类都可以使用。其中toString、equals是非常常用的方法。
在这里插入图片描述
2.1.1toString方法
toString方法返回该对象的字符串表示。
输出格式:“对象类型@内存地址值”。例如:java.lang.Object@1db9742
当我们使用System.out.println( obj ) 输出对象变量时,其实是一种省略写法,完整内容是 System.out.println( obj.toString() )。

public class Person {
	private int age ;
	//根据Person类的属性重写toString方法
	public String toString() {
		return "Person [age=" + age + "]";
	}
}

2.1.2equals方法
equals用于比较两个对象是否相等,默认实现使用==比较地址值。
在开发中要比较两个对象是否相同,经常会根据对象中的字段值进行比较,所以子类经常重写equals方法。例如:String就重写了equals,比较每一个字符是否相同。
在这里插入图片描述
再例如:描述人这个类,要求根据年龄判断是否是同龄人

class Person {
	int age ;
	//复写父类的equals方法,实现自己的比较方式
	public boolean equals(Object obj) {
		//判断当前调用equals方法的对象和传递进来的对象是否是同一个
		if(this == obj){
			return true;
		}
		//判断传递进来的对象是否是Person类型
		if(!(obj instanceof Person)){
			return false;
		}
		//将obj向下转型为Perosn引用,访问其属性
		Person p = (Person)obj;
		return this.age == p.age;
	}
}

2.1String类
2.1.1字符串概念
字符串是由多个字符组成的一串数据
字符串可以看成是字符数组
2.1.2字符串的特殊性
字符串是特殊的引用类型,字符串是常量,也就是说值在创建之后不能更改。而常量在内存中存储在一个特殊区域——常量池。需要注意的是,字符串本身不能改变,但变量中记录的地址值可以改变。
在这里插入图片描述
如果使用字面值常量来表示字符串时,不管有多少个引用,只要他们指向的字符串值相同,所有变量都指向同一片内存区域。
例如:

//演示字符串可以共享
String str1 = “czxy”;
String str2 = “czxy”;
System.out.println(str1==str2);

输出的结果为true,就说明str1的引用和str2的引用指向的同一片内存区域。
在这里插入图片描述
如果使用new关键字创建对象,而不是使用字面值常量,那么String与其他引用类型没有区别,都在堆内存开发开辟空间。
例如:

public class Demo02String {
	public static void main(String[] args) {
		String s1 = new String("hello");
		String s2 = "hello";
		
		System.out.println("s1:"+s1);
		System.out.println("s2:"+s2);
		
		System.out.println("s1==s2:"+(s1==s2));		
		String s3 = "hello";
		System.out.println("s1==s3:"+(s1==s3)); 
		System.out.println("s2==s3:"+(s2==s3)); 
	}
}

在这里插入图片描述
2.1.3常见构造方法
在这里插入图片描述

publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//方式1:String(String original):把字符串数据封装成字符串对象
		Strings1 = new String("hello");
		System.out.println("s1:"+s1);
		System.out.println("---------");
		
		//方式2:String(char[] value):把字符数组的数据封装成字符串对象
		char[] chs = {'h','e','l','l','o'};
		String s2 = new String(chs);
		System.out.println("s2:"+s2);
		System.out.println("---------");
		
		//方式3
		//String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
		//String s3 = new String(chs,0,chs.length);
		String s3 = new String(chs,1,3);
		System.out.println("s3:"+s3);
		System.out.println("---------");
		
	}
}

2.1.4常见方法
在这里插入图片描述
断功能方法
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾

publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//创建字符串对象
		String s1 = "hello";
		String s2 = "hello";
		String s3 = "Hello";
		
		//boolean equals(Object obj):比较字符串的内容是否相同
		System.out.println(s1.equals(s2));
		System.out.println(s1.equals(s3));
		System.out.println("-----------");
		
		//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
		System.out.println(s1.equalsIgnoreCase(s2));
		System.out.println(s1.equalsIgnoreCase(s3));
		System.out.println("-----------");
		
		//boolean startsWith(String str):判断字符串对象是否以指定的str开头
		System.out.println(s1.startsWith("he"));
		System.out.println(s1.startsWith("ll"));
	}
}

获取功能方法
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

publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//创建字符串对象
		String s = "helloworld";
		
		//int length():获取字符串的长度,其实也就是字符个数
		System.out.println(s.length());
		System.out.println("--------");
		
		//char charAt(int index):获取指定索引处的字符
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(1));
		System.out.println("--------");
		
		//int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1
		System.out.println(s.indexOf("l"));
		System.out.println(s.indexOf("owo"));
		System.out.println(s.indexOf("ak"));
		System.out.println("--------");
		
		//String substring(int start):从start开始截取字符串到字符串结尾
		System.out.println(s.substring(0));
		System.out.println(s.substring(5));
		System.out.println("--------");
		
		//String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
		System.out.println(s.substring(0, s.length()));
		System.out.println(s.substring(3,8));
	}
}

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

publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//创建字符串对象
		String s = "abcde";
		
		//char[] toCharArray():把字符串转换为字符数组
		char[] chs = s.toCharArray();
		for(intx=0; x<chs.length; x++) {
			System.out.println(chs[x]);
		}
		System.out.println("-----------");
		
		//String toLowerCase():把字符串转换为小写字符串
		System.out.println("HelloWorld".toLowerCase());
		//String toUpperCase():把字符串转换为大写字符串
		System.out.println("HelloWorld".toUpperCase());
	}
}

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

publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//创建字符串对象
		String s1 = "helloworld";
		String s2 = "  helloworld  ";
		String s3 = "  hello  world  ";
		System.out.println("---"+s1+"---");
		System.out.println("---"+s1.trim()+"---");
		System.out.println("---"+s2+"---");
		System.out.println("---"+s2.trim()+"---");
		System.out.println("---"+s3+"---");
		System.out.println("---"+s3.trim()+"---");
		System.out.println("-------------------");
		
		//String[] split(String str)
		//创建字符串对象
		String s4 = "aa,bb,cc";
		String[] strArray = s4.split(",");
		for(intx=0; x<strArray.length; x++) {
			System.out.println(strArray[x]);
		}
	}
}

2.2StringBuilder类
在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区。
String 是不可变的
StringBuilder 是可变的
2.2.1字符串缓冲区概念
字符串是不可变的,所以使用+拼凑字符串时,均会产生多个新对象,而字符串缓冲区相当于一个不限制大小的字符数组,当我们追加新字符串时,它只需将新字符串添加到字符数组即可,等我们需要使用整个字符串时,调用toString()生成新字符串。
在Java中常见的字符缓冲区有:StringBuilder、StringBuffer。我们主要讲解StringBuilder。
扩展:
StringBuilder是线程多用户同时访问可能存在安全问题,但性能好。StringBuffer是多用户同时访问不存在安全问题,但性能差。开发中常用StringBuilder。二者方法完全一致。
2.2.2常见方法
在这里插入图片描述
2.2.3链式调用
在StringBuilder的方法中,有许多方法的返回值都是该类型本身,如append方法,我们在调用append之后,可以继续调用append方法,依次类推,可以进行多次调用,这种调用方式叫做链式调用。
如:

StringBuilder sb = new StringBuilder();
sb.append(“aaa”)
.append(“bbb”)
.append(“ccc”)
.append(“ddd”) ;
String data = sb.toString(); //data的结果为aaabbbcccddd

总结
1、API指Java当中的类与接口。通常将其说明文档也说成API。
2、Object类是所有Java类的父类,唯一一个没有父类的类。其所有方法在所有类中都存在。
toString方法返回对象的字符串。会在调用println方法中自动调用,没有重写时会返回对象地址,通常会重写。
3、String类是字符串类,最常使用的引用数据类型,包含各种操作字符串的方法,通常会返回一个新的字符串。
4、StringBuilder类是字符串缓冲类,用于拼写字符串。当遇到复杂的字符串时,通常会使用StringBuilder拼写好字符串后再返回。

发布了186 篇原创文章 · 获赞 379 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104587568