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;   

public class CalendarAddMethodTest{    

  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      

    cal.add(Calendar.HOUR_OF_DAY, -72); // 在当前日期基础上往前退72个小时,返回y===2013,m===12,d===17

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

  }   

}

 

 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             

  }   

}

贴代码费老鼻子劲了,睡觉

posted @ 2013-12-21 01:01  五星村小黄  阅读(418)  评论(0编辑  收藏  举报