在Java语言中,字符串数据实际上由String类所实现的。Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串;另一类是在程序中会被改变长度的可变字符串。Java环境为了存储和维护这两类字符串提供了 String和StringBuffer两个类(在JDK1.5版本后出现了StringBuilder,该类被设计用作 StringBuffer 的一个简易替换)。
String str = "this is a string!";
System.out.println(str.indexOf('i')); // 输出结果为:2
System.out.println(str.indexOf('!')); // 输出结果为:16
System.out.println(str.indexOf('y')); // 输出结果为:-1
// 重载方法:int indexOf(String str)
// 返回指定子字符串在此字符串中第一次出现处的索引。
System.out.println(str.indexOf("str"));// 输出结果为:10
System.out.println(str.lastIndexOf('s')); // 输出结果为:10
// 常用
String str1 = "I love" + " you!";
System.out.println(str1); // 输出结果为:I love you!
// 少用
String str2 = "abc".concat("xyz");
System.out.println(str2);// 输出结果为:abcxyz
String str = "this is a string!";
System.out.println("字符串的长度为:" + str.length()); // 输出结果为:字符串的长度为:17
System.out.println(str.charAt(5)); // 输出结果为:i
String str = "This is a String!";
System.out.println(str.startsWith("Th")); // 输出结果为:true
System.out.println(str.startsWith("a"));// 输出结果为:false
System.out.println(str.endsWith("ing!"));// 输出结果为:true
System.out.println(str.endsWith("ing"));// 输出结果为:false
System.out.println(str.toUpperCase());// 输出结果为:THIS IS A STRING!
System.out.println(str.toLowerCase());// 输出结果为:this is a string!
System.out.println(str.contains("is"));// 输出结果为:true
System.out.println(str.isEmpty());// 输出结果为:false
str = "";
System.out.println(str.isEmpty());// 输出结果为:true
String x = String.valueOf(12);// 基本数据类型转字符串
System.out.println(x);
int a = 5; // 基本数据类型转字符串
Integer i = new Integer(a);
i.toString();
// 顺便提下
int y = Integer.parseInt("21"); // 字符串转基本数据类型
System.out.println(y);
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
/*
* 从控制台输入字符串,计算出该字符串中
* 大写字母出现的个数
* 小写字母出现的个数
* 数字出现的个数
* 特殊字符出现的个数
*/
Scanner scan = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scan.nextLine();
int num1, num2, num3, num4;
num1 = num2 = num3 = num4 = 0;
char[] strs = str.toCharArray();// 将此字符串转换为一个新的字符数组。
for (char s : strs) {
if (s >= 'A' && s <= 'Z') {
num1++;
} else if (s >= 'a' && s <= 'z') {
num2++;
} else if (s >= '0' && s <= '9') {
num3++;
} else {
num4++;
}
}
System.out.println("大写字母:" + num1);
System.out.println("小写字母:" + num2);
System.out.println("数字:" + num3);
System.out.println("特殊字符:" + num4);
}
}
String str = " this is a string! ";
System.out.println(str.trim());// 运行结果为:this is a string!
System.out.println(str.replace("is", "xyz"));// 运行结果为: thxyz xyz a string!
String str = "乒乓球-篮球-排球";
System.out.println("从第5个字符截取到末尾的结果:" + str.substring(4));
System.out.println("从第5个字符截取到第6个字符的结果:" + str.substring(4, 6));
// 注意包含头,不包含尾
System.out.print("分割后字符串数组中的元素依次是:");
String[] strArray = str.split("-");
for (int i = 0; i < strArray.length; i++) {
if (i != strArray.length - 1) {
System.out.print(strArray[i] + " ");// 如果不是数组的最后一个元素,在元素后面加空格。
} else {
System.out.println(strArray[i]);// 数组的最后一个元素后面不加逗号
}
}
String str1 = new String("xyz");
String str2 = new String("xyz");
System.out.println(str1 == str2);// 输出结果为:false
System.out.println(str1.equals(str2)); // 输出结果为:true
// 1、str1和str2分别指向不同的对象,那么str1 == str2将返回false
// 用equals方法,该方法比较的是字符串的内容是否相同。
String str3 = "xyz";
String str4 = "xyz";
System.out.println(str3 == str4);// 输出结果为:true
System.out.println(str3.equals(str4)); // 输出结果为:true
// 2、用"=="运算符,该运算符表示指向字符串的引用是否相同,
// 上面: String str3="xyz";String str4 = "xyz",那么str3 == str4将返回true。
// 这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,
// 所以a和b指向的是同一个对象;
public class Demo {
public static void main(String[] args) {
System.out.println("1、添加------------");
add();
System.out.println("2、删除------------");
delete();
System.out.println("3、修改------------");
alter();
}
public static void add() {
StringBuffer sb = new StringBuffer();// 定义一个字符串缓冲区
sb.append("abcdefg");// 添加到StringBuffer中
System.out.println("append添加结果:" + sb);
sb.insert(2, "123");// 在指定位置插入字符串
System.out.println("insert插入结果:" + sb);
}
public static void delete() {
StringBuffer sb = new StringBuffer("abcdefg");// 定义一个字符串缓冲区
sb.delete(1, 5);// 包含头,不包含尾
System.out.println("删除指定范围的结果:" + sb);
sb.deleteCharAt(2);
System.out.println("删除指定位置的结果:" + sb);
sb.delete(0, sb.length());
System.out.println("清空缓冲区的结果是:" + sb);
}
public static void alter() {
StringBuffer sb = new StringBuffer("abcdefg");// 定义一个字符串缓冲区
sb.setCharAt(1, 'q');
System.out.println("修改指定位置字符的结果:" + sb);
sb.replace(1, 3, "xyz");// 包含头,不包含尾
System.out.println("替换指定位置字符串的结果:" + sb);
System.out.println("字符串反转后的结果:" + sb.reverse());
}
}
运行结果为: