在java的繼承體系中,java.lang.Object類位於頂端(是全部對象的直接或間接父類)。若是一個沒有使用extends關鍵字來代表要繼承的類,則默認繼承java.lang.Object類,Object類定義了「對象」的基本行爲,被子類默認繼承。
java
1,toString()方法:返回一個能夠表示該對象屬性內容的字符串。
安全
Object obj = new Object(); String info = obj.toString() ; Systmem.out.println(info) ; //返回一個能夠表示該對象屬性內容的字符串。
①使用toString()方法,由於全部的類都繼承了Object類,而toString()方法是Object類定義的,因此咱們直接繼承了這個方法,Object類的toString()方法幫咱們返回了一個字符串。這個字符串的格式是固定的。
多線程
②app
public static void main(String[] args){ //SOP(toString()) ; //不能直接調用,編譯錯誤 Point p = new Point(1); System.out.println(p) ; //輸出p對象的toString()方法返回值。 }
不能直接使用toString()方法,由於該方法不是靜態的,靜態方法中不能直接引用非靜態的屬性和方法,想引用必須建立對象。非靜態方法中能夠直接引用靜態屬性和方法。
ide
2,equals方法。
ui
用於對象的「相等」邏輯。
編碼
「==」與equals的區別:
spa
用「==」比較對象時,描述的是兩個對象是不是一個對象。根據地址值判斷。而equals描述的是兩個對象的內容是否相等,內容相等取決於業務邏輯須要,能夠本身定義比較規則。
線程
是字符串類型,是引用數據類型,是不可變字符串,無線程安全問題。在java.lang.String類中。
設計
1,String的equals方法:兩個字符串進行比較時,咱們一般使用equals方法進行比較,字符串重寫了Object類中的equals方法,用於比較字符串是否一致,咱們不能保證任什麼時候候「==」都成立。
2,當一個字符串變量和一個字面量進行比較時,咱們通常吧字面量放在前面,即字面量.equals(字符串變量)。覺得這樣不會出現空指針異常,若是反過來,字符串變量.equals(字面量),若是字符串變量爲空,則會出現空指針異常。若是比較雙方都是變量則可使用if(str!=null&&str.equals(str1))
3,String另一個equals方法,equalsIgnoreCase(),該方法的做用是忽略大小寫去比較字符串內容。經常使用環境:驗證碼比較!!if("HELLO".equalsIgnoreCase(str)) ;。
4,String的基本方法:
①String toLowerCase():返回字符串的小寫形式,如,str.toLowerCase() ;
②String toUpperCase():返回字符串的大寫形式,如,str.toUpperCase() ;
③String trim():去掉字符串兩端的空格,中間的不去掉,如,str.trim() ;
④boolean startsWith():判斷字符串是否以參數字符串開頭,如,str.startsWith("s");
⑤boolean endsWith():判斷字符串是否以參數字符串結尾,如,str.endsWith("s") ;
⑥int length():返回字符串的長度,如,str.length() ;
5,indexOf()方法,檢索,位置是從0開始。
①int indexOf(String str):在給定的字符串中檢索 str,返回其第一次出現的位置,檢索不到返回-1;
②int indexOf(String str,int form):在給定的字符串中從form開始檢索str,返回其第一次出現的位置,檢索不到返回-1,form爲開始位置,包括form,form以前不檢索。
查找Hello in java in world中in以後第一個i的位置
index = indexOf("in") ; //先查出in字符串位置 index = indexOf("i",index+in.length()); //在in以後查i,先取出in的長度,在in以後查找
③int lastIndexOf(String str):在給定的字符串中檢索str,返回其最後一次出現的位置,檢索不到返回-1;
能夠看作是從右往左查找。
④int lastIndexOf(String str,int form):在給定的字符串中從form開始檢索str,返回其第一次出現的位置,檢索不到返回-1,form爲開始位置,包括form,form以後不檢索,由於是從右往左檢索,因此以後不檢索,只檢索form以前字符串。
6,substring()方法,字符串的截取,下標從0開始。
①String substring(int start,int end);返回的字符串從start開始(包含),以end結束(不包含)。
②String substring(int start);返回的字符串從start開始(包含),到字符串結尾。
7,getBytes方法(編碼):將字符串變爲相應的字節。
①byte[] getByte(); byte[] arr = str.getByte() ;sop(Array.toString(arr));
8,split方法,拆分:字符串的拆分。
String str = "123,324,3456,456,,,"; String[] array = str.split(","); sop(Arrays.toString(array)); //---->[123,324,3456,456]
與String不一樣,StringBuider封裝可變的字符串,有線程安全問題,對象建立後,能夠經過調用方法來改變其封裝的字符序列。
StringBuilder經常使用方法:
①追加字符串:StringBuilder append(String str) ;
②插入字符串:StringBuilder insert(int index,String str);插入後,原內容日後移。
③刪除字符串:StringBuilder delete(int start,int end);
④替換字符串:StringBuilder replace(int start,int end,String str);含頭不含尾
⑤字符串翻轉:StringBuilder reverse() ;
StringBuilder builder = new StringBuilder() ; builder.append("good good study") ; builder.append("day day up") ; System.out.println(builder.toString()); //----》【"good good study day day up"】 builder.insert(4,"!"); builder.delete(5,6); builder.replace(0,3,best); builder.delete(7,builder.length());
注意事項:
1)一個類對某個字符串進行頻繁操做時,要使用StringBuilder,能夠大規模的修改字符串,而再也不開闢新的字符串,從而節約內存資源。因此,對有着大量操做字符串的邏輯中,不使用String,而使用StringBuilder。
2)append是有返回值的,返回值類型是StringBuilder
3)StringBuilder和StringBuffer區別:效果是同樣的。
StringBuilder是線程不安全的,效率高,須要JDK1.5以上
StringBuffer 是線程安全的,效率低,也可變字符串。
在多線程操做的狀況下,應該使用StringBuffer,由於StringBuffer是線程安全的。
java.text.SimpleDateFormat類,日期轉換類,很方便的進行日期和字符串自建轉換。
1)parse方法,按照特定的格式,將表明時間的字符串轉成Date對象。
2)format方法,將日期數據按照指定格式轉成字符串。
字符串轉成日期
SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd") ; String dateformat = "2016-04-11"; //建立一個日期格式的字符串 //將字符串轉成相應的日期對象Date Date date = sdf.parse(dateformat) ; //要捕獲異常 System.out.println(date); //輸出date對象。
日期轉成字符串
SimpleDateFormar sdf = new SimpleDateFormat("yy-mm-dd") ; Date date = new Date() ; String now = sdf.format(date) ; //把日期對象傳進去 System.out.println(now) ;
日期格式中,-和空格無心義,無含義的都將原樣輸出
將當前系統時間轉爲 yy-mm-dd hh-mm-ss效果
SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd hh-mm-ss"); date = sdf.format(now) ; System.out.println(date) ;
Java語言的8種基本類型分別對應了8種包裝類,每個包裝類都封裝了一個基本數據類型的成員變量,同時,還提供了針對該數據類型的實用方法。
1)包裝類的做用:把基本數據類型當作引用數據類型看待。
2)包裝類的名字:除了Integer(int),Charset(char),其餘包裝類名字都是基本數據類型首字母大寫。
3)拆、裝箱:Integer i = new Integer(1) ; 建立一個以對象形式存在的整數1,這種從基本數據類型到引用類型的轉變稱之爲「裝箱」,反之叫「拆箱」。
4)裝箱:方式一,Double d = new Double(1.2) ; //裝箱
方式二,Double d = Double.valueOf(1.2) ; //基本類型都有valueOf()方法。
5)拆箱:double num = d.doubleValue() ; //拆箱
6)包裝類使用前提:JDK 1.5
public static void say(Object obj) { System.out.println(obj) ; } int a = 1 ; //基本類型,不是Object子類。 say(a) ;
7)包裝類的使用:實例化一個對象,這個對象對應的是整數1,Integer的做用是將基本數據類型int做爲引用數據類型看待,這樣就能夠參與到面向對象設計中,所以能夠將int當作一個Object來看待,也就是Object子類。
Integer i = new Integer(a) ; //裝箱 Integer ii = Integer.valueOf(a) ; //裝箱另外一種操做 int num = i.intValue() ; //拆箱 say(i) ; //Integer是Object的子類,能夠直接調用
8)自動裝箱
say(Integer.valueOf(a)) ; //自動裝箱 num = i.intValue() ; //自動拆箱