字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串相关的知识,希望对你有一定的参考价值。
本章单词:
quual:相等的
ignore:忽视
lower:低的
last:最后
trim:忽略不计
concatenate:链接
buffer:缓冲区
final:最终的
&预习一下代码输出结果是什么:
public static void main(String[] args){ String s1=new String("abc"); String s2=new String("abc"); if(s1.equals(s2)){ System.out.println("相等"); }else{ System.out.println("不相等"); } }
一、字符串概述
&字符串是一系列字符组成的序列
(1)如何使用字符串:
简单来说,使用字符串主要分为两步
1.定义并初始化字符串
2.使用字符串,对字符串进行一些处理
语法:
String s="hello";
创建String对象的另外两种方法如下列代码所示:
//创建一个空字符串
String s=new String();
或者
//创建一个字符串对象“hello world”;
String s=new String("hello world");
二、字符串的长度
如何计算字符串的长度呢?
String 类提供了length()方法。字符串是一串字符序列,String类的length()方法用来确定字符串的长度,即字符串中的字符数目。
调用length()方法返回的结果就是字符串中的字符数
调用length()方法的语法如下
语法:
字符串a.length();
//返回字符串a的长度
示例:
1 public static void main(String[] args) { 2 Scanner input=new Scanner(System.in); 3 String user,password;//用户名与密码 4 String a="y"; 5 do{ 6 System.out.println("请输入用户名:"); 7 user=input.next(); 8 System.out.println("请输入密码:"); 9 password=input.next(); 10 if(password.length()>=6){ 11 System.out.println("注册成功"); 12 break; 13 }else{ 14 System.out.println("密码长度不能小于6位!!!"); 15 System.out.println("是否继续注册:(y/n)"); 16 a=input.next(); 17 } 18 }while(a.equals("y")); 19 }
三、字符串的比较
语法:
字符串1.equals(字符串2);
//比较两个字符串的值是否相同,返回值Boolean类型的值,如果相同,则返回true,否则false
示例:
1 public static void main(String[] args) { 2 Scanner input=new Scanner(System.in); 3 String user,password;//用户名与密码 4 System.out.println("请输入用户名:"); 5 user=input.next(); 6 System.out.println("请输入密码:"); 7 password=input.next(); 8 if(user.equals("TOM")&&password.equals("1234567")){ 9 System.out.println("登陆成功"); 10 }else{ 11 System.out.println("用户名或密码不匹配,登陆失败!!!"); 12 } 13 }
疑点解答:
可能大家会问,为什么不使用双等于== 来判断两个字符串是否相同呢?
在Java中双等号 == 和 equals()方法虽然都应用于两个字符串,但所判断的内容是有差别的。
简单的讲==判断的是两个字符串对象再内存中的首地址是否相等,及判断是否是同一个字符串对象,
而equals()判断的是两个字符串对象的值是否相等。
示例:
1 public static void main(String[] args) { 2 String s=new String("我爱我的祖国"); 3 String s1=new String("我爱我的祖国"); 4 if(s.equals(s1)){ 5 System.out.println("两个字符串值相同"); 6 }else{ 7 System.out.println("两个字符串值不相同"); 8 } 9 if(s==s1){ 10 System.out.println("两个字符串值相同"); 11 }else{ 12 System.out.println("两个字符串值不相同"); 13 } 14 }
四、equals()比较的方法
&在我们使用equals()方法比较两个字符串时,对于字符的大小写,也在检查范围内,但有时候我们会碰到忽略大小写的验证,如Java和JAVA
都是指Java这门课程,使用equals()方法比较会认为他们不是一门课,因此,需要另一种方法--equalsIgnoreCase()方法。Ignore是
忽略的意思,这种写法在比较字符串会忽略字符的大小写,语法如下:
语法:
字符串1.equalsIgnoreCase(字符串2);
示例如下:
1 public static void main(String[] args) { 2 Scanner input=new Scanner(System.in); 3 String user,password;//用户名与密码 4 System.out.println("请输入用户名:"); 5 user=input.next(); 6 System.out.println("请输入密码:"); 7 password=input.next(); 8 if(user.equalsIgnoreCase("TOM")&&password.equals("1234567")){ 9 System.out.println("登陆成功"); 10 }else{ 11 System.out.println("用户名或密码不匹配,登陆失败!!!"); 12 } 13 14 }
&在Java中,String类提供了两个方法改变字符串字符的大小写,
1.toLowerCase():转换字符串中的英文字母为小写。
2.toUpperCase():转换字符串中的英文字母为大写。
语法:
字符串.toLowerCase();
//返回字符串的小写形式
字符串.toUpperCase()
//返回字符串的大写形式
示例代码:
if(user.equalsIgnoreCase("TOM")&&password.equals("1234567")){ System.out.println("登陆成功"); }else{ System.out.println("用户名或密码不匹配,登陆失败!!!"); }
五、复杂的字符串处理
&请记住,在使用“+”运算符链接字符串和int(或double)类型数据时“+”将int(或double)类型数据自动转换成String类型
&除此之外,在Java中,String类也提供了另一种方法concat(),将一个字符串连接到另一个字符串的后面,
语法如下:
字符串1.concat(字符串2);
示例代码如下:
1 public static void main(String[] args) { 2 String s="你好\t"; 3 String s1="张三"; 4 String s2=s.concat(s1); 5 System.out.println(s2); 6 }
六、字符串的提取和查询
详细介绍请阅读以下代码:
1 public static void main(String[] args) { 2 /** 3 * indexOf() 4 * 该方法是在字符串内搜索某个指定的字符或字符串, 5 * 它返回出现第一个匹配字符的位置 6 */ 7 String s="青春误会"; 8 int dex=s.indexOf(‘误‘); 9 System.out.println(dex); 10 /** 11 * lastIndexOf() 12 * 该方法也是在字符串内搜索某个指定的字符或字符串, 13 * 但是他搜索最后一个出现的字符或字符串的位置。 14 * 执行后,返回字符串“无悔”的首字符位置 c的值为4 15 */ 16 String x="青春无悔无悔青春"; 17 int c=x.lastIndexOf("无悔"); 18 System.out.println(c); 19 /** 20 * 该方法用于提取从位置索引开始的字符串部分, 21 * 调用时括号中写的是要提取的字符串的开始位置 22 * 方法的返回值就是要提取的字符串。 23 */ 24 String v="青春无悔"; 25 String m=v.substring(2); 26 System.out.println(m); 27 /** 28 * substring(int beginindex,int endindex) 29 * 该方法用于提取位置beginindex和位置endindex位置之间的字符串部分。 30 * 特别注意的是,对该方法开始位置beginindex,java是基于字符串的首字符为0来进行处理的, 31 * 但是对于终止位置endindex,java是基于字符串的首字符为1来处理的。 32 */ 33 String q="青春无悔无悔青春"; 34 String w=q.substring(2, 6); 35 System.out.println(w); 36 }
5、trim()方法
&该方法可以忽略字符串前后的空格,因此,在接收用户输入的字符串时,一般会调用trim()方法过滤掉字符串前后的多余空格。
七、字符串的拆分
语法:
字符串1.split(String separator,int limit);
其中:(1)separator可选项,标识拆分字符串时使用一个或多个字符,如果不选择该项,则返回包含该字符串所有单个字符的元素数组。
(2)limit可选项,该值用来限制返回数组中的元素个数。
示例代码如下:
1 public static void main(String[] args) { 2 String words="长亭外 古道边 芳草碧蓝天 晚风扶 柳笛声残 夕阳山外山"; 3 String[] printword=new String[100];//定义数组接收 4 System.out.println("***原歌词为***\t"+words); 5 System.out.println("***拆分后歌词格式***"); 6 printword=words.split(" ",5);//以空格为单位拆分,拆分行数为5行 7 for(int i=0;i<printword.length;i++){ 8 System.out.println(printword[i]); 9 } 10 }
·StringBuffer类
&如何使用StringBuffer类
StringBuffer 类位于Java.lang 包中,是String 类的增强类。使用StringBuffer 类也需要两步完成。
1.声明StringBuffer 对象并初始化
//声明一个空的StringBuffer 对象
StringBuffer sb=new StringBuffer();
//声明一个字符串 “青春无悔”;
StringBuffer sb2=new StringBuffer("青春无悔");
2.使用StringBuffer 对象
StringBuffer类提供了很多方法以供使用,调用时使用 “.” 操作符完成。
3.将StringBuffer 类型的字符串1 转换为 String 类型的对象并返回。
字符串1 .toSting();
String ss=sb2.toString();
4.将字符串2 连接到 字符串1 后并返回。
字符串1.append(字符串2);
该方法和String 类的 concat()方法一样,都是把一个字符串追加到另一个字符串后面,所不同的是Sting中只能将
String 类型的字符串追加到一个字符串后,而StringBuffer 可以任何类型的值追加到字符串之后。
·将参数插入字符串
语法:
字符串1.insert (位置,参数);
&将参数插入字符串1 的指定位置(int 类型)后并返回。参数可以包括String 的任何类型。
分析:利用StringBuffer 类的 length()方法,获取数字字符串的长度,使用for 循环从后向前每隔三位插入一个逗号。
以上是关于字符串的主要内容,如果未能解决你的问题,请参考以下文章