String类(1)
String类使用的时候不用导包,程序中所有的字符串都是String类的实例,也就是说java程序中所有的双引号字符串都是String类对象。
String构造方法
- public String() 创建空白字符串对象
- public String(char[] arr) 创建字符串对象
- String s=“abc” 直接赋值创建字符串对象
两种方法创建String对象
-
通过new创建字符串对象,每一次new都会申请一个内存空间,即使两个字符串对象的内容相同,地址也是不同的。
char[] arr={'h','e','l','l','o'}; String s1=new String(arr); String s2=new String(arr);
-
以""方式创建的字符串,只要字符串相同,无论该字符串出现多少次,都只会建立一个String对象。
String s3="hello"; String s4="hello";
字符串比较
字符串是对象不能使用“==” 直接比较,如果是基本类型,使用“ ==”比较的是数据值是否相同;如果是引用类型比较的是地址值是否相同。
字符串的比较是通过“equals()”方法。
package com.company.www; public class Main { public static void main(String[] args) { //使用new创建 String s1=new String("hello"); String s2=new String("hello"); //使用""创建 String s3="happy"; String s4="happy"; if(s1==s2){ System.out.println("s1和s2地址相同"); }else if(s1.equals(s2)){ System.out.println("s1和s2字符串内容相同"); } if(s3==s4&&s3.equals(s4)){ System.out.println("s3和s4地址和字符串内容都相同"); } } }
输出内容为:
s1和s2字符串内容相同
s3和s4地址和字符串内容都相同这段代码再一次证明了使用new创建的相同内容字符串对象,占用不同的内存,使用""创建的相同字符串对象只占用一个地址。
字符串的遍历
关于字符串的遍历需要用到两个String类的方法:charAt();和length();
例:
package com.company.www; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入字符串:"); String s=scanner.nextLine(); for (int i=0;i<s.length();i++){ System.out.print(s.charAt(i)); } } }
输出结果为:
请输入字符串:
Happy New Year
Happy New Year统计不同字符出现的次数
直接上例子吧
package com.company.www; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入字符串:"); String s=scanner.nextLine(); int big=0,small=0,number=0; //先设置三个整数类型分别对三种字符类型进行计数 for (int i=0;i<s.length();i++){ char c=s.charAt(i); //设置一个char型接收单个字符 if(c>='a'&&c<='z'){ small++; }else if(c>='A'&&c<='Z'){ big++; }else if (c>='0'&&c<='9'){ number++; } } System.out.println("小写字母有"+small+"个"); System.out.println("大写字母有"+big+"个"); System.out.println("数字有"+number+"个"); } }
输出结果为:
请输入字符串:
ilikestudy233
小写字母有10个
大写字母有0个
数字有3个字符串拼接
示例:随意输入一个字符串,拼接为“* # * 字符串 *# *”形式
package com.company.www; import java.util.Scanner; //将输出字符串变为*#*字符串*#*格式 public class Main { public static void main(String[] args) { System.out.println(pinjie()); } public static String pinjie() { Scanner scanner=new Scanner(System.in); System.out.println("请输入字符串:"); String s=scanner.nextLine(); String a = "*#*"; for (int i = 0; i <s.length(); i++) { if(i<s.length()){ a+=s.charAt(i); } } a+="*#*"; return a; } }
输出结果为:
请输入字符串:
happy
#happy#