【干货】java核心知识整理,阶段一:java中的常用类

String类与StringBuffer类

String类的初始化

在操作String类之前,首先需要对String类进行初始化。在Java中,可以通过以下两种方式对String类进行初始化,具体如下:

1.使用字符串常量直接初始化一个String对象,其语法格式如下:

String 变量名= 字符串;

在初始化字符串对象时,既可以将字符串对象的初始化值设为空,也可以初始化为一个具体的字符串,其示例如下:

String str1 = null;    // 初始化为空
String str2 = "";      // 初始化为空字符串
String str3 = "abc";  // 初始化为abc,其中abc为字符串常量

2.使用String的构造方法初始化字符串对象,其语法格式如下:

String 变量名 = new String(字符串);

在上述语法中,字符串同样可以为空或是一个具体的字符串。当为具体字符串时,会使用String类的不同参数类型的构造方法来初始化字符串对象。

String类中包含多个构造方法,常用的构造方法如表1所示。

表1 String类的常用构造方法

方法声明 功能描述
String() 创建一个内容为空的字符串
String(String value) 根据指定的字符串内容创建对象
String(char[] value) 根据指定的字符数组创建对象

表1中,列出了String类的三种构造方法,通过调用不同参数的构造方法便可完成String类的初始化。接下来通过一个案例来学习String类是如何通过构造方法来初始化字符串对象的,如文件1所示。

文件1 Example01.java

 1    public class Example01 {
 2        public static void main(String[] args) {
 3            // 创建一个空的字符串
 4            String str1 = new String();
 5            // 创建一个内容为abc的字符串
 6            String str2 = new String("abc");
 7            // 创建一个内容为字符数组的字符串
 8            char[] charArray = new char[] { 'A', 'B', 'C' };
 9            String str3 = new String(charArray);
 10             // 输出结果
 11            System.out.println("a" + str1 + "b");
 12            System.out.println(str2);
 13            System.out.println(str3);
 14        }
 15    }

运行结果如图1所示。

图1 运行结果

文件1中,分别使用表1中的3个构造方法创建了字符串对象。其中第4行代码使用无参构造方法创建的是一个空字符串,所以第一个输出语句中的str1为空(””),当使用连字符(+)连接a和b后,输出的结果为ab。第6行代码使用参数类型为String的构造方法创建了一个内容为abc的字符串,第8~9行代码使用参数类型为字符数组的构造方法创建了一个内容为字符数组的字符串。从图1可以看出,它们最后的输出结果就是存储在字符串对象中的内容。

小提示:

连接字符串可以通过运算符“+”来实现,例如上面案例代码("a" + str1 + "b")中的“+”的作用就是将两个字符串合并到一起并生成新的字符串。在Java中,如果“+”的两边操作数有一个为String类型,那么“+”就表示字符串连接运算符。

String类的常见操作

String类在实际开发中的应用非常广泛,因此灵活地使用String类是非常重要的,接下来讲解一下String类常用的一些方法,如表1所示。

表1 String类的常用方法

方法声明 功能描述
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
int lastIndexOf(String str) 返回指定子字符串在此字符串中最后一次出现处的索引
char charAt(int index) 返回字符串中index位置上的字符,其中index的取值范围是:0~(字符串长度-1)
boolean endsWith(String suffix) 判断此字符串是否以指定的字符串结尾
int length() 返回此字符串的长度
boolean equals(Object anObject) 将此字符串与指定的字符串比较
boolean isEmpty() 当且仅当字符串长度为0时返回true
boolean startsWith(String prefix) 判断此字符串是否以指定的字符串开始
boolean contains(CharSequence cs) 判断此字符串中是否包含指定的字符序列
String toLowerCase() 使用默认语言环境的规则将String中的所有字符都转换为小写
String toUpperCase() 使用默认语言环境的规则将String中的所有字符都转换为大写
static String valueOf(int i) 返回 int 参数的字符串表示形式
char[] toCharArray() 将此字符串转换为一个字符数组
String replace(CharSequence oldstr, CharSequence newstr) 返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的
String[] split(String regex) 根据参数regex(regex是一个正则表达式,用来限定分隔规则)将字符串分割为若干个子字符串
String substring(int beginIndex) 返回一个新字符串,它包含从指定的beginIndex起始角标处开始,直到此字符串末尾的所有字符
String substring(int beginIndex, int endIndex) 返回一个新字符串,它包含从指定的beginIndex起始角标处开始,直到索引endIndex-1角标处的所有字符
String trim() 返回一个新字符串,它去除了原字符串首尾的空格

在表1中,列出了String类常用的方法,为了让读者更加熟悉这些方法的作用,接下来通过几个案例来具体学习一下String类中常用方法的使用。

1.字符串的基本操作

在程序中,需要对字符串进行一些基本操作,如获得字符串长度、获得指定位置的字符等。String类针对每一个操作都提供了对应的方法,接下来通过一个案例来学习这些方法的使用,如文件1所示。

文件1 Example02.java

 1    public class Example02 {
 2        public static void main(String[] args) {
 3            String s = "abcabcbacdba"; // 初始化字符串
 4            System.out.println("字符串的长度为:" + s.length());
 5            System.out.println("字符串中第一个字符:" + s.charAt(0));
 6            System.out.println("字符c第一次出现的位置:" + s.indexOf('c'));
 7            System.out.println("字符c最后一次出现的位置:" + s.lastIndexOf('c'));
 8            System.out.println("子字符串第一次出现的位置:" + s.indexOf("ab"));
 9            System.out.println("子字符串最后一次出现的位置:" 
 10                                                        + s.lastIndexOf("ab"));
 11         }
 12    }

运行结果如图1所示。

图1 运行结果

从图1可以看出,String类提供的方法可以很方便地获取字符串的长度,获取指定位置的字符以及指定字符和字符串的位置。

2.字符串的转换操作

程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成字符数组、将字符串中的字符进行大小写转换等。接下来通过一个案例来演示字符串的转换操作,如文件2所示。

文件2 Example03.java

 1    public class Example03 {
 2        public static void main(String[] args) {
 3            String str = "java"; 
 4            char[] charArray = str.toCharArray(); // 字符串转换为字符数组
 5             System.out.print("将字符串转为字符数组后的遍历结果:");
 6            for (int i = 0; i < charArray.length; i++) {
 7                if (i != charArray.length - 1) {
 8                    // 如果不是数组的最后一个元素,在元素后面加逗号
 9                    System.out.print(charArray[i] + ",");
 10                } else {
 11                    // 数组的最后一个元素后面不加逗号
 12                    System.out.println(charArray[i]);
 13                }
 14            }
 15            System.out.println("将int值转换为String类型之后的结果:"  
 16                                    + String.valueOf(12));
 17            System.out.println("将字符串转换成大写之后的结果:"  
 18                                    + str.toUpperCase());
 19        }
 20    }

运行结果如图2所示。

图2 运行结果

在文件2中,使用String类的toCharArray()方法将一个字符串转为一个字符数组,静态方法valueOf()将一个int类型的整数转为字符串,toUpperCase()方法将字符串中的字符都转为大写。其中valueOf()方法有很多重载的形式,float、double、char等其他基本类型的数据都可以通过该方法转为String字符串类型。

3.字符串的替换和去除空格操作

在开发程序的过程中,需要考虑到用户输入数据时会有一些错误和空格的情况,这时可以使用String类的replace()和trim()方法,进行字符串的替换和去除空格操作。接下来通过一个案例来学习这两个方法的使用,如文件3所示。

文件3 Example04.java

 1    public class Example04 {
 2        public static void main(String[] args) {
 3            String s = "     http :// localhost : 8080     ";
 4            // 字符串去除空格操作
 5            System.out.println("去除字符串两端空格后的结果:" + s.trim());
 6            // 字符串替换操作
 7            System.out.println("去除字符串中所有空格后的结果:" 
 8                                  + s.replace(" ", ""));
 9        }
 10    }

运行结果如图3所示。

图3 运行结果

在文件3中,调用了String类的两个方法,其中trim()方法用于去除字符串中首尾的空格,replace()方法用于将字符串中所有与指定字符串匹配的子串替换成另一个字符串。

需要注意的是,trim()方法只能去除两端的空格,不能去除中间的空格。若想去除字符串中间的空格,则可以通过String类的replace()方法来实现。

4.字符串的判断操作

操作字符串时,经常需要对字符串进行一些判断,如判断字符串是否以指定的字符串开始、结束,是否包含指定的字符串,字符串是否为空等。在String类中针对字符串的判断操作提供了很多方法,接下来通过一个案例来学习这些判断方法的使用,如文件4所示。

文件4 Example05.java

 1    public class Example05 {
 2        public static void main(String[] args) {
 3            String s1 = " Starter"; // 声明一个字符串
 4            String s2 = "St";
 5            System.out.println("判断是否以字符串St开头:" + s1.startsWith("St"));
 6            System.out.println("判断是否以字符串er结尾:" + s1.endsWith("er"));
 7            System.out.println("判断是否包含字符串ar:" + s1.contains("ar"));
 8            System.out.println("判断字符串是否为空:" + s1.isEmpty());
 9            System.out.println("判断两个字符串是否相等" + s1.equals(s2));
 10        }
 11    }

运行结果如图4所示。

图4 运行结果

在文件4中涉及到的方法都是用于判断字符串的,并且返回值均为boolean类型。在所使用的方法中,equals()方法是比较重要的,在String类中重写了父类Object中的equals()方法。

在程序中可以通过“==”和equals()两种方式对字符串进行比较,但这两种方式有显著的区别。equals()方法用于比较两个字符串中的字符值是否相等,“==”方式用于比较两个字符串对象的内存地址是否相同。对于两个字符串对象,当它们的字符值完全相同时,使用equals判断结果会为true,但使用“==”判断时,结果一定为false。为了便于理解,下面给出示例代码:

String str1 = new String("abc");
String str2 = new String("abc");
// 结果为false,因为str1和str2是两个对象
System.out.println(str1 == str2); 
// 结果为true,因为str1和str2字符内容相同
System.out.println(str1.equals(str2)); 

5.字符串的截取和分割

在String类中针对字符串的截取和分割操作提供了两个方法,其中,substring()方法用于截取字符串的一部分,split()方法可以将字符串按照某个字符进行分割。接下来通过一个案例来学习这两个方法的使用,如文件5所示。

文件5 Example06.java

 1    public class Example06 {
 2        public static void main(String[] args) {
 3            String str = "2018-01-24";
 4            // 下面是字符串截取操作
 5            System.out.println("从第6个字符截取到末尾的结果:" 
 6                                   + str.substring(5));
 7            System.out.println("从第6个字符截取到第7个字符的结果:" 
 8                                   +str.substring(5, 7));
 9            // 下面是字符串分割操作
 10            System.out.print("分割后的字符串数组中的元素依次为:");
 11            // 通过横线连接符“—”将字符串转换为字符串数组
 12            String[] strArray = str.split("-");
 13            // 循环输出数组中的元素
 14            for (int i = 0; i < strArray.length; i++) {
 15                if (i != strArray.length - 1) {
 16                    // 如果不是数组的最后一个元素,在元素后面加顿号
 17                    System.out.print(strArray[i] + "、");
 18                } else {
 19                    // 数组的最后一个元素后面不加顿号
 20                    System.out.println(strArray[i]);
 21                }
 22            }
 23        }
 24    }

运行结果如图5所示。

图5 运行结果

在文件5中,调用了String类中重载的两个substring()方法,在第6行代码调用substring(5)方法时,因为字符串中的字符索引是从0开始的,所以会截取字符串中第6个字符以及之后的所有字符;第8行代码调用substring(5,7)方法时,会截取第6个和第7个字符。文件中的第12~22行代码演示了split()方法的用法,该方法会根据指定的符号“-”将字符串分割成了三部分,并存放到一个String类型的数组当中。使用for循环遍历数组即可按照要求输出所需内容,这里将各个日期之间使用顿号分隔。

脚下留心:

String字符串在获取某个字符时,会用到字符的索引,当访问字符串中的字符时,如果字符的索引不存在,则会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值