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. MVC Filter 实现方式和作用范围控制

    Asp.Net MVC Filter 实现方式和作用范围控制 MVC中的Filte 简单又优雅的实现了AOP ,在日志,权限,缓存和异常处理等方面用的比较多.但本文不是讨论Filter这些功能点,而是 ...

  2. 【转】Objective-C并发编程:API和挑战

    并发指的是在同一时间运行多个任务.在单核CPU的情况下,它通过分时的方式实现,如果有多个CPU可用,则是真正意义上的多个任务“并行”执行了. OS X和iOS提供了多个API支持并发编程.每个API都 ...

  3. 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore

    05 2013 档案 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(一) 摘要: 完成SportsStore电子商务平台,你将学会: 1.使用MVC4开 ...

  4. 用TableView做的新闻客户端展示页面

    用TableView做的新闻客户端展示页面 //  MyTableViewImageCell.m //  SildToDo // //  Created by WildCat on 13-8-18. ...

  5. XSD实例

    XSD实例 在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素.属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改), ...

  6. hone hone clock人体时钟

    hone hone clock是个十分有趣的人体时钟,这个时钟代码分两种一种是背景透明的,一种 是白色背景的,把你喜欢的代码添加到你的网页中适当位置即可.两种代码如下: <script char ...

  7. SQLSERVER之高灵活的业务单据流水号生成

    SQLSERVER之高灵活的业务单据流水号生成 最近的工作中要用到流水号,而且业务单据流水号生成的规则分好几种,并非以前那种千篇一律的前缀+日期+流水号的简单形式,经过对业务的分析,以及参考网上程序员 ...

  8. ASP.NET基础之HttpModule学习

    最近学习WCF知识时看到有关IIS版本的知识,发现对HttpContext,HttpModule,HttpHandler的内容都不是很了解,这三个也是ASP.NET相对基础的内容,晚上特地花点时间针对 ...

  9. 在MVC3中使用WebForm

    Mvc和WebForm一直是有争议的两个平台,园子里也有很多人写过这方面的文章,给我印象比较深的是去年的时候看过的两篇文章http://www.cnblogs.com/mikelij/archive/ ...

  10. Union 与 Union all 区别

    原创,请园长不要删 Sql查询统计时,很多时候用到了union 和 union all,union与union all的区别就是联合查询的时候union会去重,union all不会去重.本人用uni ...