浅谈Java字符串
从概念上而言,Java字符串就是Unicode字符序列。由于Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String,每个用双引号的括起来的字符串都是String类的一个实例:
String t = ""; // 空字符串
String t = "Hello"; //字符串t的内容为Hello
很自然地,我们会考虑对字符串进行操作,比如取字符串中的子串进行操作,这里我们就要用到substring方法:
String t = "Welcome to Java world!";
String s = t. substring(0,4); //substring第一个参数表示从什么位置取字符常量,第二个参数表示取多少个字符常量
Java语言支持"+"拼接两个字符串,如果要把多个字符串拼接放在一起,用一个定界符分割,可以使用静态join方法:
String all = String.join("/","j","a","v","a");
System.out.println(all); // 输出j/a/v/a
//在String.join()方法中,第1个参数是分隔符,第2个参数是需要进行拼接的元素,可以是多个字符串,可以是字符串数组,可以是字符串队列。
要想更清楚了解String.join()方法,我们来看看源码:
//String.join()
//delimiter 分隔符
//elements 需要连接的元素
public static String join(CharSequence delimiter, CharSequence... elements) {
//判断是否为null,如果为null,抛出NullPointerException
Objects.requireNonNull(delimiter);
Objects.requireNonNull(elements);
//构造一个分隔符为delimiter的实例
StringJoiner joiner = new StringJoiner(delimiter);
//循环拼接
for (CharSequence cs: elements) {
joiner.add(cs);
}
return joiner.toString();
} //StringJoiner构造器源码
//1个参数构造器
public StringJoiner(CharSequence delimiter) {
//调用3个参数构造器
this(delimiter, "", "");
} //3个参数构造器
//delimiter 分隔符
//prefix 前缀
//suffix 后缀
public StringJoiner(CharSequence delimiter,
CharSequence prefix,
CharSequence suffix) {
//判断是否为null,如果为null,抛出NullPointerException
Objects.requireNonNull(prefix, "The prefix must not be null");
Objects.requireNonNull(delimiter, "The delimiter must not be null");
Objects.requireNonNull(suffix, "The suffix must not be null");
//为成员变量赋值
//前缀
this.prefix = prefix.toString();
//分隔符
this.delimiter = delimiter.toString();
//后缀
this.suffix = suffix.toString();
this.emptyValue = this.prefix + this.suffix;
} public StringJoiner add(CharSequence newElement) {
//prepareBuilder()返回参数,调用append()方法
prepareBuilder().append(newElement);
return this;
} private StringBuilder prepareBuilder() {
if (value != null) {
value.append(delimiter);
} else {
value = new StringBuilder().append(prefix);
}
return value;
}
Java的String类对象为不可变字符串,类似于final类。它有个优点就是:编译器可以共享字符串变量。看起来就像是将各种字符串放在公共的储存池里,字符串变量指向储存池中相应的位置。
另外java String 类比较字符串相等时时不能用“ == ”,只能用 "equals" 。
参考:
1.https://blog.csdn.net/qq_24404723/article/details/86064533
2.Java核心技术
浅谈Java字符串的更多相关文章
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 【转】浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 浅谈Java的反射机制和作用
浅谈Java的反射机制和作用 作者:Java大师 欢迎转载,转载请注明出处 很多刚学Java反射的同学可能对反射技术一头雾水,为什么要学习反射,学习反射有什么作用,不用反射,通过new也能创建用户对象 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
- 浅谈java性能分析
浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...
随机推荐
- Linux下MongoDB的安装、配置、启动
下载 MongoDB下载地址为 https://www.mongodb.org/downloads 安装 将文件放到/usr/local/目录下并解压 tar -zxvf mongodb-linux- ...
- java上传、下载、删除ftp文件
一共三个类,一个工具类Ftputil.,一个实体类Kmconfig.一个测试类Test 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/669710 ...
- XCode和Cocoa在开发中使用第三方dylib示例
XCode和Cocoa在开发中使用第三方dylib示例 www.educity.cn 发布者:yukowang 来源:网络转载 发布日期:2014年06月13日 XCode和Co ...
- C++高精度乘法
#include <cstdio> #include <iostream> #include <algorithm> void highPrecision (int ...
- windows 7虚拟机与主机不能互ping通,但是都能与网关ping通
这里是在Windows 10的环境下使用VMware安装了一个Windows 7的虚拟机,虚拟机中是使用桥接的方式.结果发现虚拟机不能与物理机互通,但是却能与网关互通.查看虚拟机和物理机的IP发现都是 ...
- Java开发工具下载
一.Tomcat下载: http://tomcat.apache.org/ 二.Maven下载: http://maven.apache.org/download.cgi 三.eclipse下载: h ...
- Python9-反射-day27(大年初三)
复习 class 类名(父类,父类2): 静态属性 = '' #静态属性 类属性 def __init__(self): #初始化方法 self.name = 'alex' def func(self ...
- Python9-装饰器进阶-day12
wapers方法 def wahaha(): ''' sljfldsjflds :return: ''' print('娃哈哈') print(wahaha.__name__) #查看字符串格式的函数 ...
- 【HDU 2126】Buy the souvenirs(01背包)
When the winter holiday comes, a lot of people will have a trip. Generally, there are a lot of souve ...
- GitHub中国区前100名到底是什么样的人?(转载)
本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品<技术人员 ...