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 fromIn dex):
        找出 ch 字符在该字符串中从from In dex 开始后第1 次出现的位置
int indexOf(String str):        
        找出 str字符串在该宇符串中第1 次出现的位置
int indexOf(String str,int fromIn dex):
        找出 str字符串在该字符串中从 fro mIn dex 开始后第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 对象是否以 p refix 开始。
        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 endIn dex):
        获取从 begin In dex 位置开始到 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 时也 与其用法完全相同,只是 Str ingBuffer 是线程 安全的。
        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 字符序列是可变的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值