Object類和String類


Object類

  Object類是Java語言中的根類,即所有類的父類。

equals方法

  返回值類型為:boolean類型

  用於比較兩個對象是否相同,它其實就是使用兩個對象的內存地址在比較。

例子:

package com.oricle.object;

public class Person extends Object{
    private String name;
    private int age;
    public Person(){
        
    }
    public Person( String name,int age){
        this.age=age;
        this.name=name;
    }
    //復寫父類的equals方法,實現自己的比較方式
    public boolean equals(Object obj) {
        //判斷對象是否為空
        if(obj ==null){
            return false;
        }
        //判斷當前調用equals方法的對象和傳遞進來的對象是否是同一個
        if(obj ==this){
            return true;
        }
        //判斷傳遞進來的對象是否是Person類型
        if(obj instanceof Person){
            //將obj向下轉型為Perosn引用,訪問其屬性
            Person p=(Person)obj;

            return this.age==p.age;
        }
        return false;
    }
    
    
    
}

測試類:

package com.oricle.object;

import java.util.ArrayList;

public class Demo01 {

    public static void main(String[] args) {
        Person p1=new Person("江小魚",3);
        Person p2=new Person("花無缺",3);
        System.out.println(p1==p2);//判斷兩個對象地址相等
        System.out.println(p1.equals(p2));//重寫后判斷內容相等
        
    }

}

  注意:在復寫Object中的equals方法時,一定要注意public boolean equals(Object obj)的參數是Object類型,在調用對象的屬性時,一定要進行類型轉換,在轉換之前必須進行類型判斷。

toString方法

  返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。

  由於toString方法返回的結果是內存地址,而在開發中,經常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫它。如下:

package com.oricle.object;

public class Person extends Object{
    private String name;
    private int age;
    public Person(){
        
    }
    public Person( String name,int age){
        this.age=age;
        this.name=name;
    }
    //復寫父類的equals方法,實現自己的比較方式
    public boolean equals(Object obj) {
        //判斷對象是否為空
        if(obj ==null){
            return false;
        }
        //判斷當前調用equals方法的對象和傳遞進來的對象是否是同一個
        if(obj ==this){
            return true;
        }
        //判斷傳遞進來的對象是否是Person類型
        if(obj instanceof Person){
            //將obj向下轉型為Perosn引用,訪問其屬性
            Person p=(Person)obj;

            return this.age==p.age;
        }
        return false;
    }
    //重寫toString方法
    public String toString() {
        
        return "name:"+name;
    }
    
}

測試類:

package com.oricle.object;

import java.util.ArrayList;

public class Demo01 {

    public static void main(String[] args) {
        Person p1=new Person("江小魚",3);
        Person p2=new Person("花無缺",3);
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
         //重寫toString方法
        System.out.println(p1.toString());

    }

}

結果如下:

 String類

 構造方法

把字節數組作為對象的內容

package com.oricle.String;

public class Gouzao {

    public static void main(String[] args) {
        //48為0,97為a,65為A
        byte[] bytes={
            97,98,99,100
        };
        String str =new String (bytes);
        String str2 =new String (bytes,1,2);//創建String對象,把一部分數組元素作為字符串的內容,
            //參數offset為數組元素的起始索引位置,參數length為要幾個元素

        System.out.println(str);
        System.out.println(str2);

    }

}

結果:

創建String對象,把字符串數組元素作為字符串的內容

    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為要幾個元素
System.out.println(s4); System.out.println(s5);

結果:

創建String對象str,字符串內容為sre,判斷是否與已存在字符串ss相等,

String ss="sre";
        String str=new String("sre");
        System.out.println(ss.equals(str));

結果為true,String類進堆,優先創建內存,然后調用內容相同已經有的字符串地址,不會再開新的內存,節省空間

String類中的方法查找

package com.oricle.String1;

public class Demo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char[] ch={'a','b','c','d','e'};
        String str=new String(ch);
        System.out.println(str);
        int len=str.length();
        System.out.println(len);
        //截取
        String s1=str.substring(2);//從起始位置一直截取到最后
        System.out.println(s1);
        //總起始位置截取到結束位置(包頭不包尾,順序不能亂)
        System.out.println(str.substring(2, 4));
        //檢索開頭字母
        String st="IloveJava";
        String s2="Il";
        String s3="Java";
        System.out.println(st.startsWith(s2));//開頭
        System.out.println(st.endsWith(s3));//結尾
        //判斷字符串中是否包含子字符串
        String s4="i love java java";
        String s5="java";
        System.out.println(s4.contains(s5));
        //indexof 如果沒有該字符串則返回-1
        System.out.println(s4.indexOf(s5));
        //將字符串轉成字節/字符數組
        String s6="你是人則很難";
        /*byte[] b1=s6 .getBytes();
        for(int i=0;i<b1.length;i++){
            System.out.print(b1[i]+"");
        }
        char[]c1=s6.toCharArray();
        for(int i=0;i<c1.length;i++){
            System.out.println(c1[i]+"");
        }*/
        
        for(int i=0;i<s6.length();i++){
            byte[] b1=s6 .getBytes();
            System.out.print(b1[i]+"");
            char[]c1=s6.toCharArray();
            System.out.println(c1[i]+"");
        }
        
        
        
        //判斷字符串內容是否相同
        String s8="Oricle";
        String s9="oricle";
        System.out.println(s8.equals(s9));
        System.out.println(s8.equalsIgnoreCase(s9));
        //tostring
        System.out.println(s8.toString());
        
        //tolowercase
        System.out.println(s8.toLowerCase());
        //touppercase
        System.out.println(s9.toUpperCase());
        
    }
    
}

 

練習題目:

package com.oricle.String1;

public class Demo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        getnum("ORIclee12345");
        getword("fainlFAF");
        getci();
    }
    //1.獲取指定字符串中,大寫字母、小寫字母、數字的個數。
    public static void getnum(String str){
        int big=0,
            small=0,
            number=0;
//        String s10="ORIcle1234";
//        char[]c2=s10.toCharArray();
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
//            System.out.println(c);
            if (c>='A' && c<='Z') {
                big++;
            } else if (c>='a' && c<='z') {
            small++;
            } else if (c>='0' && c<='9') {
                number++;
            }

        }
        System.out.println("大寫字母個數:"+big);
        System.out.println("小寫字母個數:"+small);
        System.out.println("數字個數:"+number);

      }
    //將字符串中,第一個字母轉換成大寫,其他字母轉換成小寫,並打印改變后的字符串
    public static void getword(String str){
        String head=str.substring(0,1);
        String body=str.substring(1);
        String neww=head.toUpperCase()+body.toLowerCase();
        System.out.println(neww);
    }
    //查詢大字符串中,出現指定小字符串的次數。如“hellojava,nihaojava,javazhenbang”中查詢出現“java”的次數。
    public static void getci(){
        String s1="hellojava,nihaojava,javazhenbang";
        String s2="java";
        int count=0;//出現次數
        int index=-1;//出現位置下標
        while((index=s1.indexOf(s2)) != -1){
            count++;
            s1=s1.substring(index+s2.length());
            System.out.println(s1);
        }
        System.out.println(count);
        
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。