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

 /**
* 测试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. 安全测试8_Web安全实战1(DVWA部署)

    1.渗透神器的打造(火狐浏览器的打造) Firebug HackBar(渗透插件) Tamper Data(抓包.截包.改包等功能) Proxy Switcher(代理设置) 2.PHP环境安装(ph ...

  2. 25.纯 CSS 创作一个慧星拖尾效果的 loader 动画

    原文地址:https://segmentfault.com/a/1190000014916281 简化地址:https://codepen.io/pen/?editors=1100 HTML代码: & ...

  3. 开源 人脸识别 openface 实用介绍 实例演示 训练自己的模型

    1.OpenFace 是 卡耐基梅陇(CMU)大学的一个图像+机器学习项目,整体程序包含:人脸发现,特征提取,特征神经网络训练,人脸识别这四部分. github   https://github.co ...

  4. MongoTemplate的使用

    参考:  https://www.cnblogs.com/ityouknow/p/6828919.html

  5. 1.深入分析_NIO性能分析

    首先还是看一个用3中方式copy文件的测试Demo 分别是:普通Stream文件copy,BuffferedStream进行Copy 和Channel(nio)进行文件Copy的代码和性能测试报告: ...

  6. 03.windows系统重新分配ip的cmd命令

    网络重启CMD命令 ipconfig /release  --- 释放ip搜索 ipconfig /renew --- 重新获得

  7. leetcode1019

    class Solution(object): def nextLargerNodes(self, head: ListNode) -> 'List[int]': n = 0 temp = he ...

  8. 利用STM32CubeMX来生成USB_HID_Mouse工程

    硬件开发板:STM32F103C8 软件平台 好了现在开始利用STM32CubeMX来生成我们的工程 1.新建工程 选择MCU的型号 选择选择时钟 开启usb的模块 选择USB的类 配置时钟树(主要是 ...

  9. 【Linux】CentOS7 安装,遇到的各种问题,并修复win7启动项

    https://www.cnblogs.com/sxdcgaq8080/p/7457255.html ------------------------------------------------- ...

  10. CSS属性组-动画、转换、渐变

    一.动画 animation动画属性是一个简写属性,用于设置六个动画属性 aninmation-name动画名称,被调用 animation-duration完成动画需要的持续时间 animation ...