zoukankan      html  css  js  c++  java
  • Java的学习02

    今天依旧记录一下今天的学习的知识。

     1 /**
     2  * 测试StringBuilder StringBuffer,可变字符序列
     3  * String对象称为“不可变对象"指的是对象内部成员变量的值无法再改变
     4  * @author 小白
     5  *
     6  */
     7 
     8 public class TestBuilder {
     9         public static void main(String[] args) {
    10             
    11             //StringBuilder线程不安全,效率高(一般使用它);StringBuffer线程安全,效率低
    12             StringBuilder sb = new StringBuilder("abcdefg");
    13             
    14             System.out.println(Integer.toHexString(sb.hashCode()));
    15             System.out.println(sb);
    16             
    17             sb.setCharAt(2, 'M');
    18             System.out.println(Integer.toHexString(sb.hashCode()));
    19             System.out.println(sb);
    20         }
    21 }
     1 /**
     2  * 测试StringBuilder StringBuffer可变字符序列的常用方法
     3  * @author 小白
     4  *
     5  */
     6 public class TestStringBuilder3 {
     7     public static void main(String[] args) {
     8         StringBuilder sb = new StringBuilder();
     9         
    10         for(int i=0;i<26;i++){
    11             char temp = (char)('a'+i);
    12             sb.append(temp);
    13         }
    14         
    15         System.out.println(sb);
    16         sb.reverse();//倒序
    17         System.out.println(sb);
    18         sb.setCharAt(3, '高');//替换字符
    19         System.out.println(sb);
    20         sb.insert(0, '我').insert(6, '大');//链式调用,核心就是:该方法调用了return this,把自己返回了。
    21         System.out.println(sb);
    22         sb.delete(10, 20);
    23         System.out.println(sb);
    24 }
    25 }
     1 /**
     2  * 测试可变字符序列和不可变字符序列使用的陷阱
     3  * @author 小白
     4  *
     5  */
     6 public class TestStringBuilder4 {
     7     public static void main(String[] args) {
     8         
     9         /*使用String进行字符串的拼接*/
    10         String str8 = "";
    11         //本质上使用StringBuilder拼接,但是每次循环都会生成一个StringBuilder对象
    12         long num1 = Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
    13         long time1 = System.currentTimeMillis();//获取系统的当前时间
    14         for(int i=0;i<5000;i++){
    15             str8 = str8 + i;//相当于产生了10000个对象
    16         }
    17         long num3 = Runtime.getRuntime().freeMemory();
    18         long time2 = System.currentTimeMillis();
    19         System.out.println("String占用内存:" + (num1 - num3));
    20         System.out.println("String占用时间:" + (time2 - time1));
    21         
    22         //以后因该使用StringBuilder的append()的方法进行字符串的拼接,切记切记
    23         /*使用StringBuilder进行字符串的拼接*/
    24         StringBuilder sb1 = new StringBuilder("");
    25         long num4 = Runtime.getRuntime().freeMemory();
    26         long time3 = System.currentTimeMillis();
    27         for(int i=0;i<5000;i++){
    28             sb1.append(i);
    29         }
    30         long num5 = Runtime.getRuntime().freeMemory();
    31         long time4 = System.currentTimeMillis();
    32         System.out.println("StringBuilder占用内存" + (num5 - num4));
    33         System.out.println("StringBuilder占用时间" + (time4 - time3));
    34         
    35     }
    36 
    37 }

  • 相关阅读:
    MySQL令人咋舌的隐式转换
    MySQL 数据库基础(二)(MySQL 服务基础与使用 MySQL 数据库)
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    逆向工程,调试Hello World !程序(更新中)
    520了,用32做个简单的小程序
    postgresql 数据库 update更新慢的原因(已解决)
    面试题单例模式的五种写法(枚举妙用)
    人工智能能力提升指导总结
    数据结构-队列(2)-循环队列
    数据结构-队列(1)
  • 原文地址:https://www.cnblogs.com/tianqianlan/p/9885758.html
Copyright © 2011-2022 走看看