面向對象的核心思想:「找合適的對象,作適合的事情」。java
合適的對象:算法
API(Application Program Interface)編程
sun定義的那麼多類的終極父類是Object。Object描述的是全部類的通用屬性與方法。數組
toString() 返回對象的描述信息 java.lang.Object@de6ced 類名@哈希碼值的十六進制形式。安全
直接輸入一個對象的時候,會調用對象的toString方法。app
練習:自定義一個Person類,打印該對象的描述信息,要求描述信息爲:姓名 — 年齡函數
問題:調用p的toString方法時,打印出來的信息是類名+內存地址值。不符合要求。根據咱們以前學的繼承,假如父類的指定的功能不能知足要求,那麼子類能夠複寫父類的功能函數。那麼該對象再調用toString()方法時,則會調用子類複寫的toString方法。ui
編程習慣:開發者要對自定義的類重寫toString(),對對象作詳細的說明spa
equals() 返回的是比較的結果 若是相等返回true,不然false,比較的是對象的內存地址值。操作系統
問題:比較兩我的是不是同一我的,根據兩我的的名字判斷。
問題:若是根據名字去做爲判斷兩我的是不是同一個時,明顯p與p1是同一我的,可是程序輸入卻不是同一我的。不符合咱們現實生活的要求。
解決: 根據咱們學的繼承中的函數複寫,若是父類的函數不能知足咱們目前的要求,那麼就能夠在子類把該功能複寫,達到複合咱們的要求。
編程習慣:開發者要對自定義的類重寫equals(),使得比較兩個對象的時候比較對象的屬性是否相等,而不是內存地址。
hashCode() 返回該對象的哈希碼值: 採用操做系統底層實現的哈希算法。 同一個對象的哈希碼值是惟一的。
java規定若是兩個對象equals返回true,那麼這兩個對象的hashCode碼必須一致。
String類描述的是文本字符串序列。 留言 QQ 寫日誌。
建立String類的對象的兩種方式:
String Str = 「jack」這個語句會先檢查字符串常量池是否存放這個」jack1」這個字符串對象,若是沒有存在,那麼就會在字符串常量池中建立這個字符串對象,若是存在直接返回該字符串的內存地址值。
String str3 = new String(「jack」) 該語句會建立兩個對象,首先會先檢查字符串常量池中存不存在jack這個字符串對象,若是不存在就會建立,若是存在就返回內存地址值。建立了出來以後,new String這個語句就會在堆內存中開闢一個字符串對象。總共兩個對象。
int length() 獲取字符串的長度 char charAt(int index) 獲取特定位置的字符 (角標越界) int indexOf(String str) 獲取特定字符的位置(overload) int lastIndexOf(int ch) 獲取最後一個字符的位置 |
boolean endsWith(String str) 是否以指定字符結束 boolean isEmpty()是否長度爲0 如:「」 null V1.6 boolean contains(CharSequences) 是否包含指定序列 應用:搜索 boolean equals(Object anObject) 是否相等 boolean equalsIgnoreCase(String anotherString) 忽略大小寫是否相等 |
String(char[] value) 將字符數組轉換爲字符串 String(char[] value, int offset, int count) Static String valueOf(char[] data) static String valueOf(char[] data, int offset, int count) char[] toCharArray() 將字符串轉換爲字符數組 |
String replace(char oldChar, char newChar) 替換 String[] split(String regex) 切割 String substring(int beginIndex) String substring(int beginIndex, int endIndex)截取字串 String toUpperCase() 轉大寫 String toLowerCase() 轉小寫 String trim() 去除空格 |
public class Demo1 { // 定義一個祛除字符串兩邊空格的函數 public static String trim( String str ){
// 0、定義求字串須要的起始索引變量 int start = 0; int end = str.length()-1; // 1. for循環遍歷字符串對象的每個字符 for (int i = 0; i<str.length() ; i++ ) { if ( str.charAt(i) == ' ' ) { start++; }else{
break; } } System.out.println( start ); for (; end<str.length() && end >= 0; ) { if ( str.charAt(end) == ' ' ) { end--; }else{ break; } } System.out.println( end ); // 2. 求子串 if( start < end ){
return str.substring( start , (end+1) ); }else{
return "_"; } |
public static String getFileName2( String path ){ return path.substring( path.lastIndexOf("\\") + 1 ); } } |
// 將字符串對象中存儲的字符反序 public static String reaverseString( String src ){
// 1. 將字符串轉換爲字符數組 char chs[] = src.toCharArray(); // 2. 循環交換 for ( int start = 0 , end = chs.length - 1; start < end ; start++,end-- ) { // 3. 數據交換 char temp = chs[end]; chs[end] = chs[start]; chs[start] = temp; } // 4. 將字符數組轉換爲字符串 return new String( chs ); } |
4. 求一個子串在整串中出現的次數
public static int getCount( String src , String tag ){ // 0. 定義索引變量和統計個數的變量 int index = 0; int count = 0; // 1. 寫循環判斷 while ( ( index = src.indexOf(tag) ) != -1 ) // jackjava { // 2. 求字串 System.out.println( src ); src = src.substring( index + tag.length() ); // index 4 + 4 = 8 System.out.print( src.length() + " : " + index + " : " + tag.length() ); // 3. 累加 count++; } return count; } |
StringBuffer : 因爲String是不可變的,因此致使String對象氾濫,在頻繁改變字符串對象的應用中,須要使用可變的字符串緩衝區類。
特色:
StringBuffer("jack") 在建立對象的時候賦值 append() 在緩衝區的尾部添加新的文本對象 insert() 在指定的下標位置添加新的文本對象 |
StringBuffer sb = new StringBuffer("jack"); sb.append(true); sb.append('a'); sb.append(97).append(34.0).append(new char[]{'o','o'}); // 鏈式編程 System.out.println( sb.toString() ); // 輸出緩衝區的中文本數據 sb = new StringBuffer("jack"); sb.insert( 2, "java" ); // jajavack System.out.println( sb.toString() ); |
toString() 返回這個容器的字符串 indexOf(String str) 返回第一次出現的指定子字符串在該字符串中的索引。 substring(int start) 從開始的位置開始截取字符串 |
replace(int start int endString str) 使用給定 String 中的字符替換此序列的子字符串中的字符。該子字符串從指定的 start 處開始,一直到索引 end - 1 處的字符 setCharAt(int index char ch) 指定索引位置替換一個字符 |
reverse() 把字符串反序輸出。
StringBuilder 是JDK1.5以後提出的,線程不安全,可是效率要高。用法與StringBuffer相似。
System 能夠獲取系統的屬性。
Runtime 類主要描述的是應用程序運行的環境。
Date 類封裝的是系統的當前時間.。可是Date已通過時了,sun推薦使用Calendar類。
Calendar: 該類是一個日曆的類,封裝了年月日時分秒時區。
日期格式化類:SimpleDateFormat
Math:類封裝了不少數學的功能。
練習:生成一個隨機碼