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); } }