java数据类型——String

目录

 

1、substring()和String[] split = str.split(",");

2、拼接join

3、判断是否相等

4、空串和NULL

5、码点与代码单元

6、其他API方法

7、构建字符串


1、截取之substring()和String[] split = str.split(",");

String greeting = "Hello";
String s = greeting.substring(0, 3);  //创建了一个由字符“ Hel” 组成的字符串。


substring 方法的第二个参数是不想复制的第一个位置。 这里要复制位置为 0、 1 和 2 (从0 到 2, 包括 0 和 2 ) 的字符。在 substring 中从 0 开始计数,直到 3 为止, 但不包含 3。注意:长度为String.substring(a,b)  length=b-a;

String[] split = str.split(",");

正则表达式匹配日期https://www.cnblogs.com/yejg1212/archive/2013/05/28/3103960.html

2、拼接join

a、用+号进行拼接(任何一个 Java 对象都可以转换成字符串)
b、如果需要把多个字符串放在一起, 用一个定界符分隔,可以使用静态 join 方法:

String all = String.join(" / ", "S", "M", "L", "XL");
// all is the string "S / H / L / XL"
//当采用另一个字符串替换 greeting 的时候, Java 代码大致进行下列操作:

char* greeting = "Hello";
char* temp = ma1oc(6);
strncpy(temp, greeting, 3);
strncpy(temp + 3, "p!", 3);
greeting = temp;

3、判断字符串是否相等

判断字符串字面量是否相等
"Hello".equals(greeting)    注意:开发过程中的比较   (常量).equals(变量)
要想检测两个字符串是否相等,而不区分大小写, 可以使用 equalsIgnoreCase 方法。
"Hello".equalsIgnoreCase("hel1o")

= 运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串
是否放置在同一个位置上。

String greeting = "Hello"; //initialize greeting to a string
if (greeting == "Hello") .
// probably true
if (greeting.substring(0, 3) == "Hel") . . .
// probably false


如果虚拟机始终将相同的字符串共享, 就可以使用= 运算符检测是否相等。但实际上只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不是共享的。因此,千万不要使用 == 运算符测试字符串的相等性, 以免在程序中出现糟糕的 bug。 从表面上看, 这种bug 很像随机产生的间歇性错误。

4、空串和NULL

a、空串 "" 是长度为 0 的字符串。

b、String 变量还可以存放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联

//1、可以调用以下代码检查一个字符串是否为空:
if (str.lengthQ = 0)
或
if (str.equals(""))
//2、要检查一个字符串是否为 null, 要使用以下条件:
if (str == null)
//3、有时要检查一个字符串既不是 null 也不为空串,这种情况下就需要使用以下条件:
if (str != null && str.lengthO != 0)

5、码点与代码单元

Java 字符串由 char 值序列组成。从 3.3.3 节“ char 类型” 已经看到, char 数据类型是一个采用 UTF-16 编码表示 Unicode 码点的代码单元。大多数的常用 Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
length 方法将返回采用 UTF-16 编码表示的给定字符串所需要的代码单元数量。例如:
String greeting = "Hello";
int n = greeting.length。; // is 5 .


要想得到实际的长度,即码数点量,可以调用:
int cpCount = greeting.codePointCount(0, greeting.lengthQ);


调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于 0 ~ s.length()-l 之间。例如:
char first = greeting.charAtO); // first is 'H'
char last = greeting.charAt(4); // last is ’o’


要想得到第 i 个码点,应该使用下列语句
int index = greeting.offsetByCodePoints(0,i);
int cp = greeting.codePointAt(index);

6、其他API方法

• char charAt (int index)
返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个
方法。
• int codePointAt(int Index) 5.0
返回从给定位置开始的码点。
• int offsetByCodePoints(int startlndex, int cpCount) 5.0
返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。
• int compareTo(String other)
按照字典顺序, 如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之
后,返回一个正数; 如果两个字符串相等,返回 0。
• IntStream codePoints() 8
将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。
• new String(int[] codePoints, int offset, int count) 5.0
用数组中从 offset 开始的 count 个码点构造一个字符串。
• boolean equals(0bject other)
如果字符串与 other 相等, 返回 true。
$3t Java 的 基 本 程 序 结 构 5 1
• boolean equalsIgnoreCase( String other )
如果字符串与 other 相等 (忽略大小写,) 返回 tme。
• boolean startsWith( String prefix )
• boolean endsWith( String suffix )

如果字符串以 suffix 开头或结尾, 则返回 true。
• int indexOf ( String str )
• int indexOf( String str, int fromlndex )
• int indexOf ( int cp)
•int indexOf( int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或
fromlndex 开始计算。 如果在原始串中不存在 str, 返回 -1。
• int lastIndexOf( String str )
• int lastIndexOf ( String str, int fromlndex )
• int lastindexOf( int cp)
• int lastindexOf( int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾
端或 fromlndex 开始计算。
• int length( )
返回字符串的长度。
• int codePointCount( int startlndex, int endlndex ) 5.0
返回 startlndex 和 endludex-l 之间的代码点数量。没有配成对的代用字符将计入代码点。
參 String replace( CharSequence oldString,CharSequence newString)
返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可
以用 String 或 StringBuilder 对象作为 CharSequence 参数。
• String substring( int beginlndex )
參 String substring(int beginlndex, int endlndex )
返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l
的所有代码单元。
• String toLowerCase( )
•  String toUpperCase( )
返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字
符串中的所有小写字母改成了大写字母。
• String trim( )
返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
• String join(CharSequence delimiter, CharSequence... elements ) 8
返回一个新字符串, 用给定的定界符连接所有元素。

7、构建字符串

每次连接字符串, 都会构建一个新的 String 对象,
既耗时, 又浪费空间。使用 StringBuildei •类就可以避免这个问题的发生。
如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。 首先, 构建一个空的字符串构建器:
StringBuilder builder = new StringBuilder();

当每次需要添加一部分内容时, 就调用 append 方法。

builder.append(ch); // appends a single character
bui1der.append(str); // appends a string
String completedString = builder.toString()     注意:几乎所有的都有toString()方法

注释: 在 JDK5.0 中引入 StringBuilder 类。 这个类的前身是 StringBuffer, 其效率稍有些低, 但允许采用多线程的方式执行添加或删除字符的操作 ,如果所有字符串在一个单线程中编辑 (通常都是这样,) , 则应该用 StringBuilder 替代它。 这两个类的 API是相同的。

• StringBuilder()
构造一个空的字符串构建器。
• int length()
返回构建器或缓冲器中的代码单元数量。
• StringBuilder append(String str)
追加一个字符串并返回 this 。
• StringBuilder append(char c)
追加一个代码单元并返回 this。
• StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回 this 。
• void setCharAt(int i ,char c)
将第 i 个代码单元设置为 c。
• StringBuilder insert(int offset,String str)
在 offset 位置插入一个字符串并返回 this。
• StringBuilder insert(int offset,Char c)
在 offset 位置插入一个代码单元并返回 this。
• StringBuilder delete(int startindex,int endlndex)
删除偏移量从 startindex 到 -endlndex-1 的代码单元并返回 this。
• String toString()
返回一个与构建器或缓冲器内容相同的字符串
 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值