Day008(API使用、几个常用类的使用)
作者:互联网
今日内容
- API使用
- Object类
- String类
- Date日期类
- System类
- 包装类与字符串类型的装换
- BigDecimal大数据运算
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方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)
- s3创建,在内存中只有一个对象。这个对象在字符串常量池中
- s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中
String类构造方法
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);
- 将字符串转成一个字符数组。或者字节数组
String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();
- 判断两个字符串中的内容是否相同
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 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****类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
我们通过这个类可以帮我们完成日期和文本之间的转换。
- 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类的作用:
- 以将一个符合指定格式的字符串转为一个Date对象。
指定格式的具体规则我们可参照SimpleDateFormat类的说明,这里做简单介绍,规则是在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:
当出现y时,会将y替换成年
当出现M时,会将M替换成月
当出现d时,会将d替换成日
当出现H时,会将H替换成时
当出现m时,会将m替换成分
当出现s时,会将s替换成秒
System类
out是System的一个变量,里面有个类型是println
BigDecimal
标签:String,对象,equals,API,Day008,str,使用,字符串,new 来源: https://blog.csdn.net/MagicStarts/article/details/89280702