Java快问快答小集锦06-怎么理解JavaSE中的String?

根据JAVA的提供的一些信息来看一下String这个特殊的对象:

java.lang public final class String
extends Object
implements java.io.Serializable, Comparable<String>, CharSequence

首先String 是属于java.lang包下面的资源,它是继承了Object这个基类,并且根据它的定义能得知它是一个不可变的(final)的class
(这里的不可变需要再往下深挖一下,我后面再补充)
这个string对象实现了io中的Serializable序列化接口,实现了Comparable接口,也实现了CharSequence(字符序列)接口

再继续往下阅读JAVA的代码:

The {@code String} class represents character strings. 
首先String这个类是表示的字符串

string literals in Java programs, such as {@code "abc"}, are implemented as instances of this class
例如一个"abc"就可以表示Java程序中String这个字符串中的一个具体实例对象

Strings are constant; their values cannot be changed after they are created.
String字符串是恒定的,当一个字符串被实例化之后,它的值就是不可变的了

String buffers support mutable strings.
string buffer(字符缓冲区)是支持可变字符串的

Because String objects are immutable they can be shared.For example:
因为String字符串是不可变的,所以他们可以被分享,举例子如下:
 * <blockquote><pre>
 *     String str = "abc";
 * </pre></blockquote><p>
 * is equivalent to:
 * <blockquote><pre>
 *     char data[] = {'a', 'b', 'c'};
 *     String str = new String(data);
 * </pre></blockquote><p>
 
上面的这个 字符串str和下面的这个char数组元素组成的字符串可以说是相等的,因为两者本质是一样的.

<blockquote><pre>
 *     System.out.println("abc");
 *     String cde = "cde";
 *     System.out.println("abc" + cde);
 *     String c = "abc".substring(2,3);
 *     String d = cde.substring(1, 2);
 * </pre></blockquote>
 上面的这几个小Demo都是说明了一点:字符串创建之后因为它的"不可变性",所以可以这样截取subString方式后直接相等

The class {@code String} includes methods for examining individual characters of the sequence,
String这个类当中包含了一些可以用来检测字符序列的方法(字符头\字符尾first index of \last index of)

for comparing strings, for searching strings, for extracting substrings, and for creating a copy of a string with all characters translated to uppercase or to lowercase.
上面的除了可以检测字符序列的方法,还包含了查询是否包含了另一个string对象(相当于子字符串),也可以把字符串更改为全为大写的,或者全为小写的(这个应用常应用在项目当中的用户登录界面的密码验证:为了防止用户的计算机差异,统一把用户传过来的登录信息转化为统一的一种类型)

Case mapping is based on the Unicode Standard version specified by the {@link java.lang.Character Character} class.
mapper的映射原理也是基于Unicode编码标准下class类是核定不变的这一先决条件进行的,设想一个场景,如果map中的key值不能够保证它的核定性,那么key值将会不断变化,这就会有很大麻烦,例如存储的key都是转化成String类型的进行保存,就是为了保证底层的稳定不可变.

The Java language provides special support for the string concatenation operator (&nbsp;+&nbsp;)
Java语言中为String类型提供了特殊的连接符号的支持"+"这个特殊的对象可以在java中专门做连接符拼接对象

and for conversion of other objects to strings 
Java中的一些其他对象也可以转化成为String类型例如常用的arrays.tostring的用法其实就是把array转化为string

 String concatenation is implemented through the {@code StringBuilder}(or {@code StringBuffer} class and its {@code append} method.
 StringBuilderString buffer有高效拼接的作用效果,这个后面也可以进行详细的解读.
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值