其他分享
首页 > 其他分享> > Day008(API使用、几个常用类的使用)

Day008(API使用、几个常用类的使用)

作者:互联网

今日内容

Java的API

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

Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。

在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。

Object类

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

equals方法

方法摘要
boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”

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

在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。

由于IDE提供自动编写的功能所以对于怎么写可以并不用太过于关注,但是需要知道怎么写。

/*
 	描述人这个类,并定义功能根据年龄判断是否是同龄人
 	由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
 	在方法体中根据类的属性值进行比较
 */
class Person extends Object{
	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;
	}
}

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

toString 方法

方法摘要
String toString()
返回该对象的字符串表示

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

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

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

String 类

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改,就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。

//String的源码,其内部就是char类型的数组
public final class String{
    private final char value[];
}
//下面是两种常用的创建字符串方式。第一种优于第二种。
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3==s4);//false
System.out.println(s3.equals(s4));//true,
//因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)

String类构造方法

String.png

	String s1 = new String(); //创建String对象,字符串中没有内容
	//字节数组创建String
	byte[] bys = new byte[]{97,98,99,100};
	String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
	String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素
	//字符数组作为参数传递
	char[] chs = {’a’,’b’,’c’,’d’,’e’};
	String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
	String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

	String s6 = new String(“abc”); //创建String对象,字符串内容为abc

String类的方法查找

int length()
返回此字符串的长度
String str = "abcde";
int len = str.length();
System.out.println("len="+len);
String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串
String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串
String str = "abcde";
String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符
String s2 = str.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符
System.out.println("str="+str);
System.out.println("s1="+s1);
System.out.println("s2="+s2);

880ba5a972d77fe09b56d9fdb857adb9.png

String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();

3ff116efea6dba50ead8cbfb0769acad.png

equals:

String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);//true
boolean b2 = str.equals(str3);//false

equalsIgnoreCase:

String str = "ABcd";
String str1 = "abcd";
boolean ba = str.equalsIgnoreCase(str1);
System.out.println(ba);//true
String toString()
返回对象本身(它已经是一个字符串)
String str = new String("hello");
System.out.println( str.toString() );
System.out.pintln( str );

字符串缓冲区

StringBuffer类

StringBuffer又称为可变字符序列,它是一个类似于String的字符串缓冲区。

即它就是一个容器,容器中可以装很多字符串,并且能够对其中的字符串进行各种操作。

StringBuffer.png

创建一个字符串缓冲区对象。用于存储数据。
StringBuffer sb = new StringBuffer();
sb.append("haha"); //添加字符串
sb.insert(2, "it");//在指定位置插入
sb.delete(1, 4);//删除
sb.replace(1, 4, "cast");//替换指定范围内的内容
String str = sb.toString();

注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容

对象的方法链式调用

调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。

//创建一个字符串缓冲区对象。用于存储数据。
StringBuffer sb = new StringBuffer();
//添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。
String str = sb.append(true).append("hehe").toString();

StringBuilder类

StringBuilder类,它也是字符串缓冲区

它也是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

Date类

类 Date 表示特定的瞬间,精确到毫秒。

//创建日期对象,把当前的毫秒值转成日期对象
Date date = new Date(1607616000000L);
System.out.println(date);
//打印结果:Fri Dec 11 00:00:00 CST 2020

getTime()方法

DateFormat类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat****类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

我们通过这个类可以帮我们完成日期和文本之间的转换。

构造方法:

SimpleDateFormat(String pattern)

用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

DateFormat类方法:

format(Data data)

将一个Data格式化为日期/时间字符串

代码演示:
//创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化
Date date = new Date(1607616000000L);
String str_time = df.format(date);
System.out.println(str_time);//2020年12月11日

DateFormat类的作用:

指定格式的具体规则我们可参照SimpleDateFormat类的说明,这里做简单介绍,规则是在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:

当出现y时,会将y替换成年

当出现M时,会将M替换成月
当出现d时,会将d替换成日
当出现H时,会将H替换成时
当出现m时,会将m替换成分
当出现s时,会将s替换成秒

System类

out是System的一个变量,里面有个类型是println

BigDecimal

Snipaste_2019-04-11_14-13-38.png

标签:String,对象,equals,API,Day008,str,使用,字符串,new
来源: https://blog.csdn.net/MagicStarts/article/details/89280702