字符串

一、String类
在java中字符串作为String类的实例来处理
  • 声名字符串(java中,字符串必需包含在一对双引号""之内
String str;
  • 创建字符串
char a[] = {'g','o','o','d'}; //字符数组
String s = new String(a); //等价于 String s = new String("good");
 
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a, 2, 4); //等价于 String s = new String("uden");
 
String str1,str2;
str1 = "We are student";
str2 = "We are student";
  • 连接多个字符串
使用"+"连接多个字符串(java中一句相连的字符串不能分开在两行中写,如果需要在两行中写,在第一行行尾处加上"+"连接)
String str3 = str1 + str2;
  • 连接其他数据类型
字符串也可以同其他基本数据类型进行连接,连接会将这些数据直接转换成字符串。
public static void example4() {
    int booktime = 4;
    float practice = 2.5f;
 
    System.out.println("我每天花费" + booktime + "小时看书;" + practice + "小时上机练习;");
    System.out.println("我每天花费" + booktime + "小时看书;" + (practice+booktime) + "小时上机练习;");
}
 
二、获取字符串信息
字符串作为对象,可通过相应的方法获取字符串的有效信息
  • 获取字符串长度
String str = "we are student";
int size = str.length();
  • 字符串查找
indexOf(); //返回字符或字符串在另一字符串中首次出现的位置
lastIndexOf(); //返回字符或字符串在另一字符串中最后一次出现的位置
 
public static void example5() {
    String stu = "we are students";
    System.out.println(stu.indexOf('t'));
    System.out.println(stu.indexOf("tu"));
    System.out.println(stu.lastIndexOf('t'));
    System.out.println(stu.length());
}
  • 获取指定索引位置的字符串
//使用charAt()方法可将指定索引处的字符返回
 
String str = "hello world";
char mychar = str.charAt(6);
 
三、字符串操作
  • 获取字符串
//String类的substring()方法可以对字符串进行截取
//substring(int beginIndex, int endIndex);
 
String str = "hello world";
System.out.println(str.substring(6,9));
 
str = "hello world";
System.out.println(str.substring(6));
  • 去除空格
//str.trim();
 
String str = " java class ";
System.out.println(str.length());
 
str = str.trim();
System.out.println(str.length());
  • 字符串替换
//str.replace(char oldChar, char newChar);
 
String str = "I like php";
str = str.replace("php", "java");
System.out.println(str);
  • 判断字符串的开始与结尾
//判断字符串是否以指定的内容开始或结束。返回boolean
//startsWith();
//endsWith();
 
String str = "I like php";
System.out.println(str.startsWith("I"));
System.out.println(str.startsWith("i"));
System.out.println(str.endsWith("php"));
  • 判断字符串是否相等
  1. 对字符串对象进行比较不能简单的使用比较运算符"==",因为比较运算符是比较两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回false
  2. 如果两个字符串具有相同的字符长度,使用equals()方法进行比较时,返回true
//equalsIgnoreCase(); 不区分大小写
 
public static void example11() {
    String str1 = new String("hello java");
    String str2 = new String("hello java");
    System.out.println(str1 == str2);      //false
    System.out.println(str1.equals(str2)); //true
 
    str1 = "hello java";
    str2 = "hello java";
    System.out.println(str1 == str2);       //true
    System.out.println(str1.equals(str2));  //true
 
    str1 = "hello java";
    str2 = "hello JAVA";
    System.out.println(str1 == str2);         //false
    System.out.println(str1.equals(str2));    //false
    System.out.println(str1.equalsIgnoreCase(str2));  //true
}
  • 按字典顺序比较两个字符串
//compareTo();
 
public static void example12() {
    String a = "a";
    String c = "c";
    String e = "e";
 
    System.out.println(c.compareTo(a)); //2
    System.out.println(c.compareTo(e)); //-2
}
  • 字母大小写转换
//toLowerCase();
//toUppercase();
 
public static void example13() {
    String str = "abcDEFG";
    System.out.println(str.toLowerCase());
    System.out.println(str.toUpperCase());
}
  • 字符串分割
//split(); 按指定的分割字符或字符串对内容进行分割,并将分割后的结果放在字符串数组中
//str.split(String sign);
//str.split(String sign, int limit);
 
public static void example14() {
    String str = "192.168.0.1";
 
    String[] firstArray = str.split("\\.");
    String[] secondArray = str.split("\\.", 3);
 
    for(String x : firstArray) {
        System.out.print("["+x+"]"); //[192][168][0][1]
    }
 
    for(String x : secondArray) {
        System.out.print("["+x+"]"); //[192][168][0.1]
    }
}
  • 格式化字符串
//String类的静态format()方法用于创建格式化的字符串
//str.format(String format, Object...args) //新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
//str.format(Local l,String format,Object...args) //使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
 
String str = String.format("%d", 400 / 2); //将结果以十进制格式显示
String str2 = String.format("%b", 3 > 5);  //将结果以boolean型显示
String str3 = String.format("%x", 200);    //将结果以十六进制格式显示
 
System.out.println(str); //200
System.out.println(str2); //false
System.out.println(str3); //c8
 
Date date = new Date();
System.out.printf("全部日期和时间信息:%tc%n",date);
System.out.printf("年-月-日格式:%tF%n",date);
System.out.printf("月/日/年格式:%tD%n",date);
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
System.out.printf("HH:MM格式(24时制):%tR",date);
  • 使用正则表达式
//通常被用于判断语句中,用来检查某一字符串是否满足某一格式
//matches();
 
public static void example17() {
    String regex = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$";
    String str1 = "asdfagearg";
    String str2 = "aegagewg@sgesg";
    String str3 = "segsseggg@qq.com";
 
    System.out.println(str1.matches(regex)); //false
    System.out.println(str2.matches(regex)); //false
    System.out.println(str3.matches(regex)); //true
}
  • 字符串生成器
字符序列String-Builder类,大大提高频繁增加字符串的效率。大量的字符串拼接等操作时使用。
  1. append();  向字符串生成器中追加内容
  2. insert();  向字符串生成器中指定位置插入数据内容
  3. delete();  移除此序列的子字符串中的字符
public static void example18(){
    StringBuilder str = new StringBuilder("aaa");
 
    str = str.append("->bbb");
    System.out.println(str.toString()); //aaa->bbb
 
    str = str.insert(3, "->ccc");
    System.out.println(str.toString()); //aaa->ccc->bbb
 
    str = str.delete(3, 8);
    System.out.println(str.toString()); //aaa->bbb
}
posted @ 2020-05-18 17:27  Duomen  阅读(290)  评论(0)    收藏  举报