JAVA-基础-常用API(equals,tostring方法,String类)
Posted 代码运输工
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA-基础-常用API(equals,tostring方法,String类)相关的知识,希望对你有一定的参考价值。
Java的API及Object类
java的 API -applicatio(应用),programming(程序),interface(接口)
Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
Object类概述
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
equals方法 与 toString方法
equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。如下代码演示:
/*
描述人这个类,并定义功能根据年龄判断是否是同龄人
由于要根据指定类的属性进行比较,这时只要覆盖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类型,
在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,
这个对象是否是这个特定类或者是它的子类的一个实例
toString方法,返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
class Person extends Object{
int age ;
//根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
}
String类
String:String类对象是不可变的,也就是说字符串在创建之后就不能再去更改了。它是用来存放字符串常量的。
查阅API中的String类的描述,发现String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。
字符串的本质是一个字符的数组。
String s3 = "abc";//内存中只有一个对象,在字符串常量池中
String s4 = new String("abc");//在内存中有两个对象,一个new的对象在堆中,一个字符字串本身对象
System.out.println(s3==s4);//false
System.out.println(s3.equals(s4));//true,
因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)
l s3创建,在内存中只有一个对象。这个对象在字符串常量池中
l s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中
String类构造方法
String s1 = new 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 = new char[]{’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);
substring(int beginIndex)方法 返回一个新的字符串,它是此字符串的一个子字符串(指定位置到末尾的所有字符)
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);
startWith(String prefix) 测试此字符串是否以指定前缀开始
endsWith(String suffix) 测试此字符串是否以指定后缀结束
String str = "StringDemo.java";
boolean b1 = str.startsWith("Demo");//判断是否以给定字符串开头
boolean b2 = str.startsWith("String");
boolean b3 = str.endsWith("java");//判断是否以给定字符串结尾
contains (CharSequence s) 测试是否包含指定字符串 返回true或false boolean
indexOf(String str) 测试是否包含指定字符串,包含则返回该字符串第一次出现的时的索引,不包含则返回-1 int
String str = "abcde";
int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1
boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false
getBytes() 使用平台默认字符集 将此String编码为 byte 序列 并将结果储存到新的 byte数组中 byte[]
toCharArray() 将字符串转换为一个新的字符数组 char[]
String str = "abcde";
char[] chs = str.toCharArray();//转换为字符数组
byte[] bytes = str.getBytes();//转换为字节数组
equels(Object anObject) 将此字符串与指定的对象比较 boolean
equelsIgnoreCore(String anotherString) 将此String与另一个String比较 不考虑大小写 boolean
String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);//true
boolean b2 = str.equals(str3);//false
toString() 返回此对象本身(它已经是一个字符串)------------------------获取该字符串对象中的内容
String str = new String("hello"); System.out.println( str.toString() ); System.out.pintln( str );
//直接打印引用类型变量时,默认调用该类型进行重写后的toString方法
以上是关于JAVA-基础-常用API(equals,tostring方法,String类)的主要内容,如果未能解决你的问题,请参考以下文章