String类在java.lang包中,java使用String类创建字符串变量,String类是不可改变的,一旦创建了String对象,它的值就无法改变了。在java中字符串属于对象,提供String类来创建和操作字符串。
创建字符串
public static void main(String[] args){
String str="qy97";
System.out.println(str);
str="love java";
System.out.println(str);
}
显示结果:
qy97
love java
String的构造方法
无参构造
String str=new String();
有参构造
String str=new String("qy97");
public class StringDemo {
public static void main(String[] args){
String str=new String("qy97");
String str1="qy97";
System.out.println(str);
System.out.println(str1);
//此处引用类型比较的是地址
System.out.println(str==str1);
//重写了父类Object方法equals();比较的是内容
System.out.println(str.equals(str1));
}
}
关于String类的一些常用方法
- equals(Object obj)
public static void fun(){
String s="hello";
String s1="hEllo";
//判断字符串里面完全相等 ,区分大小写
System.out.println(s.equals(s1));
//不区分大小写
System.out.println(s1.equalsIgnoreCase(s1));
}
显示结果:
false
true
- toCharArray()字符串转字符数组
public static void fun1(){
String s="今晚老地方";
char[] s1=s.toCharArray();
for(int i=0;i<s1.length;i++){
System.out.println(s1[i]);
}
}
显示结果:
今
晚
老
地
方
- getBytes() 字符串转字节数组
public static void fun2(){
String s="今晚老地方";
byte[] s1=s.getBytes();
//数组内存地址
System.out.println(s1);
System.out.println("=======");
for(int i=0;i<s1.length;i++){
System.out.println(s1[i]);
}
}
显示结果:
[B@107f45d
=======
-28
-69
-118
-26
-103
-102
-24
-128
-127
-27
-100
-80
-26
-106
-71
- indexOf(“要查找字符”)查找字符是否存在 返回int 下标 没有返回-1
public static void fun3(){
String s="hell.java";
int s1=s.indexOf('h');
System.out.println(s1);
}
显示结果:
0
- contains() 判断一个字符串是否存在另一个字符串中
public static void fun4(){
String s="hello.java";
boolean s1=s.contains("he");
System.out.println(s1);
}
显示结果:
true
- endsWith() 判断一个字符串的后缀
startsWith() 判断一个字符串的前缀
public static void fun5(){
String s="hello.java";
boolean s1=s.endsWith("ava");//boolean s2=s.startsWith("he");
System.out.println(s1);
}
显示结果:
true
- substring() 截取从下标为2开始后面的字符串
public static void fun6(){
String s="hello.java";
String s1=s.substring(2);
System.out.println(s1);
}
显示结果:
llo.java
- length() 获取字符串的长度
public static void fun7(){
String string="hello.java";
int s=string.length();
System.out.println(s);
}
显示结果:
10
- 将字符数组转换为字符串 字符数组参数不查询编码表
public static void fun(){
char[] ch={'a','b','c','d'};
String s=new String(ch);
//offset代表数组开始的索引 count代表个数
String s1=new String(ch,1,2);
System.out.println(s1);
}
显示结果:
bc
- 字节转字符串(查询Unicode码)
public static void fun1(){
//调用String的构造方法 传递字节数组
byte[] bytes={124,50,64,74,6,31};
String str=new String(bytes);
System.out.println(str);
byte[] bytes1={31,4,66,13,46};
String s=new String(bytes1,1,3);
System.out.println(s);
}
显示结果:
|2@J
B
一些小练习
- 指定字符串在原字符串中出现的次数
public static void fun(){
String s = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
int k = s.indexOf("k");
byte [] s1 = s.getBytes();
int q = 0;
for (int i = 0; i < s1.length; i++) {
if(s1[i]==s1[k]){
q++;
}
}
System.out.println("k字符出现"+q+"次");
}
显示结果:
k字符出现3次
- 首字母大写,其他字母都小写
public static void fun1(){
String s="hellOwoRld";
String s1=s.substring(0,1).toUpperCase();
String s2=s.substring(1).toLowerCase();
System.out.println(s1+s2);
}
显示结果:
Helloworld
- 字符串中各字符的个数
public static void fun2(){
String s="adhsdisDSf54gasd531AKDHSDK";
byte[] s1=s.getBytes(); // 字符串转化成字节数组
int a=0,b=0,c=0;
for(int i=0;i<s1.length;i++){
if(s1[i]>=97&&s1[i]<=122){
a++;
}else if(s1[i]>=65&&s1[i]<=90){
b++;
}else if(s1[i]>=48&&s1[i]<=57){
c++;
}
}
System.out.println("小写字母的个数是:"+a+",大写字母的个数是"+b+",数字的个数是"+c);
}
显示结果:
小写字母的个数是:12,大写字母的个数是9,数字的个数是5