javaAPI Object對象 產生隨機數 java初學 面向對象六

  1. Object對象

面向對象的核心思想:“找合適的對象,做適合的事情”。

合適的對象:

  1. 自己描述類,自己創建對象。
  2. sun已經描述了好多常用的類,可以使用這些類創建對象。

API(Application Program Interface)

sun定義的那麼多類的終極父類是Object。Object描述的是所有類的通用屬性與方法。

    1. toString方法

    

toString() 返回對象的描述信息   java.lang.Object@de6ced   類名@哈希碼值的十六進制形式。

直接輸入一個對象的時候,會調用對象的toString方法。

練習:自定義一個Person類,打印該對象的描述信息,要求描述信息爲:姓名 — 年齡

問題:調用p的toString方法時,打印出來的信息是類名+內存地址值。不符合要求。根據我們之前學的繼承,假如父類的指定的功能不能滿足要求,那麼子類可以複寫父類的功能函數。那麼該對象再調用toString()方法時,則會調用子類複寫的toString方法。

編程習慣:開發者要對自定義的類重寫toString(),對對象做詳細的說明

 

    1. equals方法

equals()  返回的是比較的結果  如果相等返回true,否則false,比較的是對象的內存地址值。

問題:比較兩個人是否是同一個人,根據兩個人的名字判斷。

問題:如果根據名字去作爲判斷兩個人是否是同一個時,明顯p與p1是同一個人,但是程序輸入卻不是同一個人。不符合我們現實生活的要求。

 

 

解決: 根據我們學的繼承中的函數複寫,如果父類的函數不能滿足我們目前的要求,那麼就可以在子類把該功能複寫,達到複合我們的要求。

編程習慣:開發者要對自定義的類重寫equals(),使得比較兩個對象的時候比較對象的屬性是否相等,而不是內存地址。

    1. hashCode方法

hashCode() 返回該對象的哈希碼值: 採用操作系統底層實現的哈希算法。 同一個對象的哈希碼值是唯一的。

java規定如果兩個對象equals返回true,那麼這兩個對象的hashCode碼必須一致。

  1. String類

String類描述的是文本字符串序列。  留言   QQ   寫日誌。

創建String類的對象的兩種方式:

  1. ""直接賦值法
  2. new關鍵字法
    1. 字符串對象的比較

String Str = “jack”這個語句會先檢查字符串常量池是否存放這個”jack1”這個字符串對象,如果沒有存在,那麼就會在字符串常量池中創建這個字符串對象,如果存在直接返回該字符串的內存地址值。

String str3 = new String(“jack”) 該語句會創建兩個對象,首先會先檢查字符串常量池中存不存在jack這個字符串對象,如果不存在就會創建,如果存在就返回內存地址值。創建了出來之後,new String這個語句就會在堆內存中開闢一個字符串對象。總共兩個對象。

 

 

    1. 獲取方法

int length()  獲取字符串的長度

char charAt(int index) 獲取特定位置的字符 (角標越界)

int indexOf(String str) 獲取特定字符的位置(overload)

int lastIndexOf(int ch) 獲取最後一個字符的位置

 

    1. 判斷方法

boolean endsWith(String str) 是否以指定字符結束

boolean isEmpty()是否長度爲0 如:“” null V1.6

boolean contains(CharSequences) 是否包含指定序列 應用:搜索

boolean equals(Object anObject) 是否相等

boolean equalsIgnoreCase(String anotherString) 忽略大小寫是否相等

    1. 轉換方法

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()  將字符串轉換爲字符數組

 

    1. 其他方法

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() 去除空格

    1. 練習
  1. 去除字符串兩邊空格的函數。

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 "_";

   }

  1. 獲取上傳文件名  "D:\\20120512\\day12\\Demo1.java"。

public static String getFileName2( String path ){

  return path.substring( path.lastIndexOf("\\") + 1 );

}

}

  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;

}

  1. StringBuffer

StringBuffer : 由於String是不可變的,所以導致String對象氾濫,在頻繁改變字符串對象的應用中,需要使用可變的字符串緩衝區類。

特點:

  1. 默認緩衝區的容量是16。
  2. StringBuffer  : 線程安全的所有的緩衝區操作方法都是同步的。效率很低。
    1. 添加方法

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

    1. 查看

toString() 返回這個容器的字符串

indexOf(String str) 返回第一次出現的指定子字符串在該字符串中的索引。

substring(int start) 從開始的位置開始截取字符串

 

    1. 修改(U)

replace(int start int endString str)  使用給定 String 中的字符替換此序列的子字符串中的字符。該子字符串從指定的 start 處開始,一直到索引 end - 1 處的字符

setCharAt(int index char ch)  指定索引位置替換一個字符

 

    1. 刪除(D)

 

    1. 反序

reverse() 把字符串反序輸出。

 

  1. StringBuilder

StringBuilder 是JDK1.5之後提出的,線程不安全,但是效率要高。用法與StringBuffer類似。

  1. System

System 可以獲取系統的屬性。

  1. Runtime

Runtime  類主要描述的是應用程序運行的環境。

 

  1. Date

Date 類封裝的是系統的當前時間.。但是Date已經過時了,sun推薦使用Calendar類。

Calendar: 該類是一個日曆的類,封裝了年月日時分秒時區。

日期格式化類:SimpleDateFormat

  1. Math

Math:類封裝了很多數學的功能。

 

練習:生成一個隨機碼

其他:

 面向對象 java初學   https://blog.csdn.net/fei8888888/article/details/84451429

static關鍵字 封裝、繼承和多態 java初學-面向對象二 https://blog.csdn.net/fei8888888/article/details/84537367

抽象類、多實現、多繼承 java初學-面向對象三 https://blog.csdn.net/fei8888888/article/details/84537551

內部類、異常 java初學-面向對象四 https://blog.csdn.net/fei8888888/article/details/84579208

 包機制、訪問修飾符、Jar包 java初學 面向對象五 https://blog.csdn.net/fei8888888/article/details/84579699

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章