A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class Test {

  2.         public static void main(String[] args) {
  3.                
  4.                 String str1 = "aa";
  5.                 String str2 = new String("aa");
  6.                 String str3 = "aa";
  7.                
  8.                 /**
  9.                  * ==是比较两个对象的内存空间
  10.                  * 对于String对象的直接赋值,
  11.                  * 如String str1 = "aa"; "aa"字符串是存储于静态内存区的,而且是唯一的。
  12.                  * 因此str1和str3指向的是同一块内存
  13.                  * str1和str2指向的是不同的内存
  14.                  */
  15.                 System.out.println(str1==str2);//false
  16.                 System.out.println(str1==str3);//true
  17.                
  18.                 //equals方法不比较内存空间,只比较两者的值
  19.                 System.out.println(str1.equals(str2));
  20.                 System.out.println(str1.equals(str3));
  21.                
  22.                
  23.                 /**
  24.                  * StringBuffer的使用
  25.                  * 举一个例子:
  26.                  *         写一个循环获取12345678910--------一直到999;
  27.                  */
  28.                 /*首先我们看一下用String连接符怎么写的,再来分析一下他的内存模型
  29.                  * 在内存模型中我们可以看到,
  30.                  * 第一次循环我们定义了一个"1"的字符串,赋值给num1
  31.                  * 第二次我们定义了一个"12"的字符串,赋值给num1,(这个时候注意字符串"1"没有回收,只是将num1的指针指向了"12")
  32.                  * 以此推类:这样的100次循环,开辟了100块内存,但我们需要的只有一个
  33.                  * 那么100次,一万次呢?
  34.                  */
  35.                 String num1 = "";
  36.                 for(int i=0;i<100;i++){
  37.                         num1 += i;
  38.                 }
  39.                 System.out.println(num1);
  40.                
  41.         }
  42. }
复制代码
  1. public class Test1 {

  2.         public static void main(String[] args) {
  3.                
  4.                 /*让我们来看一下StringBuffer,
  5.                  * 来分析一下他的内存,我们就可以清楚的知道为什么类似的情况会选择实用StringBuffer了
  6.                  * sb指向堆内存的一个对象,这个对象指向静态区的一个字符串
  7.                  * sb.append()方法只会开辟一块内存空间。这样就大大的节省了内存(相比于上次的方式)
  8.                  *
  9.                  * StringBuffer和StringBuilder的区别
  10.                  *     StringBuffer线程安全,效率低
  11.                  *     StringBuilder线程不安全,效率高
  12.                  */
  13.                 StringBuffer sb = new StringBuffer();
  14.                 for(int k = 1;k<100;k++){
  15.                         sb.append(k);
  16.                 }
  17.                 System.out.println(sb.toString());
  18.         }
  19. }
复制代码

如果有错误的地方,请各位大神指出,大家多交流交流,共同进步。

QQ图片20160313121538.jpg (30.21 KB, 下载次数: 27)

QQ图片20160313121538.jpg

QQ图片20160313121545.jpg (22.2 KB, 下载次数: 37)

QQ图片20160313121545.jpg

2 个回复

正序浏览
谢谢分享~~~~
回复 使用道具 举报
好牛逼啊,佩服!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马