附:jdk1.8使用IDEA安装.创建.使用JUnit单元测试

笔记总结:

 /**String 复习
* 1.像C++这样的char arr[]="..." 的方式无法声明Java的String
* 2.a.compareTo(b),表示按字典序比较两个字符串a和b,结果小于0:a表示小于b,结果大于0:a表示大于b,结果等于0表示等于(值不确定)
* 3.equals() 判断相等
* 4.indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。
* lastindexOf(String str) 返回指定子字符串在此字符串中最后一次出现处的索引。
*5.valueof()可以将基本所有的Java数据类型转换为String 类
*
* 6.StringBuff 类,支持 append(), legth() , insert(),reverse()
/**StringBuffer
* 线程安全,可变的字符序列。 字符串缓冲区就像一个String ,但可以修改。 (初始化是16个字符)
* 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。
* ---------------------------
*StringBuilder
    同样可变的字符序列,较新,效率远高于String ,高于StringBuffer!

简单的方法测试代码:

package Coding;

public class Main_of_Coding {
public static void main(String[] args) {
//1.String 的构造方法
String str1=new String("first String");
char arr[]= {'s','e','c','o','n','d',' ','S','t','r','i','n','g'};
String str2=new String(arr);
String str3=new String(arr,1,4); //起始点offset: 1 ,总统计count : 4
String str4=new String(str1+1); //数字1不表示移动地址,表示数字1加到str1的后面
System.out.println(" "+str1+"\t2: "+str2+"\t:3 "+str3+"\t:4"+str4);
//2.使用
str4=str1+str2;System.out.println(str4); //字符串链接
System.out.println(str1.charAt(0)+" "+str1.charAt(1)); //获取第i个字符! str1="aab";str2="ac";
System.out.println(str1.compareTo(str2)); // 按字典顺序比较两个字符串。
str1="666";str2="777";
System.out.println(str1.compareTo(str2));
//3.转换成字符数组
char a1[]=str1.toCharArray();
System.out.println(new String(a1)+" 1:"+a1[1]+" 2:"+a1[2]);
//4.字符串搜索
System.out.println("indexof66: "+str1.indexOf("66"));
System.out.println("lastindexof66: "+str1.lastIndexOf("66"));
// }
}

运行结果:

 first String    2: second String    :3 econ    :4first String1
first Stringsecond String
f i
-2
-1
666 1:6 2:6
indexof66: 0
lastindexof66: 1
对比三者的效率测试:
public class testStringBuff {
//对比三者的效率测试
@Test
public void test3(){
String text = "";
long startTime = 0L;
long endTime = 0L;
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
System.out.println("三者同时添加20000个数花费的时间比较!!");
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
buffer.append(String.valueOf(i));}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
builder.append(String.valueOf(i));}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
startTime = System.currentTimeMillis();
for(int i = 0;i<20000;i++){
text = text + i;}
endTime = System.currentTimeMillis();
System.out.println("String的执行时间:"+(endTime-startTime)); }
}

测试结果:

三者同时添加20000个数花费的时间比较!!
StringBuffer的执行时间:10
StringBuilder的执行时间:3
String的执行时间:967


Java基础 String/StringBuff/StringBuilder 常用操作方法复习/内存分析/三者的效率比较的更多相关文章

  1. Java基础 -- String,StringBuilder,StringBuffer三者的区别

    结论 1-String,StringBuilder,StringBuffer 之间的区别主要是在两个方面,即运行速度和线程安全这两方面: 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:St ...

  2. Java基础-String和StringBuilder类型(11)

    String类概述 字符串是由多个字符组成的一串数据字符串可以看成是字符数组 构造方法 public String(String original)public String(char[] value ...

  3. 说下Java堆空间结构,及常用的jvm内存分析命令和工具

    Java堆空间结构图:http://www.cnblogs.com/SaraMoring/p/5713732.html JVM内存状况查看方法和分析工具: http://blog.csdn.net/n ...

  4. Java基础 String 裸暴力算法- 五个小练习

      之间的博客,承上启下:    Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...

  5. JAVA基础(二)—— 常用的类与方法

    JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...

  6. 探秘Java中String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  7. Java基础String的方法

    Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值); ...

  8. Java基础—String构造方法

    Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...

  9. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

随机推荐

  1. easyui中 datagrid与pagination结合使用【记录】

    /** * Js名称:客源基本管理 * */ var setPageNumber = 1; var setPageSize = 10; var guestManageListData = {}; // ...

  2. Git使用两个用户名两个公钥链接同一个Git服务器

    同篇文章以Gitee举例, 支持国产, 首先关联一下我的另外一篇文章: 在码云上添加公钥时提示不允许重复添加(实际上当前公钥数为0) 在这篇文章中, 我后续有补充解释为什么会出现我之前没有弄明白的这个 ...

  3. 脉脉的一道网红Java面试题

    题目如下: public class Test { public static void main(String[] args) { int a = 10; int b = 10; // 需要在met ...

  4. (六)Cookie 知识点总结 (来自那些年的笔记)

    如果你想要转载话,可不可以不要删掉下面的 作者信息 呀!: 作者:淮左白衣 写于 2018年4月18日18:47:41 来源笔者自己之前学javaWeb的时候,写的笔记 : 目录 如果你想要转载话,可 ...

  5. VC++操作注册表(创建,读取,更改,删除)

    #include "stdafx.h" #include <Windows.h> #include <iostream> using namespace s ...

  6. 【学习笔记】RMQ-Range Minimum/Maximum Query (区间最小/最大值)

    RMQ是一类询问区间最小/最大值的问题. 这类问题一般分成两类:静态区间(无修改),动态区间(带修改). 对于动态区间查询最大/最小,我们显然可以用线段树来解决…… 那么对于静态区间查询最大/最小的问 ...

  7. spring cloud微服务实践六

    本片我们就来认识下spring cloud中的zuul组件. 注:这一个系列的开发环境版本为 java1.8, spring boot2.x, spring cloud Greenwich.SR2, ...

  8. Merkle树

    在分布式系统.P2P应用中或者是区块链中,会经常使用一种数据结构Merkle tree(默克尔树),这里我们将详细讨论一下这个常用数据结构. Merkle tree Merkle树看起来非常像二叉树, ...

  9. MySql数据库 优化

    MySQL数据库优化方案 Mysql的优化,大体可以分为三部分:索引的优化,sql慢查询的优化,表的优化. 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更 ...

  10. Base64编码为什么会使数据量变大

    现在工作中把视频转成base64发现数据量过大无法下载. 1.为什么base64编码会使数据量变大呢? Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据 ...