String基本认识:
1.首先我们要知道,字符串是一个由多个字符组成的一串数据,值一旦创建,不可再被修改
(原因是因为在源码中用final修饰的一个字符数组来储存这些数据)
String s="abc";
s+="d";
s+="e";
s+="f";
如上面实例演示,每次向字符串末尾加字符,这个字符串就会改变,同时,总是会有新的String类对象被创建,不过它们都曾指向引用s,最终s指向的字符串对象为“abcdef”。
(为解决此类问题,我们后期引入StringBuffer类)
2.java中所有字符串都是该类的实例。
(相当于每个字符串都是String类的实例对象)
String对象的创建方式:
1.String a=“abc”;
(简化型)
创建过程:先在堆中的字符串常量池中查找有无已创建好的abc,若有,则直接指向此对象即可,若没有,则创建一个新对象abc
2.String a=new String(“abc”);
创建过程:直接在堆中创建新对象,无需判断。
有多种方法重写
常用的方法:
一、判断功能(返回的是boolean型)
String s=“Abc”;
String a=“abc”;
1. s.equalsIgnoreCase(a);
此方法用于判断字符串s与字符串a内容是否相等,返回类型为boolean
(注意,此时会忽略字符大小写来进行判断,如验证码等会用到此方法)
2.s.Contains(a);
此方法用于判断s是否包含指定字串a;
3. s.isEmpty();
如字面意思,此方法判断这个字符串是否为空
二、String类获取功能的常用方法
先定义一个字符串:
String a=new String("abcde");
1.S.length();
返回一个int值,获取到这个字符串的长度 。
此处需要注意,字符串获取长度的length是一个方法,而以前学过的数组.length则是一个常量。
2.s.charAt(int a);
返回指定索引的字符。
3.s.indexof("a");
返回指定字符a的索引,即位置。
要注意,只能查找这个字符串中首次出现的,从前向后找。
4.s.indexof("a",b);
从指定位置b开始查找首次出现的字符a,返回此字符的索引。
5.a.lastIndexof("a");
从后向前开始查找指定字符a,并返回索引。
还有很多方法的重写,不再一一列举。
6.a.substring(int b);
从指定位置b开始截取,一直到字符串末尾。
返回的是一个新的字符串对象。
7.a.substring(int a,int b);
从指定位置a截取到b,包括a位置,但不包括结尾b对应字符。
同样也有多种方法重载,不再列举。
三、String类转换功能方法
1.s.getbytes();
public class Test { public static void main(String[] args) { String s="你好"; byte []a=s.getBytes();//无参默认的是UTF-8编码 System.out.println(Arrays.toString(a)); } } 运行结果:[-28, -67, -96, -27, -91, -67]将字符串s转换成字节型数组,无参时默认用UTF-8编码。
返回值是一个byte型数组。
此过程也被称为编码,相反,将byte数组转换回字符串被称为译码。
String s=new String(a,UTF-8)//译码,也是一种构造方法,参数分别为byte数组和编码格式
2.s.tocharArrays();
public class Test { public static void main(String[] args) { String s="abcd"; char []a=s.toCharArray(); System.out.println(Arrays.toString(a)); } } 运行结果:[a, b, c, d]将字符串s转换为一个字符型数组。
相反的,我们也可以将字符型数组转换为字符串
String s =new String(char [ ]a);//一种构造方法,参数为char型数组
String s=String.valueof(char [ ]a);//利用String类中valueof方法,将字符型数组转换为字符串
3.s.toUpperCase();
将字符串s中小写字母全部转为大写。
s.toLowerCase()
将字符串s中大写字母全部转为小写。
注:返回值都为一个新的String对象,二十六的英文字母以外的字符不会改变。
4. s.concat("abc");
将字符串abc连接到s的末尾,并返回这个新的字符串对象。
5.s.spilt("正则表达式");
将字符串按照指定规则分割成字符串对象。
注意返回的是字符串对象;