• 第03章(常用工具类)


      1 /*****************
      2 ***第三章常用工具类
      3 *******知识点:
      4 **************1.系统相关
      5 ******************1.1 System类
      6 ******************1.2 Runtime类
      7 ******************1.3 输入类
      8 **************************1.3.1 Scanner类
      9 **************************1.3.2 BufferedReader类
     10 **************2.数字相关
     11 ******************2.1 整型
     12 **************************2.1.1 Byte 类
     13 **************************2.1.2 Short类
     14 **************************2.1.3 Integer类
     15 **************************2.1.4 Long类
     16 ******************2.2 浮点型
     17 **************************2.2.1 Float类
     18 **************************2.2.2 Double类
     19 ******************2.3 字符型
     20 **************************2.3.1 Character类
     21 ******************2.4 布尔型
     22 **************************2.4.1 Boolean类
     23 ******************2.5 数学类
     24 **************************2.5.1 Math类
     25 **************************2.5.2 StrictMath类
     26 ******************2.6 工具类
     27 **************************2.6.1 Random类
     28 **************************2.6.2 BigDecimal类
     29 **************************2.6.3 正则表达式
     30 **************3.日期相关
     31 ******************3.1 Date类
     32 ******************3.2 Calendar类
     33 ******************3.3 GregorianCalendar类
     34 ******************3.4 DateFormat类
     35 ******************3.5 SimpleDateFormat类
     36 ******************3.6 TimeZone类
     37 **************4.字符串相关
     38 ******************4.1 String类
     39 ******************4.2 StringBuilder类
     40 ******************4.3 StringBuffer类
     41 */
     42 import java.lang.*; //导入相关包
     43 import java.util.*;
     44 import java.util.regex.*; 
     45 import java.math.*;
     46 import java.text.*;
     47 
     48 public class test3{
     49     public static void main(String[] args) throws Exception {
     50         showDemo("1.系统相关");
     51         demoSystem();//演示系统相关
     52         
     53         showDemo("2.数字相关");
     54         demoNumber();//演示数字相关
     55         
     56         showDemo("3.日期相关");
     57         demoDate();//演示日期相关
     58         
     59         showDemo("4.字符串相关");
     60         demoString();//演示字符串相关
     61     }
     62     
     63     /*
     64     *    抽取打印演示函数  用于打印演示功能提示
     65     */    
     66     public static void showDemo(String demoStr){
     67         System.out.println("演示:" + demoStr);
     68     }
     69     
     70     /*
     71     *  抽取日期打印函数  用于显示日期打印
     72     */
     73     public static void showDate(String str,Calendar c_Calendar){
     74         System.out.println("当前时区是:" + c_Calendar.getTimeZone().getDisplayName() + " " 
     75                             + c_Calendar.getTimeZone().getID()  + " "
     76                             + c_Calendar.getTimeZone().getRawOffset() + " "
     77                             + "\r\n" + str +":"
     78                             + c_Calendar.get(Calendar.YEAR) + "年"
     79                             + (c_Calendar.get(Calendar.MONTH)+1) + "月"  //注意加不然少1个月
     80                             + (c_Calendar.get(Calendar.DATE )) + "日"  
     81                             + c_Calendar.get(Calendar.HOUR_OF_DAY) + "时"
     82                             + c_Calendar.get(Calendar.MINUTE) + "分"                            
     83                             );
     84     }
     85     
     86     
     87     /***************1.系统相关
     88     ******************1.1 System类
     89     ******************1.2 Runtime类
     90     ******************1.3 输入类
     91     **************************1.3.1 Scanner类
     92     **************************1.3.2 BufferedReader类
     93     */
     94     public static void demoSystem() throws Exception {
     95         /**1.1 System类**/
     96         /*char c_a = (char)(System.in.read());  //获取控制台输入字符
     97         System.out.println("获取键盘输入为:" + c_a);*/
     98         Date d_d = new Date(System.currentTimeMillis());
     99         System.out.println("当前时间(Long类型 没转化前)为:" + System.currentTimeMillis()); //获取当前时间(精确到毫秒)  返回long
    100         System.out.println("当前时间(转化后)为:" + d_d.toString()); //获取当前时间  返回日期时间
    101         System.out.println("当前用户是:" + System.getProperty("user.name"));  //获取系统当前用户名
    102         System.out.println("当前用户是:" + System.getProperty("os.name"));  //获取当前操作系统名
    103     
    104         /**1.2 Runtime类**/
    105         //1.2.1 获取虚拟机信息
    106         Runtime r_a = Runtime.getRuntime();
    107         System.out.println("当前虚拟机的运行内存为:" + r_a.totalMemory());//获取虚拟机当前内存
    108         
    109         //1.2.2 调用windows程序并执行
    110         //Process p_a = r_a.exec("notepad");  //调用windows文本编辑器
    111         //p_a.waitFor(); //设置程序为等待
    112         //System.out.println("程序返回值:" + p_a.exitValue());//获取调用程序返回值  没错误返回0  其他非0
    113         
    114         /******************1.3 输入类
    115         **************************1.3.1 Scanner类
    116         **************************1.3.2 BufferedReader类
    117         */    
    118         
    119         /*********1.3.1 Scanner类**********/
    120         //1.3.1.1获取屏幕输入数据
    121         Scanner scan = null;
    122         //scan = new Scanner(System.in);
    123         //System.out.print("请输入字符:");
    124         //while(true){
    125         //    String str = scan.nextLine();
    126         //    if(str.equals(":q")) break;
    127         //    System.out.println("输入字符为:" + str);
    128         //    str = "";
    129         //    str = null ;
    130         //}
    131         
    132         //1.3.1.2 构造字符串
    133         //scan = new Scanner("123 andw, sd weddw dasd;    d asdadsa|   sdad&  ~sdadsad");//默认使用空格来转换
    134         //while(scan.hasNext()){
    135         //    System.out.println("构造字符串:" + scan.next());
    136         //}
    137         
    138         /*********1.3.2 BufferedReader类**********/
    139         //更多时候用于读取文件  文件章节再详细介绍
    140     }
    141     
    142     
    143     /***************2.数字相关
    144     ******************2.1 整型
    145     **************************2.1.1 Byte 类
    146     **************************2.1.2 Short类
    147     **************************2.1.3 Integer类
    148     **************************2.1.4 Long类
    149     ******************2.2 浮点型
    150     **************************2.2.1 Float类
    151     **************************2.2.2 Double类
    152     ******************2.3 字符型
    153     **************************2.3.1 Character类
    154     ******************2.4 布尔型
    155     **************************2.4.1 Boolean类
    156     ******************2.5 数学类
    157     **************************2.5.1 Math类
    158     **************************2.5.2 StrictMath类
    159     ******************2.6 工具类
    160     **************************2.6.1 Random类
    161     **************************2.6.2 BigDecimal类
    162     **************************2.6.3 正则表达式
    163     */
    164     public static void demoNumber(){
    165     /**2.1 整型**/
    166     //2.1.1 Byte 类 
    167         byte b_a,b_b;
    168         String b_str = "126";
    169         b_a = 127 ;
    170         
    171         Byte b_Byte_1 = new Byte(b_a);    //通过byte类型初始化 注意new时候必须初始化    
    172         b_b = b_Byte_1.byteValue();  //赋值
    173         System.out.println("调用byteValue(byte)方法后b_b值为:" + b_b);
    174         
    175         b_Byte_1 = new Byte(b_str);//通过string类型初始化
    176         b_b = b_Byte_1.byteValue();//赋值
    177         System.out.println("调用byteValue(string)方法后b_b值为:" + b_b);
    178         
    179         b_b = b_Byte_1.parseByte("125");//调用parseByte(string)方法 参数string类型
    180         System.out.println("调用parseByte(string)方法后b_b值为:" + b_b);
    181         
    182         b_b = b_Byte_1.parseByte("124",10);//调用parseByte(string,int)方法 参数string类型,10表示进制
    183         System.out.println("调用parseByte(string,int)方法后b_b值为:" + b_b);
    184         
    185         Byte b_Byte_2 = b_Byte_1.valueOf((byte)123);//调用valueOf(byte)方法 参数byte类型
    186         System.out.println("调用valueOf(byte)方法后b_Byte_2值为:" +b_Byte_2.byteValue());
    187         
    188         b_Byte_2 = b_Byte_1.valueOf("122");//调用valueOf(string)方法 参数string类型
    189         System.out.println("调用valueOf(string)方法后b_Byte_2值为:" +b_Byte_2.byteValue());
    190         
    191         b_Byte_2 = b_Byte_1.valueOf("122",8);//调用valueOf(string,int)方法 参数string类型 8表示进制
    192         System.out.println("调用valueOf(string,int)方法后b_Byte_2值为:" +b_Byte_2.byteValue());        
    193         System.out.println("调用toString()方法后b_Byte_2值为:" +b_Byte_2.toString()); 
    194         //注意跟byteValue()方法区别  一个返回是string类型  一个返回是byte类型
    195         
    196         System.out.println("Byte类型的最大值为:" + Byte.MAX_VALUE);//获取最大值
    197         System.out.println("Byte类型的最小值为:" + Byte.MIN_VALUE);//获取最小值
    198         System.out.println("Byte类型的二进制位数为:" + Byte.SIZE + " 占用字节数:" + Byte.SIZE/8 );//获取位数
    199             
    200     //2.1.2 Short类
    201         short s_a = 1024 ;
    202         Short s_Short = new Short(s_a);
    203         System.out.println("Short类型的最大值为:" + Short.MAX_VALUE);//获取最大值
    204         System.out.println("Short类型的最小值为:" + Short.MIN_VALUE);//获取最小值
    205         System.out.println("Short类型的二进制位数为:" + Short.SIZE + " 占用字节数:" + Short.SIZE/8 );//获取位数
    206         //用法跟Byte类型  这里就不再细述了  用到时查看相关API即可    
    207         
    208     //2.1.3 Integer类
    209         int i_a = 1025 ;
    210         Integer i_Integer = new Integer(i_a);
    211         System.out.println("Integer类型的最大值为:" + Integer.MAX_VALUE);//获取最大值
    212         System.out.println("Integer类型的最小值为:" + Integer.MIN_VALUE);//获取最小值
    213         System.out.println("Integer类型的二进制位数为:" + Integer.SIZE + " 占用字节数:" + Integer.SIZE/8);//获取位数
    214         //用法跟Byte类型  这里就不再细述了  用到时查看相关API即可
    215         
    216     //2.1.4 Long类
    217         long l_a = 1026L;
    218         Long l_Long = new Long(l_a);
    219         System.out.println("Long类型的最大值为:" + Long.MAX_VALUE);//获取最大值
    220         System.out.println("Long类型的最小值为:" + Long.MIN_VALUE);//获取最小值
    221         System.out.println("Long类型的二进制位数为:" + Long.SIZE + " 占用字节数:" + Long.SIZE/8);//获取位数
    222         //用法跟Byte类型  这里就不再细述了  用到时查看相关API即可
    223         
    224     /**2.2 浮点型**/
    225     //2.2.1 Float类
    226         float f_a;
    227         String s_Float_str_1 = "1.51";    
    228         Float f_Float_1 = new Float(s_Float_str_1);
    229         System.out.println("f_Float_1是否为一个非数字值:" + f_Float_1.isNaN());
    230         System.out.println("调用byteValue()方法:" + f_Float_1.byteValue());//注意强转后结果可能发生变化
    231         f_a = f_Float_1.intValue();
    232         
    233         System.out.println("f_a值为:" + f_a);
    234         
    235         System.out.println("Float类型的最大值为:" + Float.MAX_VALUE);//获取最大值
    236         System.out.println("Float类型的最小值为:" + Float.MIN_VALUE);//获取最小值
    237         System.out.println("Float类型的二进制位数为:" + Float.SIZE + " 占用字节数:" + Float.SIZE/8);//获取位数
    238         //用法跟Byte类型  这里就不再细述了  用到时查看相关API即可
    239         
    240     //2.2.2 Double类
    241         double d_d = 0.15;
    242         Double d_Double = new Double(d_d);
    243         System.out.println("Double类型的最大值为:" + Double.MAX_VALUE);//获取最大值
    244         System.out.println("Double类型的最小值为:" + Double.MIN_VALUE);//获取最小值
    245         System.out.println("Double类型的二进制位数为:" + Double.SIZE + " 占用字节数:" + Double.SIZE/8);//获取位数
    246         //用法跟Byte类型  这里就不再细述了  用到时查看相关API即可
    247     
    248     /**2.3 字符型**/    
    249     //2.3.1    Character类
    250         char c_a,c_b,c_c;
    251         c_a = 'a';
    252         c_b = (char)((int)c_a - 32) ;//A大写  大写编码比小写小32
    253         c_c = '3';
    254         System.out.println(c_a + " 是否为字母:" + Character.isLetter(c_a));
    255         System.out.println(c_a + " 是否为小写字母:" + Character.isLowerCase(c_a));
    256         System.out.println(c_b + " 是否为大写字母:" + Character.isUpperCase(c_b));
    257         System.out.println(c_c + " 是否为数字:" + Character.isDigit(c_c));
    258 
    259     /**2.4 布尔型**/
    260     //2.4.1    Boolean类
    261         boolean b_boolean = false;
    262         String b_boolean_str = "True";
    263         Boolean b_Boolean = new Boolean(b_boolean);
    264         System.out.println("b_Boolean值为:" + b_Boolean.booleanValue());
    265         
    266         b_Boolean = new Boolean(b_boolean_str);//对参数 忽略大小写
    267         System.out.println("b_Boolean值为:" + b_Boolean.booleanValue());
    268         System.out.println("调用valueOf()方法为:" + b_Boolean.valueOf("sdadasdsa"));
    269         System.out.println("调用valueOf()方法为:" + b_Boolean.valueOf("TRUE"));//不区分大小写
    270         System.out.println("调用valueOf()方法为:" + b_Boolean.valueOf("true"));//不区分大小写
    271     
    272     /**2.5 数学类**/
    273     //2.5.1  Math类()
    274         System.out.println("求绝对值函数abs():" + Math.abs(-1.2));
    275         System.out.println("求三角余弦函数cos():" + Math.cos(60));
    276         System.out.println("求三角正弦函数sin():" + Math.sin(30));
    277         System.out.println("求三角正切函数sin():" + Math.tan(45));
    278         System.out.println("求平方根函数sqrt():" + Math.sqrt(16));
    279         System.out.println("求最大值max():" + Math.max(16,19));
    280         System.out.println("求最小值min():" + Math.min(-1,-2));
    281         System.out.println("求随机数random():" + Math.random());
    282         //更多使用见API文档
    283     //2.5.2  StrictMath类
    284         System.out.println("求绝对值函数abs():" + StrictMath.abs(-1.2));
    285         System.out.println("求三角余弦函数cos():" + StrictMath.cos(60));
    286         System.out.println("求三角正弦函数sin():" + StrictMath.sin(30));
    287         System.out.println("求三角正切函数sin():" + StrictMath.tan(45));
    288         System.out.println("求平方根函数sqrt():" + StrictMath.sqrt(16));
    289         System.out.println("求最大值max():" + StrictMath.max(16,19));
    290         System.out.println("求最小值min():" + StrictMath.min(-1,-2));
    291         System.out.println("求随机数random():" + StrictMath.random());
    292         //更多使用见API文档
    293         
    294     // 需注意:   Math运行效率高  StrictMath可以保障在不同的平台上运行都得到相同的结果    
    295         
    296     /**2.6 工具类**/
    297     //2.6.1  Random类
    298         Random r_Random = new Random();
    299         int i_Random = r_Random.nextInt(10);//返回0...10之间的随机数(不含10)
    300         System.out.println("随机数为:" + i_Random);
    301         
    302         boolean b_Random = r_Random.nextBoolean();//随机返回 true /false
    303         System.out.println("随机数为:" + b_Random);
    304         
    305         float f_Random = r_Random.nextFloat();
    306         System.out.println("随机数为:" + f_Random);
    307         
    308         double d_Random = r_Random.nextDouble();//跟nextFloat()方法返回位数不一致。需注意
    309         System.out.println("随机数为:" + d_Random);
    310         //通过上面对比这个类是然并卵   推荐使用 Math.random() 方法更加方便
    311         
    312     //2.6.2  BigDecimal类
    313         //四种格式化小数位数方法
    314         double d_PI = Math.PI;
    315         double d_BigDecimal = 1234.146;
    316         System.out.println("PI为:" + d_PI);
    317         
    318         //第一种格式化  转换最简单
    319         System.out.println("第一种格式化:" + 
    320                            new DecimalFormat("0.00").format(d_PI));//会自行四舍五入
    321                            
    322         //第二种格式化  打印最简单
    323         System.out.println("第二种格式化"+ String.format("%.2f", d_BigDecimal));//会自行四舍五入
    324         
    325         //第三种格式化
    326         BigDecimal b_BigDecimal = new BigDecimal(d_BigDecimal);
    327         d_BigDecimal = b_BigDecimal.setScale(2,BigDecimal.ROUND_CEILING).doubleValue();
    328         //setScale(int,RoundingMode) 其中int为取的位数,RoundingMode为取数模式。
    329         //本次为正无穷大舍入模式  更多模式可查看API文档
    330         System.out.println("第三种格式化"+ d_BigDecimal);
    331         
    332         //第四种格式化 转化最灵活
    333         NumberFormat n_NumberFormat = NumberFormat.getNumberInstance();//获取系统对数字格式的设置
    334         n_NumberFormat.setMaximumFractionDigits(2);//设置为2为小数
    335         System.out.println("第四种格式化" + n_NumberFormat.format(d_BigDecimal));//会自行四舍五入  一般采用1,000.00方式
    336             
    337 
    338         //BigDecimal 四大基本运算使用
    339         System.out.println("BigDecimal类相加:" + new BigDecimal(10).add(new BigDecimal(20)).toString());
    340         System.out.println("BigDecimal类相减:" + new BigDecimal(10).subtract(new BigDecimal(20)).toString());
    341         System.out.println("BigDecimal类相乘:" + new BigDecimal(10).multiply(new BigDecimal(20)).toString());
    342         System.out.println("BigDecimal类相除:" + new BigDecimal(10).divide(new BigDecimal(20)).toString());
    343         
    344                     
    345     //2.6.3  正则表达式
    346     //使用步骤:1.定义编译器对象  2.定义匹配器  3.做匹配
    347     
    348         String regex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)"
    349                        + "|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";//检验是否为邮箱正则表达式
    350                        
    351         Pattern p_Pattern = Pattern.compile(regex);//定义并初始化正则表达式编译器
    352         String email1 = "lishi_hzj@foxmail.com";
    353         String email2 = "dadsdsadads";
    354         
    355         Matcher m_Matcher1 = p_Pattern.matcher(email1);  //定义并初始化匹配器
    356         Matcher m_Matcher2 = p_Pattern.matcher(email2);
    357         
    358         System.out.println("匹配是否为邮箱地址:" + m_Matcher1.matches());//第一种
    359         System.out.println("匹配是否为邮箱地址:" + m_Matcher2.matches());
    360         System.out.println("匹配是否为邮箱地址:" + p_Pattern.matches(regex,email1));//第二种调用方法
    361     }
    362     
    363     
    364     /***************3.日期相关
    365     ******************3.1 Date类
    366     ******************3.2 Calendar类
    367     ******************3.3 GregorianCalendar类
    368     ******************3.4 DateFormat类
    369     ******************3.5 SimpleDateFormat类
    370     ******************3.6 TimeZone类
    371     */
    372     public static void demoDate(){
    373     /**3.1 Date类**/
    374         Date d_Date = new Date(System.currentTimeMillis());
    375         System.out.println("当前时间为:" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(d_Date));
    376         //该类已过时  不建议使用  建议使用Calendar代替
    377         
    378     /**3.2 Calendar类**/
    379         Calendar c_Calendar = Calendar.getInstance();
    380         c_Calendar.setTimeInMillis(System.currentTimeMillis());
    381         showDate("当前时间",c_Calendar);
    382         
    383         c_Calendar.add(Calendar.DATE ,-1);                   
    384         showDate("昨天是",c_Calendar);
    385         
    386         c_Calendar.add(Calendar.DATE,2);    //因为前面-1了               
    387         showDate("明天是",c_Calendar);
    388         
    389         c_Calendar.add(Calendar.DATE,-1); //因为前面+2了
    390         
    391         c_Calendar.add(Calendar.MONTH,1);           
    392         showDate("一个月后是",c_Calendar);
    393         
    394         c_Calendar.add(Calendar.MONTH,-1);    //因为前面+1了
    395         c_Calendar.add(Calendar.YEAR,1);            
    396         showDate("一年后是",c_Calendar);
    397         
    398     /**3.3 GregorianCalendar类**/
    399         GregorianCalendar g_GregorianCalendar = new GregorianCalendar();
    400         System.out.println("是否为闰年:" + g_GregorianCalendar.isLeapYear(2012));
    401         
    402     /**3.4 DateFormat类**/ 
    403         DateFormat d_DateFormat1 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);  
    404         DateFormat d_DateFormat2 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);  
    405         DateFormat d_DateFormat3 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);  
    406         DateFormat d_DateFormat4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);  
    407           
    408         System.out.println("DateFormat.SHORT:"+d_DateFormat1.format(d_Date));  
    409         System.out.println("DateFormat.MEDIUM:"+d_DateFormat2.format(d_Date));  
    410         System.out.println("DateFormat.LONG:"+d_DateFormat3.format(d_Date));  
    411         System.out.println("DateFormat.FULL:"+d_DateFormat4.format(d_Date));  
    412         
    413     /**3.5 SimpleDateFormat类**/
    414         SimpleDateFormat s_SimpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    415         SimpleDateFormat s_SimpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    416         SimpleDateFormat s_SimpleDateFormat3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
    417         SimpleDateFormat s_SimpleDateFormat4 = new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
    418         System.out.println(s_SimpleDateFormat1.format(d_Date));
    419         System.out.println(s_SimpleDateFormat2.format(d_Date));
    420         System.out.println(s_SimpleDateFormat3.format(d_Date));
    421         System.out.println(s_SimpleDateFormat4.format(d_Date));
    422     
    423     /**3.6 TimeZone类**/
    424         TimeZone t_TimeZone = TimeZone.getDefault();//获取系统默认时区
    425         System.out.println("系统默认时区:" + t_TimeZone.getTimeZone("GMT-8").getID());//获取时区ID
    426         System.out.println("系统默认时区:" + t_TimeZone.getDisplayName());//获取时区名称
    427         
    428         
    429     //总结:上诉几个类使用起来都不是非常方便。无论是从执行效率还是线程安全上来说都不是最好的选择。
    430     //建议推荐第三方库类    Joda-Time类库
    431     }
    432     
    433     /**************4.字符串相关
    434     ******************4.1 String类
    435     ******************4.2 StringBuilder类
    436     ******************4.3 StringBuffer类
    437     */
    438     public static void demoString(){
    439     /**4.1 String类**/
    440     System.out.println("======操作相同字符串======");
    441     int time = 50000;
    442     String s="";
    443     long begin = System.currentTimeMillis();
    444     for(int i=0;i < time; i++){
    445         s +=  "java";
    446     }
    447     long end = System.currentTimeMillis();
    448     System.out.println("操作相同字符串" + s.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    449     
    450     /**4.2 StringBuilder类**/
    451     StringBuilder sb =new StringBuilder();
    452     begin = System.currentTimeMillis();
    453     for(int i=0;i < time; i++){
    454         sb.append("java");
    455     }
    456     end = System.currentTimeMillis();
    457     System.out.println("操作相同字符串" + sb.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    458     
    459     /**4.3 StringBuffer类**/
    460     StringBuffer sb_buf =new StringBuffer();
    461     begin = System.currentTimeMillis();
    462     for(int i=0;i < time; i++){
    463         sb_buf.append("java");
    464     }
    465     end = System.currentTimeMillis();
    466     System.out.println("操作相同字符串" + sb_buf.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    467 
    468     s = "";
    469     sb.delete(0,sb.length());
    470     sb_buf.delete(0,sb_buf.length());
    471     
    472     
    473     System.out.println("======操作不同字符串======");
    474     begin = System.currentTimeMillis();
    475     for(int i=0;i < time; i++){
    476         s += "java" + String.valueOf(i);
    477     }
    478     end = System.currentTimeMillis();
    479     System.out.println("操作不同字符串" + s.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    480     
    481     begin = System.currentTimeMillis();
    482     for(int i=0;i < time; i++){
    483         sb.append("java" + String.valueOf(i));
    484     }
    485     end = System.currentTimeMillis();
    486     System.out.println("操作不同字符串" + sb.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    487     
    488     begin = System.currentTimeMillis();
    489     for(int i=0;i < time; i++){
    490         sb_buf.append("java" + String.valueOf(i));
    491     }
    492     end = System.currentTimeMillis();
    493     System.out.println("操作不同字符串" + sb_buf.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    494 
    495     
    496     System.out.println("======String效率问题======");
    497     begin = System.currentTimeMillis();
    498     s += "I" + "love" + "java"; 
    499     end = System.currentTimeMillis();
    500     System.out.println("使用+=操作字符串" + s.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    501     
    502     begin = System.currentTimeMillis();
    503     s = s + "I" + "love" + "java"; 
    504     end = System.currentTimeMillis();
    505     System.out.println("使用= +操作字符串" + s.getClass().getName() + "类型使用的时间为:" +(end - begin) + "毫秒");
    506     
    507     //其他基本操作自行查看API(如:连接、查找、替换、分隔、比较、拼接等)  注意区分 == 和 equals 的区别
    508     //推荐单字符串操作时使用  s += "str";来代替 s = s + "str" ; 前者效率更高
    509     //一般情况下执行效率:StringBuilder > StringBuffer > String
    510     //所以
    511     //    1.当字符串相加操作或者改动较少的情况下,建议使用 String
    512     //    2.当字符串相加操作较多的情况下,建议使用StringBuilder
    513     //    3.如果采用了多线程,则使用StringBuffer。
    514     }
    515 }
  • 相关阅读:
    html实现打印预览效果
    layui-table 对表格数据进行处理之后的排序问题
    layui-table与layui-rate评分转换成星级的使用
    使用apache的poi来实现数据导出到excel的功能——方式二
    java获取配置文件中的key=value值
    layDate——设置最大日期不能超过当前日期
    layDate——初步使用
    echarts使用——柱状图
    layui内部定义的function,外部调用时候,提示某函数未定义现象解决方案
    layui table异步调用数据的时候,数据展示不出来现象解决方案
  • 原文地址:https://www.cnblogs.com/ciade/p/4756731.html
Copyright © 2020-2023  润新知