String类(java.lang.String)就是Unicode字符序列,例如:"Java\u2122"

3.6.1 Substring 提取子串

String greeting = "Hello";
String s = greeting.substring(0, 3);
s结果为“Hel”

3.6.2 字符串拼接

int age = 13;
String rating = "PG" + age;
rating 结果为 "PG13"

3.6.3 字符串的不可变性

Java中没有一个方法可以直接修改字符串中的某个字符,只能通过 提取子串与拼接 间接实现。例如:

greeting = greeting.substring(0, 3) + "p!";

将greeting 由 “Hello”修改为“help”

3.6.4 判断字符串是否相等

s.equals(t)
"Hello".equals(greeting)
"Hello".equalsIgnoreCase("hello")
equals 用于判断两个字符串的值是否相等 String greeting = "Hello"; //initialize greeting to a string
if (greeting == "Hello") . . .
// probably true
if (greeting.substring(0, 3) == "Hel") . . .
// probably false
== 用于判断两个是否为同一个字符串,即存储地址是否相同

3.6.5 空字符串与Null字符串

空字符串是长度为0的字符串,可用如下方法判定:

if (str.length() == 0)
if (str.equals(""))

空字符串的内容为空,而Null字符串不为空,存储的值是 null

if (str != null && str.length() != 0)

用于判断一个字符串既不是空,又不是null。

3.6.6 字符串的编码点与编码单元 (Code Points and Code Units)

Java 的 String 由 char 序列构成,而 char是UTF-16编码的编码序列,UTF-16是用于表示Unicode 的编码点的。即:编码点是编码字符串的最小单元,一个编码点的内容由UTF-16 表示,也就是char,但是有些Unicode字符由2个(一对)编码单元构成,例如( U+1D546)也就是一个unicode有多个UTF-16,多个char,一个unicode就是一个编码点。

String greeting = "Hello";
int n = greeting.length(); // is 5.

length 返回的是String的编码单元的数量。

如果要得到String只能中字符的真正的数目,也就是编码点的数量,使用下列方法:

int cpCount = greeting.codePointCount(0, greeting.length());
char first = greeting.charAt(0); // first is 'H'
char last = greeting.charAt(4); // last is 'o'

charAt方法返回的也是 编码单元处的内容。

如果要获取第i个编码点,也就是第i个真正的字符,可以使用下列方法

int index = greeting.offsetByCodePoints(0, i);
int cp = greeting.codePointAt(index);

3.6.7 String API

String类有很多方法,重要的如下:

char charAt(int index)
returns the code unit at the specified location.You probably don’t want to call this method unless you are interested in low-level code units.
• int codePointAt(int index) 5.0
returns the code point that starts at the specified location.
• int offsetByCodePoints(int startIndex, int cpCount) 5.0
returns the index of the code point that is cpCount code points away from the code point at startIndex .
• int compareTo(String other)
returns a negative value if the string comes before other in dictionary order, a positive value if the string comes after other in dictionary order, or 0 if the strings are equal.
• IntStream codePoints() 8
returns the code points of this string as a stream. Call toArray to put them in an array.
• new String(int[] codePoints, int offset, int count) 5.0
constructs a string with the count code points in the array starting at offset .
• boolean equals(Object other)
returns true if the string equals other .
• boolean equalsIgnoreCase(String other)
returns true if the string equals other , except for upper/lowercase distinction.
• boolean startsWith(String prefix)
• boolean endsWith(String suffix)
returns true if the string starts or ends with suffix int indexOf(String str)
• int indexOf(String str, int fromIndex)
• int indexOf(int cp)
• int indexOf(int cp, int fromIndex)
returns the start of the first substring equal to the string str or the code point cp ,starting at index 0 or at fromIndex , or -1 if str does not occur in this string.
• int lastIndexOf(String str)
• int lastIndexOf(String str, int fromIndex)
• int lastindexOf(int cp)
• int lastindexOf(int cp, int fromIndex)
returns the start of the last substring equal to the string str or the code point cp ,starting at the end of the string or at fromIndex .
• int length()
returns the number of code units of the string.
• int codePointCount(int startIndex, int endIndex) 5.0
returns the number of code points between startIndex and endIndex - 1 .
• String replace(CharSequence oldString, CharSequence newString)
returns a new string that is obtained by replacing all substrings matching oldString in the string with the string newString .You can supply String or StringBuilder objects
for the CharSequence parameters.
• String substring(int beginIndex)
• String substring(int beginIndex, int endIndex)
returns a new string consisting of all code units from beginIndex until the end of the string or until endIndex - 1 .
• String toLowerCase()
String toUpperCase()
returns a new string containing all characters in the original string, with uppercase characters converted to lowercase, or lowercase characters converted to uppercase.
• String trim()
returns a new string by eliminating all leading and trailing whitespace in the original string.
• String join(CharSequence delimiter, CharSequence... elements) 8 Returns a new string joining all elements with the given delimiter.

3.6.8 在线阅读API文档

Java的文档保存在JDK 安装目录的docs/api/index.html(如果安装的话)

3.6.9 构建String

有时候需要把一些短的字符串构建成一个长的字符串,如果使用连接(+)的方法,费时,非空间,这里提供StringBuilder类(java.lang.StringBuilder)解决此问题。

StringBuilder builder = new StringBuilder();
builder.append(ch); // appends a single character
builder.append(str); // appends a string
String completedString = builder.toString();

CoreJavaE10V1P3.6 第3章 Java的基本编程结构-3.6 字符串 String的更多相关文章

  1. CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序

    3.1Java最简程序 FirstSample.java public class FirstSample { public static void main(String[] args) { Sys ...

  2. CoreJavaE10V1P3.5 第3章 Java的基本编程结构-3.5 操作符

    最基本的操作为赋值操作,= 即赋值操作符 基本的算术操作为加.减.乘.除取模.除取余数,其对应操作符为 +.-.*./.% 算术操作与赋值操作联合衍生为:+=:-=:*=:/=:%=: 由于处理器硬件 ...

  3. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)

    数组是存储同一类型数据的数据结构 数组的声明与初始化 int[] a; int a[]; int[] a = new int[100]; int[] a = new int[100]; for (in ...

  4. CoreJavaE10V1P3.9 第3章 Java的基本编程结构-3.9 大数值(Big Numbers)

    如果基本的整型与浮点型不能满足需求,可以使用java.Math包提供的 BigInteger 和 BigDecimal 两个类,这两个类可以存储任意长度的数, BigInteger 实现的任意精度整数 ...

  5. CoreJavaE10V1P3.8 第3章 Java的基本编程结构-3.8 控制流程(Control Flow)

    通过使用条件语句.循环语句可以实现流程的控制. 3.8.1 块作用域(Block Scope) 块(Block)就是由一对花括号包围起来的部分.他指定了一个变量的生存范围,与一个方法的操作范围. Ja ...

  6. CoreJavaE10V1P3.7 第3章 Java的基本编程结构-3.7 输入输出(Input ,Output)

    3.7.1 读取输入 Scanner in = new Scanner(System.in); System.out.print("What is your name? "); S ...

  7. CoreJavaE10V1P3.4 第3章 Java的基本编程结构-3.4 变量

    1.在Java中,每一个变量都必须有一个类型,在变量声明是,类型必须在变量名之前.示例如下: double salary; int vacationDays; long earthPopulation ...

  8. CoreJavaE10V1P3.3 第3章 Java的基本编程结构-3.3 数据类型

    3.3 数据类型 这里所说的数据类型是指 Java的8中基本数据类型,是原生就存在的. 不同进制数的字面值表示方法 进制 字面值表示方法 例子 是否默认 JDK版本支持 2进制 0b或0B前缀(每4位 ...

  9. CoreJavaE10V1P3.2 第3章 Java的基本编程结构-3.2 注释

    3.2 注释 1. //形式注释 System.out.println("We will not use 'Hello, World!'"); // is this too cut ...

随机推荐

  1. JavaScript实例技巧精选(14)—动态变化背景颜色

    >>点击这里下载完整html源码<< 这是截图: 网页背景颜色随时间变化,核心代码如下: <SCRIPT LANGUAGE="JavaScript"& ...

  2. c#实现microsoft账号登入授权(OAuth 2.0)并获取个人信息

    本博主要介绍microsoft 账号授权(OAuth 2.0)登入并获取用户信息的过程,因为写过google账号授权登入的过程,所以这里就简单介绍一下,google授权登入参考地址:http://ww ...

  3. MVC test

    1,index @{ ViewBag.Title = "Index"; } <!DOCTYPE html> <html> <head> < ...

  4. [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取

    算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...

  5. js冒泡排序和二分查找

    冒泡排序: var arr=[5,0,-56,900,12,9000,-123,-1000]; var flag=false; for(var i=0;i<arr.length-1;i++){ ...

  6. 简单2步实现 asp.net mvc ckeditor 图片上传

    1.打开ckeditor 包下的  config.js,添加一句 配置(PS:ckeditor 很多功能都在该配置文件里配置),如下: config.filebrowserImageUploadUrl ...

  7. flowplayer视频播放插件

    flowplayer视频播放插件 最近项目中需要添加播放视频的功能,视频文件是flv格式的.在网上找了一些jQuery视频播放插件,还是觉得“flowplayer”要好一些.特将使用方法记录一下. f ...

  8. SSD Buffer Pool Extension

    SSD Buffer Pool Extension 简介 SQL Server 2014中另一个非常好的功能是,可以将SSD虚拟成内存的一部分,来供SQL Server数据页缓冲区使用.通过使用SSD ...

  9. 如何让msvsmon.exe 以服务方式运行

    通常我们在VS上调试程序用的都是msvsmon.exe, 使用管理员权限运行再选项设置任何人可以调试就可以了,而这个在绝大多数情况下都没有问题.而我想说的就是特殊的情况,跟msvsmon的运行权限相关 ...

  10. STM32通过FSMC驱动3.2寸液晶屏实现的音乐频谱

    视频演示: http://player.youku.com/player.php/sid/XNDcyMDgwMTE2/v.swf 源码下载: lattice_ music _tft.rar(1.42 ...