CoreJavaE10V1P3.6 第3章 Java的基本编程结构-3.6 字符串 String
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的更多相关文章
- CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序
3.1Java最简程序 FirstSample.java public class FirstSample { public static void main(String[] args) { Sys ...
- CoreJavaE10V1P3.5 第3章 Java的基本编程结构-3.5 操作符
最基本的操作为赋值操作,= 即赋值操作符 基本的算术操作为加.减.乘.除取模.除取余数,其对应操作符为 +.-.*./.% 算术操作与赋值操作联合衍生为:+=:-=:*=:/=:%=: 由于处理器硬件 ...
- CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
数组是存储同一类型数据的数据结构 数组的声明与初始化 int[] a; int a[]; int[] a = new int[100]; int[] a = new int[100]; for (in ...
- CoreJavaE10V1P3.9 第3章 Java的基本编程结构-3.9 大数值(Big Numbers)
如果基本的整型与浮点型不能满足需求,可以使用java.Math包提供的 BigInteger 和 BigDecimal 两个类,这两个类可以存储任意长度的数, BigInteger 实现的任意精度整数 ...
- CoreJavaE10V1P3.8 第3章 Java的基本编程结构-3.8 控制流程(Control Flow)
通过使用条件语句.循环语句可以实现流程的控制. 3.8.1 块作用域(Block Scope) 块(Block)就是由一对花括号包围起来的部分.他指定了一个变量的生存范围,与一个方法的操作范围. Ja ...
- 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 ...
- CoreJavaE10V1P3.4 第3章 Java的基本编程结构-3.4 变量
1.在Java中,每一个变量都必须有一个类型,在变量声明是,类型必须在变量名之前.示例如下: double salary; int vacationDays; long earthPopulation ...
- CoreJavaE10V1P3.3 第3章 Java的基本编程结构-3.3 数据类型
3.3 数据类型 这里所说的数据类型是指 Java的8中基本数据类型,是原生就存在的. 不同进制数的字面值表示方法 进制 字面值表示方法 例子 是否默认 JDK版本支持 2进制 0b或0B前缀(每4位 ...
- CoreJavaE10V1P3.2 第3章 Java的基本编程结构-3.2 注释
3.2 注释 1. //形式注释 System.out.println("We will not use 'Hello, World!'"); // is this too cut ...
随机推荐
- WebService支持多平台上传文件的实现
WebService支持多平台上传文件的实现 要使用网站上传文件,在ASP.NET的范畴,我基本上能想到的有两类,一类是通过HTTP POST请求获得文件信息,另外一类是通过WebService或 ...
- MacVim小试
Mac OS X使用之——新年第一天弘法寺许愿,MacVim小试 分类: Vi/Vim Mac OS X2013-01-01 22:08 3371人阅读 评论(0) 收藏 举报 目录(?)[+] ...
- lnmp1.0 升级php.5.4.28 后出错 Nginx 502 Bad Gateway
碰到一个很奇怪的问题,用lnmp自带的./upgrade_php.sh升级 php5.4.27正常.但升级到php5.4.28就出错,访问p.php 提示:Nginx 502 Bad Gateway. ...
- SQL Server的数据加密简介
防止开发人员获取到敏感数据(SQL Server的数据加密简介) 背景 有时候,我们还真的会碰到这样的需求:防止开发人员获取到敏感数据.也许你觉得很简单,把开发和运营分开不就可以了吗?是的,如果公司有 ...
- linux网络编程(一)
一.概念介绍 网络程序分为服务端程序和客户端程序.服务端即提供服务的一方,客户端为请求服务的一方.但实际情况是有些程序的客户端.服务器端角色不是这么明显,即互为客户端和服务端. 我们编写网络程序时,一 ...
- socket网络编程快速上手(二)——细节问题(4)
5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号的东西,感觉他就像一位隐士,很少遇到他,而他又无处不在 ...
- 关于CKEditor.NET的安全性错误
关于CKEditor.NET的安全性错误 一直以来在网站上使用FCKEditor.NET文本编辑器 版本应该算是比较早的一个 在使用过程中基本上没有出现什么问题 但是自服务器的IIS(同样都是IIS6 ...
- ngx-push-stream模块源码学习(五)——内存清理
1.定时器 采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生) 发布.订阅均有可能产生ch ...
- MVC从视图传参到Controller几种方式
简单数组传递 var array = ["aaa", "bbb", "ccc"]; $.ajax({ url:"@Url.Acti ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...