zoukankan      html  css  js  c++  java
  • 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             

      }   

    }

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

  • 相关阅读:
    Redis其他知识
    Mybatis的sql语句操作
    Redis
    mybatis插件原理
    mybatis工作原理
    Mybatis逆向工程
    mybatis缓存机制
    Mybatis查询
    zabbix api添加主机
    jenkins + bitbucket 实现 pr自动构建及build状态通知
  • 原文地址:https://www.cnblogs.com/wxc-xiaohuang/p/3484741.html
Copyright © 2011-2022 走看看