(三)java字符串
不可变字符串
Java没有字符串类型,而是提供了一个预定义类String。
java中的字符串是不可变字符串,因此无法更改某一个字符串变量的内容。
优点:编译器可以让字符串共享。当复制一个字符串时,原始字符串和复制的字符串共享相同的字符。
缺点:修改字符串时,需要通过修改字符串变量,让该变量引用另外一个字符串。这会降低运行效率。
总结:程序中很少需要修改字符串,往往是对字符串进行比较。因此共享带来的高效率远远胜过提取、拼接所带来的低效率。
字符串比较
前面提到编译器可以让字符串共享,因此当两个字符串共享同一个字符时,可以使用==比较两个字符串变量。然而使用+或substring处理的字符串并不是共享的,因此必须使用equals方法比较。
举例:
public class main01 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hello";
//以上s1,s2共享同一个“hello”
String s3 = s2+"";
//s3使用另一个存储空间的“hello”
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1.equals(s3));
}
}
输出:
true
false
true
构建字符串
有时候需要由多个较短的字符串构建字符串,采用字符串连接的方式每次都要创建新的对象,效率很低。可以使用StringBuilder类解决。(多线程可以使用StringBuffer类)
StringBuilder sb = new StringBuilder();
sb.append("hello ");
sb.append("world");
String s = sb.toString();
注意:StringBuilder和StringBuffer类相似,只不过StringBuffer适合多线程,保证线程安全。StringBuilder适合用在单线程,但速度更快。
(三)java字符串的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- (转)Java字符串
转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...
- java 字符串函数
string1.equals(string2) 比较字符串 substring()它有两种形式,第一种是:String substring(int startIndex)第二种是:String sub ...
- Java字符串进阶
Java字符串进阶 前言 最常用的对字符串操作的类有三个,分别是String,StringBuilder,StringBuffer,下面将会详细的说说这三个类...... String String类 ...
- JAVA字符串操作 (转)
JAVA字符串操作 原帖地址:http://blog.163.com/hn_myj@126/blog/static/50555635200861133942947/ 参考:http://blog.cs ...
- 为什么Java字符串是不可变对象?
转自 http://developer.51cto.com/art/201503/468905.htm 本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Ja ...
- Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较
参考网上相关blog,对Java字符串的匹配问题进行了简单的比较和总结,主要对String类的matches方法与Matcher类的matches方法进行了比较. 对Matcher类的matches( ...
- java 字符串池【转】
java 字符串池 java运行环境有一个字符串池.比如String str="abc"时,会首先查看字符串池中是否存在字符串"abc",如果存在则直接将&qu ...
- Java开发知识之Java字符串类
Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...
- java 字符串笔记
java字符串当中有三个关于字符串对象的类. String 首先谈论下他们各自的含义: 1.String含义为引用数据类型,是字符串常量.是不可变的对象,(显然线程安全)在每次对string类型进行改 ...
随机推荐
- 对于gitHub的总结随笔
作用:用于项目的版本管理 密切相关的是 git 操作 1.本地的文件上传到github上 ...
- Python学习笔记:第3天 字符串的操作
目录 1. python的数据类型 2. int类型的操作 3. bool类型 4. 字符串的操作 5. for循环 1. python的数据类型 int 整数 str 字符串.一般不会用字符串保存大 ...
- cannot import name '_imaging' 报错
例子如下: from PIL import Image import pytesseract as pt text = pt.image_to_string(Image.open("text ...
- 使用cgroups来控制磁盘IO带宽
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackga ...
- 北京Uber优步司机奖励政策(3月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(10月26日~11月1日)
用户组:优步北京人民优步A组(适用于10月26日-11月1日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/ ...
- SVN的使用——下载、安装
今天我们来学习一下如何使用SVN(Subversion) 既然要使用SVN那么我们就先来认识一下SVN.SVN的全名是Subversion,它是一个自由,开源的版本控制系统.在Subversion管理 ...
- jquery实现倒计时功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- FreeRTOS信号量的封装函数参数是二级指针
1. 先看正确的封装方式,问题所在,为什么要用2级指针 void cissys_lockcreate(void** mutex) { //创建信号量,应该是互斥锁 *mutex = ((Semapho ...
- excell 导入 导出
1.jar包 2.POIUtils工具类 package com.esstglobal.service.utils; import java.io.BufferedInputStream; impor ...