1,String类的重要性
在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提 供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字 符串应用又非常广泛,因此Java语言专门提供了String类。
2,常用方法
2.1 字符串构造
String类提供的构造方式非常多,常用的就以下三种:
public static void main(String[] args) {
// 使用常量串构造
String s1 = "hello bit";
System.out.println(s1);
// 直接newString对象
String s2 = new String("hello bit");
System.out.println(s1);
// 使用字符数组进行构造
char[] array = {'h','e','l','l','o','b','i','t'};
String s3 = new String(array);
System.out.println(s1);
}
【注意】 1. String是引用类型,内部并不存储字符串本身。
2. 在Java中“”引起来的也是String类型对象。
isEmpty方法:查看是否为空,如果为空则返回true
String str4="";
System.out.println("输出"+str4);
System.out.println(str4.length());
System.out.println(str4.isEmpty());
String str5=null;
System.out.println(str5.isEmpty());
如果为null则直接报错空指针异常。
2.2 String对象的比较
字符串的比较是常见操作之一,比如:字符串排序。Java中总共提供了4中方式:
1. ==比较是否引用同一个对象 注意:对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。
2.String类重写了父类Object中equals方法,Object中equals默认按照==比较,String重写equals方法后。字典序:字符大小的顺序
以后比较字符串一样不一样,用equals方法 true,false
3.compareTo关键字
s1和s2比较大小s1>s2返回大于0的数字,s1<s2返回小于0的数字,否则返回0
String s1=new String("hello");
String s2=new String("hello");
System.out.println(s1.compareTo(s2));
比较大小的时候,对应字符串进行比较:
与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:
(1). 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值。
(2). 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。
4.int compareToIgnoreCase(String str)方法:与compareTo方式相同,但是忽略大小写比较。
String s1=new String("hello");
String s2=new String("Hello");
System.out.println(s1.equalsIgnoreCase(s2));
还有是compareToIgnoreCase方法,也是忽略大小写比较。
2.3 字符串查找
字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:
方法 功能
char charAt(int index) 返回index位置上字符,如果index为负数或者越界,抛出 IndexOutOfBoundsException异常(返回字符串对应下标 的字符)
String s1=new String("hello");
char ch=s1.charAt(1);
System.out.println(ch);
int indexOf(int ch) 返回ch第一次出现的位置,没有返回-1(返回对应字符出 现的下标位置)
int index=s1.indexOf('e');
System.out.println(index);
int indexOf(int ch, int fromIndex) 从fromIndex位置开始找ch第一次出现的位置,没有返 回-1(从指定位置开始找某个字符出现的位置)
int index1=s1.indexOf('l',3);
System.out.println(index1);
int indexOf(String str) 返回str第一次出现的位置,没有返回-1(字符串查找,从 一个字符串找另一个字符串)
int index=s1.indexOf("llo");
System.out.println(index);
int indexOf(String str, int fromIndex) 从fromIndex位置开始找str 第一次出现的位置,没有返回-1
同上
int lastIndexOf(int ch) 从后往前找,返回ch第一次出现的位置, 没有返回-1
String s1=new String("hello");
int dex=s1.lastIndexOf('l');
System.out.println(dex);
int lastIndexOf(int ch, int fromIndex) 从fromIndex位置开始找,从后往前找ch第 一 次出现的位置,没有返 回-1
String s1=new String("hello");
int dex=s1.lastIndexOf('l');
int dex1=s1.lastIndexOf('l',3);
System.out.println(dex1);
int lastIndexOf(String str) 从后往前找,返回str第一次出现的位置,没有 返回-1
int lastIndexOf(String str, int fromIndex) 从fromIndex位置开始找,从后往前找str第一 次出现的位置,没有返 回-1
2.4 转化
1. 数值和字符串转化
valueOf方法(将123转化为字符串类型)
String str=String.valueOf(123);
System.out.println(str);
parseInt方法(将字符串转化成int类型)
包装类:首先是一个类其次类中拥有更多的方法,使用起来非常的方便
int a=Integer.parseInt("123");
System.out.println(a);
2.大小写之间的转换,toUpperCase将小写换成大写,toLowerCase将大写换成小写。
不是在原来的字符串上修改的,转变之后是产生了一个新的对象。(字符串的改变都是产生了新的对象)
String str="hello";
String dex=str.toUpperCase();
System.out.println(dex);
String str1="HELLO";
String dex1=str1.toLowerCase();
System.out.println(dex1);
3.格式化输出
public static void main(String[] args) {
String s = String.format("%d-%d-%d", 2019, 9,14);
System.out.println(s);
}