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

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

Java的学习02的更多相关文章

  1. java基础学习02(简单的java程序)

    简单的java程序 一.完成的目标 1. 理解java程序的基本组成 2. 如何对程序代码进行注释 3. java标识符的命名规则 4. 了解java中的关键字 5. 使用java定义变量或声明变量 ...

  2. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  3. Java学习02

    Java学习02 1.导入内部的包 一.在包的下面加入下面一句话: import    java.util.Scanner; 二.在类中 Scanner input=new     Sanner(Sy ...

  4. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  5. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  6. java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...

  7. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

  8. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  9. Java工程师学习指南 完结篇

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

随机推荐

  1. 【Linux】【Maven】Linux下安装和配置Maven

    创建maven的文件夹并下载maven的tar包到此文件夹中 //进入一个目录 cd /usr/local//创建一个文件夹 mkdir maven//下载maven的tar包 wget http:/ ...

  2. SLD Related Gateway Serivces Unavaliable

    SAP NW 7.4 default switched on the ACL (access control list) in gateway service, so only local acces ...

  3. jquery小效果:新浪游戏右侧导航菜单 (页面效果)

    偷盗:新浪游戏右侧导航菜单 http://games.sina.com.cn 效果: 随着页面的滚动,左侧页面的内容,和右侧的导航菜单的按钮文字对应: 点击右侧的导航按钮,左侧页面滚动到相应的内容 2 ...

  4. Hive 优化汇总

    参考: http://www.cnblogs.com/yshb/p/3147710.html http://www.cnblogs.com/sandbank/p/6408762.html 一   jo ...

  5. centos7 更新yum报错initscripts conflicts with centos-release-7-3.1611.el7.centos.x86_64

    1.centos7的系统的yum 更新系统报错: --> 解决依赖关系完成错误:initscripts conflicts with centos-release-7-3.1611.el7.ce ...

  6. DataBinding(二):DataBinding的基本用法

    转自:DataBinding系列(二):DataBinding的基本用法 1.在xml中引入一些基础变量Variables data 标签中可以有任意数量的 variable 标签.这些变量可以使Ja ...

  7. leetcode212

    class Solution { public List<String> findWords(char[][] board, String[] words) { List<Strin ...

  8. centos如何安装tomcat

    1 通过 SecureCRT 连接到阿里云 CentOS7 服务器; 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 /usr/local/tools,如果有 ...

  9. Centos 7上安装Elasticsearch

    1. 先安装jdk yum search java|grep jdk查看yum库中都有哪些jdk版本 yum install java-1.8.0-openjdk.x86_64 两次y确认 2. ce ...

  10. mysqldump备份时保持数据一致性

    对MySQL数据进行备份,常见的方式如以下三种,可能有很多人对备份时数据一致性并不清楚 1.直接拷贝整个数据目录下的所有文件到新的机器.优点是简单.快速,只需要拷贝:缺点也很明显,在整个备份过程中新机 ...