字符串概述和特点及使用
字符串概述
java.lang.String类代表字符串
注:lang包无需导入
程序中所有双引号的对象,都是string类的对象
字符串的特点:
1.字符串的内容不可改变
2.由于字符串不可改变,所以字符串是可以进行共享
3.字符串效果上相当于char[]字符数组,但是原理是为byte[]字节数组。
构造方法
创建字符串的常见3+1方式;
三种构造方法:
public String(),创建一个空白字符串
public String(char[] array);根据字符数组创的内容,来创建对应的字符串。
public String(byte[] array);根据字节数组创的内容,来创建对应的字符串。
一种直接创建
String str=“hello”;
注意,虽然没有new,但是它就是字符串对象
public class demo01String {
public static void main(String[] args) {
//使用空参
String string=new String();
//根据字符数组创建
char a[]={'a','b'};
String string1=new String(a);
//根据字节数组创建
byte b[]= {97, 98};
String string2=new String(b);
System.out.println("diyige"+string);
System.out.println("di2ge"+string1);
System.out.println("di3ge"+string2);
//直接创建
String str="hello";
}
}
字符串常量池
字符串常量池,程序当中直接写上的双引号字符串,就在字符串常量池中
public class demo02string {
public static void main(String[] args) {
String str1="abc";
String str2="abc";
char[] array={'a','b','c'};
String str3=new String(array);
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str2==str3);
}
}
该图源自b站视频
字符串常用获取方法
String 当中获取相关的常用方法:
- pulic int length()获取字符串含有的字符数
- public concat (String str);将当前字符串和参数字符串拼接成为返回值的字符串
- public char charAt(int index),获取指定索引位置的单个字符,索引从0开始
- public int indexOf(String str)查找参数字符串在本字符串首次出现的位置,若没有返回-1;
注意:字符串但凡改变必定是创建了一个新字符串
public class demoStringGet {
public static void main(String[] args) {
//获取字符串长度
String s="fdhsjkfhdjksahfjh";
int length=s.length();
System.out.println("length="+length);
//拼接字符串
char[] chars={'a','b'};
String s1=new String(chars);
String s2=s.concat(s1);
System.out.println(s);//不变
System.out.println(s1);//不变
System.out.println("拼接字符串"+s2);
//获取单个字符
char c=s.charAt(1);
System.out.println(c);
//查找参数字符串在本字符串第一次出现的位置
int position=s.indexOf(c);
System.out.println(position);
}
}
字符串比较相关方法(常用)
注意:==是对对象地址进行比较,如果确实需要字符串内容比较,可以使用两个方法:
- public boolean equals(Object obj),参数可以是任何对象,只有参数是一个字符串并且内容相同才会返回ture,否则为false
- public boolean equalsIgnoreCase(Object obj)忽略大小写进行比较
注意事项:
1.任何对象都能用object进行接收
2.如果比较双方为一个变量和一个常量,推荐吧常量写在前面
public class StringMethod {
public static void main(String[] args) {
String string="hello";
String string1="hello";
char[] chars={'h','e','l','l','o'};
String string2=new String(chars);
System.out.println(string.equals(string1));
System.out.println(string.equals(string2));
System.out.println(string2.equals(string1));
System.out.println("hello".equals(string));
String string3=null;
System.out.println("hello".equals(string3));//推荐,返回false
// System.out.println(string3.equals("hello"));//这样写会产生空指针错误,可以尝试一下
String string4="java";
String string5="Java";
System.out.println(string4.equals(string5));//区分大小写,返回false
System.out.println(string4.equalsIgnoreCase(string5));//忽略大小写返回ture
}
}
分割字符串的方法
public String[] split(String regex);按照参数的规则,将字符串分割成若干部分
split函数其实是一个正则表达式,注意:如果要按照英文句点.进行分割,那么需要添加\.
public class demoStringSplit {
public static void main(String[] args) {
String str="aaa,bbb,ccc";
String[] split = str.split(",");
for (int i = 0; i <split.length ; i++) {
System.out.println(split[i]);
}
}
}
字符串截取方法
- public String substring(int index),截取从参数开始直到末尾,返回新字符串
- public String substring(int begin,int end),注意,包含坐边,不包含右边
public class demoSubString {
public static void main(String[] args) {
String s="helloworld";
String s1=s.substring(3);
System.out.println(s1);
String s2=s.substring(3,5);
System.out.println(s2);//左闭右开
//下面这种写法,字符串内容仍然没有改变,有两个字符串“hello”。“java”
//s3中保存的是字符串的地址,本来是hello的地址,后来地址变为了java的地址,但内容并未改变
String s3="hello";
System.out.println(s3);
s3="java";
System.out.println(s3);
}
}
目前就这些内容,仅作为参考,如有错误欢迎大家矫正补充。