oracle为java提供了丰富的基础类库,java 8提供了4000多个基础类库,通过这些基础类库可以提高开发效率,降低开发难度。本文笔者对将对常用类的object进行讲解,由于笔者才疏学浅,以下见解可能不全面,希望读者见谅,如有不同见解,希望提出宝贵意见。
Object类
object类是所有类、数组、枚举类的父类,java允许把任何类型的对象赋给object类型变量(笔者理解为,此处可以看作向上造型,任何类型的对象---实际上是继承了object类的派生类创建的对象,object类作为超类/父类,声明一个object类型的引用指向派生类的对象);
具体解释为: 当定义一个类时没有使用extends关键字显示它的父类时,则默认该类继承了object父类。
在intellij IDEA查看在object类,可以看到object类中封装了很多方法。因为所有类都是object类的子类/派生类时,所以任何类都可以调用object类中的方法。
object类中常用的方法:
boolean equals(Object obj):
public boolean equals(Object obj) {
return (this == obj);
}
object类中equals()方法。用来判断指定对象与该对象是否相等。此处相等的标准是,两个对象是否是同一个对象。
==判断对象时,实质上是对两个对象的地址进行判断,一般在编写过程中我们不需要对两个对象的地址进行判断。所以在所有子类/派生类中需要对equals()方法进行重写。
使用alt+insert键,IDEA为我们提供了equals()方法重写。
重写后的equals()方法
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Aoo aoo = (Aoo) o;
return x == aoo.x && y == aoo.y && z == aoo.z;
}
重写后的equals()方法,主要比较两个对象的属性是否相等。此上方法中第二个if的判断条件,对于现在的笔者较为复杂,如果有理解的读者,希望能给出解答。
String toString():
返回该对象的字符串表示,当程序使用system.out.println()方法输出一个对象时,或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法返回该对象的字符串表示。
obejct类中的tostring()方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
object类的同string()方法返回“运行时类名@十六进制hashcode值”格式的字符串。很多类都重写了object类的tostring()方法,用于返回可以表示该对象信息的字符串。
字符串string 中已经自动重写了tostring()方法,所以我们使用system.out.println("xxxx")时,会原样输出xxxx。
字符串类(String、StringBuffer、StringBuilder)
字符串就是一连串字符序列,java提供了string、stringbuffer、stringbuilder三个类来封装字符串,并提供了一系列的方法来操作字符串对象。
String类
string类是不可变类,即一旦一个string对象被创建后,包含在这个对象中的字符序列是不可改变的,直到这个对象被销毁。
string类的构造方法
常见的构造方法有String()、String(String original)、String(StringBuilder builderl);
String():创建一个包含0个字符串序列的String对象(并不是返回null)。
String s=new String();
String(String original):使用字符串直接量创建String对象。新建的String对象是该参数字符串的副本。也就是说在使用字符串直接两创建对象时,实际上是创建了两个对象,一个是字符串直接量,另一个是新建的String对象。
String str=new String("ADAGA");
String(StringBuilder builderl):使用stringbuilder对象来创建string对象。
String str=new String(builder);
System.out.println(str);
string类中常用方法
string类提供了大量的方法来操作字符串对象,以下介绍常用的方法:
char charAt(int index):
获取字符串中指定位置的字符
字符串的序列是从0开始到length()-1结束。
String str="abcdefghkl";
char c=str.charAt(8);
System.out.println(c);
结果为 k
String str="abcd";
String str1="abcd";
String str2="adce";
String str3="abcdef";
System.out.println(str.equals(str1));
System.out.println(str.equals(str2));
System.out.println(str.equals(str3));
结果为
true
false
false
boolean equals(Object anObject)方法时,两个字符串字符相同,排序不同时,字符串并不相等。字符串是字符排列的序列
String str="abcd";
String str1="aBcD";
System.out.println(str.equalsIgnoreCase(str1));
结果为
true
String s="www.fkit.org";
System.out.println("s.indexOf('r'):"+s.indexOf('r'));
System.out.println("s.indexOf('r',2):"+s.indexOf('r',8));
结果为
s.indexOf('r'):10
s.indexOf('r',2):10
所以,输出的字符的序列是从字符串的第一位计算的
找出 ch 字符在该字符串 中从 fromIndex 开始后最后一次出的位置
String str="sdadsasfdafldsnbakl";
System.out.println("str.length():"+str.length());
结果为
str.length():19
String str="www.baidu.com";
System.out.println("str.startsWith(\"www\"):"+str.startsWith("www"));
结果为
str.startsWith("www"):true
double d=12.24563;
String str=String.valueOf(d);
System.out.println("String.valueOf(d):"+str);
结果为
String.valueOf(d):12.24563
StringBuffer、StringBuilder
string类是不可变的, string的实例一旦生成就不可改变。
String s1="java";
System.out.println(s1);
s1=s1+"struts";
System.out.println(s1);
s1=s1+"spring";
System.out.println(s1);
结果为
java
javastruts
javastrutsspring
上述程序在运行时,除了使用了三个字符串直接量,还会额外生成两个字符串直接量:javastruts、 javastrutsspring;
因为String类不可变,所以会产生很多临时变量。针对这样的问题,java定义了StringBuffer类、StringBuilder类,来避免这个问题。
StringBuilder
构造方法
StringBuilder builder=new StringBuilder(String str );
构造方法的参数类型具体有哪些,暂时不清楚(求大神解答)。
常用方法
String str="学习java";
StringBuilder builder=new StringBuilder(str);
builder=builder.append(",为了找份更好的工作");//追加
System.out.println(builder);
builder=builder.replace(7,16,"为了改变是世界");//替换
System.out.println(builder);
builder=builder.delete(0,6);//删除
System.out.println(builder);
builder=builder.insert(0,"活着");//插入
System.out.println(builder);
结果
学习java,为了找份更好的工作
学习java,为了改变是世界
,为了改变是世界
活着,为了改变是世界