【编程实践】:java基础+字符串的使用

1、前言

《编程实践:JDK篇》正在写作中。。。
欢迎路过的java新手一起交流。。。
欢迎大佬指正。。。

1.1文章说明

本文主要描述字符串的使用。。。

本文首先设计了一个字符串的解析程序加深对java基础
的理解,然后附上这个解析程序的部分实现代码,最后就java基础中的
字符串的使用做出总结

1.2问题提出

众所周知,字符串是一个强大的工具。。。
不管是java、python、c++等,还是其他编程语言都离不开字符串的解析,
网页、源代码、文章等都是使用文本类文件来存储,这个过程中都会使用字符串。
在java中,我们可以用"user.getName"这种方式来调用user对象的getName方法
那么java编译器在编译源代码过程中,如何解析"user.getName"这个字符串的呢?这是一个
值得思考的问题

2、字符串的使用

1、声明字符串

在Java语言中的字符串必须在一对“ ”(双引号)之内。

例如:

"33"、"Hello"、"世界"

2、创建字符串

String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明。

(1)String(char a[])用数组创建字符串

char arr[]={'n','b','a'};
String str=new String(arr);
 
//以上操作相等于 String str=new String("nba");

(2)String(char a[],int offset,int length)提取字符数组
offset开始提取字符的位置,length提取字符的长度。

char arr[]={'a','b','c','d','e','f',g};
String str=new String(arr,2,4);
 
//以上操作相等于 String str=new String("cdef");
字符

(3)String str=“value”

String str=new String("abcd");

3、字符串对象的方法详解

字符串对象由java.lang.String类封装。。。
Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写

1、charAt
public char charAt(int index)
返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。

2、length
public int length()
返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。

3、isEmpty
public boolean isEmpty()
当且仅当 length() 为 0 时返回 true。

4、indexOf
public int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引(以 Unicode 代码单元表示)

5、lastIndexOf
public int lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。

6、substring
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

7、substring
public String substring(int beginIndex,
int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

8、replace
public String replace(char oldChar,
char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的 oldChar 都被替换为 newChar 之外,与此 String 对象表示的字符序列相同

9、split
public String[] split(String regex,
int limit)
根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

10、trim
public String trim()
返回字符串的副本,忽略前导空白和尾部空白。
如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 ‘\u0020’(空格字符),则返回对此 String 对象的引用。
否则,若字符串中没有代码大于 ‘\u0020’ 的字符,则创建并返回一个表示空字符串的新 String 对象。
否则,假定 k 为字符串中代码大于 ‘\u0020’ 的第一个字符的索引,m 为字符串中代码大于 ‘\u0020’ 的最后一个字符的索引。创建一个新的 String 对象,它表示此字符串中从索引 k 处的字符开始,到索引 m 处的字符结束的子字符串,即 this.substring(k, m+1) 的结果。
此方法可用于截去字符串开头和末尾的空白(如上所述)。

4、字符串应用案例

4.1解析JSON引用变量

在JSON引用变量的解析过程中,我们通过观察发现,".“连接的是两个一级变量,而”[]“内放的是一个二级变量,所以”.“是一个一级分隔符,而”[]"是一个二级分隔符。

String str = "user.name['english'].first";
		
		/*用"."分隔一级变量*/
		String[] vars = str.split("[.]");
		if(vars!=null) {
			for(int i=0;i<vars.length;i++) {
				
				/*查找一级变量中二级下标的起始符*/
				int startIndex = vars[i].indexOf('[');
				
				/*查找一级变量中二级下标的结束符*/
				int endIndex = vars[i].lastIndexOf(']');
				if(startIndex>0&&endIndex>0&&endIndex>startIndex) {
					
					/*获取一级变量*/
					String varStr = vars[i].substring(0, startIndex);
					System.out.println(varStr);
					
					/*获取二级变量*/
					String indexStr = vars[i].substring(startIndex+1, endIndex);
					System.out.println(indexStr);
				}else {
					System.out.println(vars[i]);
				}
			}
		}

5、总结

Ⅰ·字符串类是一个强大的工具类,在许多解析程序中都会使用。。。
Ⅱ·使用字符串处理业务要充分理解和利用字符串对象提供的方法。。。
Ⅲ ·字符串不是基础数据类型。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值