java筆記 chapter6 StringBuffer類和String Bulider類,Math類 Date類,Calendar類

StringBuffer和String Bulider:在java.lang包裏
Math類:在java.lang包裏
Date類:在java.Util包裏
Calendar類: 在java.Util包裏
-----------------
StringBuffer類和String Builder類:
          public final class StringBuffer
          extends Object
          implements Serializable, CharSequence
          public final class StringBuilder
          extends Object
          implements Serializable, CharSequence
 
String 類有個重要的特色----String 的值是不可變的,這就致使每次對String 的操做都會生成新的String 對象,不只效率低下,並且大量浪費有限的內存空間。
StringBuffer:線程安全的,在多線程狀況下,優先選用StringBuffer
StringBuilder:線程不安全的,速度快,在單線程狀況下,優先選用StringBulider。
 
 StringBuffer的默認構造函數,系統默認分配16個字符的空間 以下:
          public   StringBuffer() {
                 this ( 16  );
          }
 
 
StringBuffer的帶參數的構造函數,以下;
           public  StringBuffer(String str) {
                    this(str.length() + 16 );
                    append( str);
           }
 
例子:
                   StringBuffer sb = new StringBuffer();
                   System. out.println( "默認capacity===" + sb.capacity());  //16
                   System. out.println(sb.length());   //0
 
                    // 聲明並初始化
                   StringBuffer sb1  =   new  StringBuffer( "hello world"  );
                   System. out.println( " sb1的capacity==" + sb1.capacity());  //27
                   System. out.println( " sb1的length== " +sb1.length());  //11
 
                    // 利用append()來設置StringBuffer的內容
                    // 使用StringBuffer的默認構造函數,系統默認分配16個字符的空間 。調用append方法後,str中的字符去填充分配好的內存空間  
             // 若是要填入的字符串的大小不大於16(就是原來已分配的空間大小),則原有的空間大小不會變化,capacity仍是16
                    //若是要填充的字符串的長度大於16,那麼capacity= (原capacity+1)*2
                   StringBuffer sb2 =   new  StringBuffer();
                   String str2 = "hello world";
                   sb2.append(str2);
                   System. out.println( " sb2的capacity==  "    +  sb2.capacity());  //16
                   System. out.println( "  sb2的length== "   +  sb2.length());  //11
 
                   StringBuffer sb3 =   new  StringBuffer();
                   String str3 = "hello worldhellow";
                   sb3.append(str3);
                   System. out.println( " sb3的capacity==  "    +  sb3.capacity());  //34 = (16 + 1)*2
                   System. out.println( "  sb3的length== "   +  sb3.length());  //17            
                   
                   StringBuffer sb4 =   new  StringBuffer();
                   String str4 = "hello worldhello";
                   sb4.append(str4);
                   System. out.println( " sb4的capacity==  "    +  sb4.capacity());  //16
                   System. out.println( "  sb4的length== "   +  sb4.length());  //16  
 
 
Math類:
     1:常數
             PI :double,圓周率
             E  :double,天然對數 

     2:截取(注意方法的返回類型)
             double ceil(double d)     -返回不小於d 的最小整數 (向上取值)
             double floor(double d)    -返回不大於d 的最大整數 (向下取值)
             int round(float f)          -返回四捨五入後的整數
             long round(double d)      返回四捨五入後的整數
     3:變換 ( int long float各類類型類似)
             double abs(double d)     -返回絕對值
             double min(double d1, double d2)   -返回兩個值中較小的值
             double max(double d1, double d2)   -返回兩個值中較大的值
     4:開平方立方,隨機數,一個數的次冪計算
               double sqrt(double d)     -返回平方根
               double cbrt(double a)     -返回立方根
               double random()            -返回隨機數    public static double random() 返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0,無限接近1.0
               double pow(double a,double b)   返回第一個參數的第二個參數次冪的值
 
實例以下:
                     //ceil 表示向上取值
                    double a1 = Math.ceil(5.121);  //6.0
                    double a2 = Math.ceil(5.91);  //6.0
                    double a3 = Math.ceil(-5.12);  //-5.0
                    double a4 = Math.ceil(-5.9);    //-5.0
                    double a5 = Math.ceil(0); //0.0
 
                    //floor表示向下取值
                    double b1 = Math.floor(5.12);  //5.0  
                    double b2 = Math.floor(5.9);   //5.0
                    double b3 = Math.floor(-5.12);  //-6.0
                    double b4 = Math.floor(-5.9);   //-6.0
 
                    //round表示四捨五入
                    double c1 = Math.round(5.12);  //5.0
                    double c2 = Math.round(5.9);   //6.0
                    double c3 = Math.round(-5.12);  //-5.0
                    double c4 = Math.round(-5.9);  //-6.0
 
                    //開立方
                    double i= 27f;
                    int i1 = ( int) Math. cbrt(i);
                   System. out.println( "開立方==" +i1);                    //3
                   
                    //開平方
                    double j= 8f;
                    int j1 = ( int) Math. sqrt(j);
                   System. out.println( "開平方==" +j1);                    //2
 
                    //絕對值
                   System. out.println(Math. abs(1.1));  //1.1
                   System. out.println(Math. abs(0));   //0
                   System. out.println(Math. abs(-2.3));  //2.3
                   
                    //最大值最小值
                   System. out.println(Math. max(1.1, -2.3));  //1.1
                   System. out.println(Math. max(-1.1, -2.3));  //-2.3
 
                    //靜態常量    
                   System. out.println(Math. E);  //2.718281828459045
                   System. out.println(Math. PI);  //3.141592653589793        
                   
                    //求一個數的幾回冪  double pow(double a,double b)
                    double d1 = 4.0;
                    double d2 = 5.0;
                    System. out.println(Math. pow(d1, d2)); //4的五次方 = 4*4*4*4*4 =1024.0
 
Date類:
1,獲得的是當前的時間,精確到毫秒(注意1秒等於1000毫秒)
2,表示自從標準基準時間 (稱爲 「曆元epoch」,即  1970年1月1日  00:00:00 格林威治時間)以來的指定毫秒數
3,獲取當前時間,例如:
          import java.util.Date;
          public class GetCurrentTime {
               public static void main(String[] args) {
                    Date d = new Date();
                    long t = d.getTime();  //返回一個long型的值
                    System.out.println(t);
          //          System.out.println(System.currentTimeMillis());
               }
          }
DateFormat 類: 在java.text包裏
SimpleDateFormat 類:在java.text包裏
層次關係以下:
java.lang.Object java.text.Format java.text.DateFormat java.text.SimpleDateFormat
public abstract class DateFormat extends Format
public class SimpleDateFormat extends DateFormat
主要有兩個方法:
方法:parse(String source)   把字符串轉換成日期  
方法:format(Date date)      把一個 Date 日期時間格式轉換
例子以下:
          import java.text.*;
          import java.util.*;
          public class FormatMethodTest {
               public static void main(String[] args) {
                    Date d = new Date();
                    DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
                    String str = df.format(d);
                    System.out.println(str); //獲取當前時間
               }
          }
Calendar類:在java.util包裏
public abstract class Calendar
  extends Object
  implements Serializable, Cloneable, Comparable<Calendar>
1:如何初始化
    Calendar 類是經過一個靜態方法 getInstance()來獲取 Calendar 實例。
2:使用Calendar 對日期進行部分析取:能從日期裏面按照要求析取出數據,如年月日、星期等。
    方法:get(int field) 返回給定日曆字段的值
3:使用Calendar 進行日期運算:對日期進行加加減減的運算。
    方法:add(int field, int amount) 根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量
4:爲Calendar 設置初始值
    方法setTime(Date date) 使用給定的 Date 設置此 Calendar 的當前時間
    方法setTimeInMillis(long millis) 用給定的 long 值設置此 Calendar 的當前時間值
具體例子以下:
  import java.util.Calendar;
  public class CalendarGetMethodTest{
    public static void main(String[] args) {
      Calendar cal = Calendar.getInstance();  // Calendar 類(是抽象類)是經過一個靜態方法 getInstance()來獲取 Calendar 實例。
      int y = cal.get(Calendar.YEAR);
      int m = cal.get(Calendar.MONTH) + 1;  //第一個月是 JANUARY,它爲 0
      int d = cal.get(Calendar.DAY_OF_MONTH);
      System.out.println("y===" + y + ",m===" +m +",d===" + d);  //y===2013,m===12,d===20
    }
  }

import java.util.Calendar;   java

public class CalendarAddMethodTest{     web

  public static void main(String[] args) {       安全

    Calendar cal = Calendar.getInstance();  // Calendar 類(是抽象類)是經過一個靜態方法 getInstance()來獲取 Calendar 實例。   //          多線程

    cal.add(Calendar.DATE, 7); // 在當前日期基礎上加7天, 這裏返回y===2013,m===12,d===24       app

    cal.add(Calendar.HOUR_OF_DAY, -72); // 在當前日期基礎上往前退72個小時,返回y===2013,m===12,d===17dom

    int y = cal.get(Calendar.YEAR);       ide

    int m = cal.get(Calendar.MONTH) + 1;        函數

    int d = cal.get(Calendar.DAY_OF_MONTH);       ui

    System.out.println("y===" + y + ",m===" +m +",d===" + d);     this

  }   

}

 

 import java.util.Calendar;   

public class CalendarSetTimeMethodTest {    

  public static void main(String[] args) {      

    Calendar cal = Calendar.getInstance();  // Calendar 類(是抽象類)是經過一個靜態方法 getInstance()來獲取 Calendar 實例。      

    cal.setTimeInMillis(1234567890123L);

    int y = cal.get(Calendar.YEAR);      

    int m = cal.get(Calendar.MONTH) + 1;       

    int d = cal.get(Calendar.DAY_OF_MONTH);      

    System.out.println("設置的時間是:y===" + y + ",m===" +m +",d===" + d);  //設置的時間是:y===2009,m===2,d===14             

  }   

}

貼代碼費老鼻子勁了,睡覺
相關文章
相關標籤/搜索