java基础类库

       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

boolean equals(Object anObject):
        将该字符串与指定对象比较,如果 者包含的字符序列相等, 则返回 true; 否则返回 false
        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)方法时,两个字符串字符相同,排序不同时,字符串并不相等。字符串是字符排列的序列

boolean equalsIgnoreCase(String str):
        boolean equals(Object anObject)方法基本相似,但忽略符的大小写
        String str="abcd";
        String str1="aBcD";
        System.out.println(str.equalsIgnoreCase(str1));

结果为

true
int indexOf(int ch):
        找出 ch 字符在该字符串中第一次出现的位置
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

        所以,输出的字符的序列是从字符串的第一位计算的

int indexOf(int ch, int fromIndex):
        找出 ch 字符在该字符串中从fromIndex 开始后第1次出现的位置
int indexOf(String str):        
        找出 str字符串在该宇符串中第1次出现的位置
int indexOf(String str,int fromIndex):
        找出 str字符串在该字符串中从 fromIndex 开始后第1次出现的位置
int lastIndexOf(int ch):
        找出 ch 字符在该字符串中最后一次出现的位置。
int lastIndexOf(int ch, int mIndex):

        找出 ch 字符在该字符串 中从 fromIndex 开始后最后一次出的位置

int length():
        返回当前字符串长度。
String str="sdadsasfdafldsnbakl";
System.out.println("str.length():"+str.length());

结果为

str.length():19
boolean startsWith(String prefix):
        该String 对象是否以 prefix 开始。
        String str="www.baidu.com";
        System.out.println("str.startsWith(\"www\"):"+str.startsWith("www"));

结果为

str.startsWith("www"):true
String toLowerCase():
        将宇符串转换成小写。
String toUpperCase():
        将字符串转换成大写。
String substring(int beginlndex):
        获取从 beginlndex 位置开始到结束的子字符串。
String substring(int beginlndex, int endIndex):
        获取从 beginIndex 位置开始到 endlndex 位置的字符串。
static String valueOf(X ):
         一系列用于将基本类型值转换为 String 对象的方法
        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

        String 类是不可变类,即 String对象被创建以后,包含在这个对象中的字符序列是不可改变的直至这个对象被销毁。
        StringBuffer 则代表一个字符序列可变的字符串 ,当一个 StringBuffer 被创建以后,通过StringBuffer提供的append()、 insert()、
 reverse()、 setCharAt()、 setLength()等方法可以改变这个字符串对象的字符序列。一旦通过 StringBuffer 成了 最终想要的字符串,就可以调用它的 toString()方法将其转 换为 String 对象        

构造方法

        StringBuilder builder=new StringBuilder(String str  );

        构造方法的参数类型具体有哪些,暂时不清楚(求大神解答)。

常用方法

        StringBuilder 提供了一系列插入(insert())、追加(append())、替换(replace())、删除(delete(())改变该字符串里包含字符序列的方法。 StringBuffer时也与其用法完全相同,只是 StringBuffer是线程安全的。
        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,为了改变是世界
,为了改变是世界
活着,为了改变是世界

StringBuilder String 之间最大的区别 StringBuilder 字符序列是可变的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值