第4篇 Java中的String类

JAVA String类

字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。例如:

String str = "abc";

等效于:

char data[] = {‘a‘, ‘b‘, ‘c‘};
String str = new String(data);

注意事项

常用方法

  • equals()             判断值是否相等
  • equalsIgnoreCase() 忽略大小写进行对比
  • toLowerCase()  转小写
  • toUpperCase()       转大写
  • toCharArray()        转字符数组
  • indexOf(String str [, int fromIndex])               查找字符串位置
  • lastIndexOf(String str [, int fromIndex])         查找字符串最后出现位置
  • subString(int beginIndex, int endIndex)        切割子串
  • trim()                                  去除空白
  • split(String regex)            分割字符串
  • startWith(String prefix)    以...开头
  • endsWith(String suffix)    以...结尾
  • charAt(int index)               获取指定位置字符
  • replace(char oldChar, char newChar)    替换指定字符
  • valueOf()                      指定数据类型变量转字符串

1、toUpperCase()、toLowerCase()

将String字符串中所有的字母都转换大小写,并且不影响原字符串

String str = "123abcABC啊哈";
//将字符串中所有字母转为小写
String lowerStr = str.toLowerCase();
//将字符串中所有字母转为大写
String upperStr = str.toUpperCase();
System.out.println("原字符串:"+str);
System.out.println("转小写字符串:"+lowerStr);
System.out.println("转大写字符串:"+upperStr);

打印结果为:

原字符串:123abcABC啊哈
转小写字符串:123abcabc啊哈
转大写字符串:123ABCABC啊哈

2、toCharArray()与charAt()

toCharArray()方法将String类型的变量转换为一个字符数组,并返回。charAt()方法则类似与把String当成一个字符数组,通过传入下标而得到该位置所对应的字符

例如:判断一个字符串是否是英文字符

/**
 * 字符判断函数
 * @param c 要判断的字符
 * @return 字符是否为英文字符或数字
 */
public static boolean isC(char c) {
    if(c>=‘a‘&&c<‘z‘){
        return true;
    } else if (c>=‘A‘&&c<=‘Z‘) {
        return true;
    } else if (c>=‘0‘&&c<=‘9‘) {
        return true;
    } else {
        return false;
    }
}

/**
 * 主函数
 * @param args
 */
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入要判断的字符串:");
    String str = scanner.nextLine();
    //通过toCharArry将字符串转成数组,再通过foreach遍历
    for (char c : str.toCharArray()) {
        if(!isC(c)){
            System.out.println("这里面包含了不是英文的字符‘"+c+"‘,判断终止!");
            return;
        }
    }
    System.out.println("这是个英文字符串");

}

同样的遍历也可以使用charAt()来实现:

char c;
for (int i = 0; i < str.length(); i++) {
    c = str.charAt(i);
    if(!isC(c)){
        System.out.println("这里面包含了不是英文的字符‘"+c+"‘,判断终止!");
        return;
    }
}
System.out.println("这是个英文字符串");

得到的都是相同的打印结果:

请输入要判断的字符串:
abcdef123.asd
这里面包含了不是英文的字符‘.‘,判断终止!
请输入要判断的字符串:
abcdef123asd
这是个英文字符串

3、indexOf、lastIndexOf

这两个方法都用来查找字符串在当前字符串中的位置,唯一区别在于indexOf方法是从第0个元素开始从前往后找而lastIndexOf方法则在第length()-1个元素开始从后往前找,都是找到第一个后就返回,找不到则返回负数。

String str = "abc123a...xyzabz";
//从第0个元素开始从前往后找
System.out.println(str.indexOf("a"));
//从第2个元素(c)开始从前往后找
System.out.println(str.indexOf("a",2));
//从第str.length()-1个元素开始从后往前找
System.out.println(str.lastIndexOf("a"));
//从第2个元素开始从后往前找
System.out.println(str.lastIndexOf("a",11));

得到结果为:

0
6
13
6

4、startsWith、endsWith

判断字符串是否以某个字符串开头或者结尾,类似于正则匹配中的“^” 和 “$”,可以用来判断文件后缀,以此判断文件类型。具体不作演示。

5、trim

用来去除字符串中的前面和尾部的空白,返回该去除空白后的副本,原字符串不受影响

6、split

条件分割。该方法传入一个正则表达式字符串,根据该正则表达式所匹配的字符串对所要操作的字符串进行分割,返回分割所得的字符串数组。原字符串同样不受影响

String str = "(1)abc(2)bcd(3)cde(4)def(5)efg";
//通过正则匹配"(\d)"来匹配所有带括号的序号
String spstr[] = str.split("\\(\\d\\)");
for (String string : spstr) {
    System.out.println(string);
}
//打印分割所得数组长度
System.out.println("数组长度:"+spstr.length);

打印结果为:

abc
bcd
cde
def
efg
数组长度:6

这里需要注意的是正则一共匹配了五次,所以所得的数组长度为6而不是5

7、substring

参数:

  beginIndex:开始处的索引(包括)

  endIndex:结束处的索引(不包括)

截取字符串,前闭后开原则,返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

String str = "abc123...xyz";
//截取从‘1‘到‘.‘中间的元素,前闭后开,索引从3到6
String substr = str.substring(3,6);
System.out.println(substr);

所得打印结果为:

123

这里需要注意的是索引从1开始计算,而非从0开始计算

原文地址:https://www.cnblogs.com/JuanF/p/9265500.html

时间: 2024-10-13 11:15:12

第4篇 Java中的String类的相关文章

java 中的String类

String a = "aaa"; 用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它 如果没有则创建 String a = new String("aaa"); 是不管内存中有没有"aaa" 都开辟一块新内存保存它 可以用以下方法验证下 String a = "aaa"; String b = "aaa"; String c = new String

Java中的String类与StringBuffer类

String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值 (2)String类对象的性能远不如StringBuffer类. 具体解释如下: 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作.不可变类. 3.StringB

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

Java中的String类

在Java中,字符串是对象,是描述字符的基本数据结构,也是程序设计中很重要的一类数据结构 Java专门为存储和处理字符串提供了两个类: String & StringBuffer String类型对象的创建常见的有三种方法 : 1. 通过初始化 String str = "hellow"; 2. 使用new关键字进行创建 String str = new String(); 3. 通过类型转换来创建 String str = Double.toString(123.45); S

Java 中的 String 类常用方法

字符串广泛应用在Java编程中,在Java中字符串属于对象,String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等. String 类的常用方法: 注意事项: 1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1 2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引:如果没有匹配结果,返回 -1 3. 使用 substring(beginIndex , endIndex

java中的String类的不可变性的小例子

在java语言中,String类具有不可变性,即常量字符串不可更改.下面的一个小例子简单演示相关概念. 1 public class test { 2 public static void main(String []args){ 3 String str1="hello"; 4 System.out.println(str1); 5 tell(str1); 6 System.out.print(str1); 7 } 8 9 public static void tell(String

java中的String类的一点认识

这是学习中用到的一些基础知识 String 是经常会用到的一个类,学习的过程中发现的东西进行的汇总. 1. 初始化方面: String类是一个比较特别的类,初始化的时候有种简化的特殊语法. 1>String s = "abc"; 而按照正规的语法来说,应该是: 2>String s = new String ("abc"); 建议使用1>的方式,原因在于这样比较节省内存空间,从其他网站上照抄下来的说法是,[只是按照面向对象的标准语法,在内存使用上存

关于Java中的String类的不可变

此处,不再论述String的不可变,只说说为什么String是不可变的. 粗暴点,直接来了,String的不可变原因有三: 1).String类是final的 用final修饰的类是不可被继承的,用在了String类就代表它不可被继承,不可被后来的程序员用新类继承然后修改它. 这一招,意在让String "断子绝孙",我认为和阉割有异曲同工之妙. 2).String的值是一个char数组,是被final和private修饰的 贴一下String的源代码: 1 public final

java中的String类 字符串拆分成字符串数组 判定邮箱地址 字符串比较 看结果?

看结果1? package com.swift; class ArrayString { public static void main(String[] args) { String str = "swift:30|sunny:28|Ben:32"; String str1[] = str.split("\\|"); for (int i = 0; i <= str1.length - 1; i++) { String str2[] = str1[i].sp