Java-String字符串相关
字符串String:
封装char[] 字符数组,不可变(因为在底层代码中,值用final关键字修饰)
字符串的字面值:
如果第一次用到一个字符串字面值,会在内存中“字符串常量池”内新建对象,当再次使用相同字面值时,
直接访问常量池中存在的实例,而不新建对象。
public class TestString {
public static void main(String[] args) {
char[] a = {'h','e','l','l','o'};
String s1 = new String(a); //内存中新分配内存空间
String s2 = "hello"; //在常量池新建对象
String s3 = "hello"; //访问常量池存在的对象
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1 == s2); //输出false,内存地址不相等
System.out.println(s2 == s3); //输出true,内存地址相等,引用指向同一个对象
System.out.println(s1.equals(s2)); //比较字符内容
}
}
字符串连接效率:
字符串一旦创建,字符串的内容不可变,任何对字符串修改的操作,都是在新建字符串。
接下来采用System.currentTimeMillis()方法来观察用String拼接字符串的效率。先在拼接行为前记录当前时间,再在拼接行为后也记录一下时间,相减后即为拼接行为所花的时间。
public class Test01 {
public static void main(String[] args) {
String s0 = "abcdefqhijklmnopqrstuvwxyz";
String s = "";
//系统当前时间点毫秒值
//毫秒值:1970-1-1 0点开始的毫秒值
long t = System.currentTimeMillis();
for(int i=0;i<100000;i++) {
s += s0;
}
t = System.currentTimeMillis() - t;
System.out.println(t);
}
}
输出结果为140285,拼接行为花了140285毫秒,共创建100000个对象,显然效率很低,而且十分浪费空间。
高效率字符串连接:
StringBuilder、StringBuffer:
封装char[]字符数组,可变。(值没有用final修饰)
StringBuilder和StringBuffer的区别:
StringBuilder 线程不安全,效率高;StringBuffer 线程安全,效率低。通常都是用StringBuilder
采用StringBuilder进行字符串连接,通过在原字符数组基础上的数组扩容进行拼接,不会建立新对象,可以显著提高连接效率。
依旧采用System.currentTimeMillis()方法来观察用StringBuilder拼接字符串的效率。
public class Test02 {
public static void main(String[] args) {
String s0 = "abcdefqhijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder("");
//系统当前时间点毫秒值
//毫秒值:1970-1-1 0点开始的毫秒值
long t = System.currentTimeMillis();
for(int i=0;i<100000;i++) {
sb.append(s0);
}
t = System.currentTimeMillis() - t;
System.out.println(t);
}
}
输出结果为11,拼接行为只花了11毫秒,显然效率提高了很多很多。
Java-String字符串相关的更多相关文章
- Java String 字符串操作小结
// 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...
- Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0
课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值 String str=& ...
- java String字符串
五.java数据类型之String(字符串) CreateTime--2017年7月21日16:17:45 Author:Marydon (一)数据格式 (二)初始化 // 方式一 String ...
- Java String 字符串类细节探秘
一. 字符串基本知识要点 字符串类型String是Java中最常用的引用类型.我们在使用Java字符串的时候,通常会采用两种初始化的方式:1. String str = "Hello Wor ...
- Java String的相关性质分析
引言 String可以说是在Java开发中必不可缺的一种类,String容易忽略的细节也很多,对String的了解程度也反映了一个Java程序员的基本功.下面就由一个面试题来引出对String的剖析. ...
- 面试之Java String 编码相关
实话说,作为一个多年Java老年程序员,直到近来,在没有决心花时间搞清楚Java String的编码相关问题之前, 自己也都还是似懂非懂,一脸懵逼的.设想如果在面试中,有同学能够条理清晰的回答下面的问 ...
- java String字符串——进度1
String字符串 在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种, 第一种是直接赋值, 第二种是使用String类的构造方法: 如下所示: Strin ...
- Java String字符串深入详解
Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new ...
- String字符串相关操作
.length 字符串长度.equals 比较字符串.equalIgnoreCase 比较字符串不区别大小写.charAt 获取字符串指定下标位置的字符.contains 判断字符串内是否包含某字符串 ...
- Java String类相关知识梳理(含字符串常量池(String Pool)知识)
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...
随机推荐
- 端口扫描程序nmap使用手册
其实还是建议看英文的man,对以后学习其他东西很有帮助的:) 摘要 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...
- 并不对劲的bzoj3677:p3647:[APIO2014]连珠线
题目大意 有一种生成\(n\)个点的树的方法为: 一开始有一个点,\(n-1\)次操作,每次可以有两种操作:1.选一个点,用一条红边将它与新点连接:2.将新点放在一条红边上,新点与这条红边两端点直接的 ...
- a标签无法传递中文参数问题的解决
a标签无法传递中文参数问题的解决. 可以通过form表单提交 隐藏域的方法解决. 前台jsp页面: <a class="vsb_buton" href="javas ...
- bzoj 4712 洪水 —— 动态DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4712 设 f[x] = min(∑f[u] , a[x]),ls = ∑f[lson] 矩阵 ...
- Win 7下破解Loadrunner 11(带中文版下载地址)
空间管理您的位置: 51Testing软件测试网 » 测试是一种生活态度 » 日志 与您一起分享在测试过程中的快乐与辛酸... Win 7下破解Loadrunner 11(带中文版下载地址) 上一篇 ...
- docker的安装与卸载
卸载老版本docker sudo apt-get remove docker docker-engine docker.io /var/lib/docker/目录下存放着 images, contai ...
- 【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制
Eclipse插件开发实战1--eclipse内核结构.扩展点机制 一.前言 本系列总体介绍eclipse插件开发基本理论.插件项目结构及开发步骤,最后再给出两个插件开发实例. 总体安排结构如下: 1 ...
- Oracle 11g client 安装
本文所有红色字体标注的为本人计算机安装方法(Oracle 11g安装在本地 Oracle 11g client 也是安装在本地 如果情况一致 可参照本人方法安装) Oracle 11g client ...
- dos生成目录树
1. tree命令详解 [Tree命令作用] 以图形显示驱动器或路径的文件夹结构. [Tree命令格式] 在命令行窗口使用tree /?查看帮助. TREE [drive:][path] [/F] [ ...
- HTML5标签不兼容ie怎么办?
HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 比较常用的HTML5的新标签元素有: <hea ...