文章目录
String 在编程中被广泛使用,与C++不同的是,java中String类提供了许多封装好的方法,直接调用这些方法可以相当快速的加快程序的开发速度,其中包含:字符串比较、字符串与其他数据类型之间的转换、字符串查找、字符串截取与拆分、字符串替换与修改等。这些都值得我们去掌握,String类 java.lang.String。
字符串定义
直接定义
用字符串常量直接初始化一个 String 对象
String str = "Hello Java";
String word;
word = "Hello Java world";
String类定义
使用 String 类的构造方法来创建字符串
String str1 = new String("Hello Java");
String str2 = new String(str1); //字符串的副本
- 获取字符串长度与索引
int length = str.length();//得到字符串长度
System.out.println("字符串的长度为:"+length);
char ch = str.charAt(7); //得到索引为7的字符
System.out.println("字符串中的第8个字符为:"+ch);
字符串比较
equals() 方法
逐个地比较两个字符串的每个字符是否相同,返回boolean类型
equals()//不忽略字符串字符大小写
compareToIgnoreCase()//忽略字符串字符大小写
import java.lang.String
String str1 = "elapant";
String str2 = "ELEPANT"; //定义两个字符串
String str3 = new String("elapant");
//不忽略字符串字符大小写
System.out.println(str1.equals(str2)); // 输出 true
System.out.println(str1.equals(str3 )); // 输出false
//忽略字符串字符大小写
System.out.println(str1.compareToIgnoreCase(str2)); // 输出 true
System.out.println(str1.compareToIgnoreCase(str3 )); // 输出true
- equals() 、 区别
equals()方法与运算符执行的是两个不同的操作是重要的。如同刚才解释的那样,equals() 方法比较字符串对象中的字符。而==运算符比较两个对象引用看它们是否引用相同的实例。
String s1 = "Hello";
String s2 = new String(s1);
System.out.println(s1.equals(s2)); // 输出true
System.out.println(s1 == s2); // 输出false
变量 s1 指向由“Hello”创建的字符串实例。s2 所指的的对象是以 s1 作为初始化而创建的。因此这两个字符串对象的内容是一样的。但它们是不同的对象,这就意味着 s1 和 s2 没有指向同一的对象,因此它们是不==的。
compareTo() 方法
与equals()方法一样,用于比较字符串,不过更精细的是可以知道字符串之间大小的比较,这里的大小于是指在字典中出现的先后顺序。
compareTo()//按字典顺序比较两个字符串的大小
compareTOIgnoreCase()//忽略字符串大小写情况下比较字符串的大小
public class StringCompareMethod {
public static void main(String args[]){
String str1 = "elapant";
String str2 = "ELEPANT"; //定义两个字符串
String str3 = "Apple";
String str4 = "apple";
//不忽略字符串字符大小写 //输出:elapant > ELEPANT
if(str1.compareTo(str2)>0){
System.out.println(str1+">"+str2);
}else if(str1.compareTo(str2) == 0){
System.out.println(str1+"="+str2);
}else{
System.out.println(str1+"="+str2);
}
//忽略字符串字符大小写 //输出:elapant < ELEPANT
if(str1.compareToIgnoreCase(str2)>0){
System.out.println(str1+">"+str2);
}else if(str1.compareToIgnoreCase(str2) == 0){
System.out.println(str1+"="+str2);
}else{
System.out.println(str1+"<"+str2);
}
}
}
字符串数据类型转换
常见数据类型转换
数据类型 | 字符串转换为其他数据类型的方法 | 其它数据类型转换为字符串的方法1 | 其他数据类型转换为字符串的方法2 |
---|---|---|---|
boolean | Boolean.getBoolean(str) | String.valueOf([boolean] b) | Boolean.toString([boolean] b) |
int | Integer.parseInt(str) | String.valueOf([int] i) | Int.toString([int] i) |
long | Long.parseLong(str) | String.valueOf([long] l) | Long.toString([long] l) |
float | Float.parseFloat(str) | String | valueOf([float] f) |
double | double.parseFloat(str) | String.valueOf([double] d) | Double.toString([double] d) |
byte | Byte.parseByte(str) | String.valueOf([byte] bt) | Byte.toString([byte] bt) |
char | str.charAt(i) | String.valueOf([char] c) | Character.toString([char] c) |
String 与int相互转换
String转换为int
- Integer.parseInt(str)
- Integer.valueOf(str).intValue() //Integer 是一个类,是 int 基本数据类型的封装类
public static void main(String[] args) {
String str = "123";
int n = 0;
// 第一种转换方法:Integer.parseInt(str)
n = Integer.parseInt(str);
System.out.println("Integer.parseInt(str) : " + n);
// 第二种转换方法:Integer.valueOf(str).intValue()
n = 0;
n = Integer.valueOf(str).intValue();
System.out.println("Integer.parseInt(str) : " + n);
}
int转换为String
- String s = String.valueOf(i);
- String s = Integer.toString(i);
- String s = “” + i;
public static void main(String[] args) {
int num = 10;
// 第一种方法:String.valueOf(i);
num = 10;
String str = String.valueOf(num);
System.out.println("str:" + str);
// 第二种方法:Integer.toString(i);
num = 10;
String str2 = Integer.toString(num);
System.out.println("str2:" + str2);
// 第三种方法:"" + i;
String str3 = num + "";
System.out.println("str3:" + str3);
}
字符串查找
根据字符查找
查找字符串和查找单个字符,而查找又可分为查找对象在字符串中第一次出现的位置和最后一次出现的位置,再扩展一步,我们可以缩小查找范围,在指定范围之内查找其第一次或最后一次出现的位置,其主要分为以下查找方式:
- indexOf() 方法
indexOf() 方法用于返回字符(串)在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1
str.indexOf(value)
str.indexOf(value,int fromIndex) //从指定字符串中的fromIndex 索引位置开始查找。
public static void main(String[] args) {
String words = "today,monday,sunday";
System.out.println("原始字符串是'"+words+"'");
System.out.println("indexOf(\"day\")结果:"+words.indexOf("day"));
System.out.println("indexOf(\"day\",5)结果:"+words.indexOf("day",5));
System.out.println("indexOf(\"o\")结果:"+words.indexOf("o"));
System.out.println("indexOf(\"o\",6)结果:"+words.indexOf("o",6));
}
//输出结果为
//原始字符串是'today,monday,sunday'
//indexOf("day")结果:2
//indexOf("day",5)结果:9
//indexOf("o")结果:1
//indexOf("o",6)结果:7
- lastlndexOf() 方法
- lastIndexOf() 方法用于返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1
- (lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找)
str.lastIndexOf(value)
str.lastlndexOf(value, int fromIndex)
public static void main(String[] args) {
String words="today,monday,Sunday";
System.out.println("原始字符串是'"+words+"'");
System.out.println("lastIndexOf(\"day\")结果:"+words.lastIndexOf("day"));
System.out.println("lastIndexOf(\"day\",5)结果:"+words.lastIndexOf("day",5));
System.out.println("lastIndexOf(\"o\")结果:"+words.lastIndexOf("o"));
System.out.println("lastlndexOf(\"o\",6)结果:"+words.lastIndexOf("o",6));
}
//输出结果为
//原始字符串是'today,monday,Sunday'
//lastIndexOf("day")结果:16
//lastIndexOf("day",5)结果:2
//lastIndexOf("o")结果:7
//lastlndexOf("o",6)结果:1
根据索引查找
String 类的 charAt() 方法可以在字符串内根据指定的索引查找字符,语法形式如下:
字符串名.charAt(索引值) //字符串本质上是字符数组,因此它也有索引,索引从零开始。
String words = "today,monday,sunday";
System.out.println(words.charAt(0)); // 结果:t
System.out.println(words.charAt(1)); // 结果:o
System.out.println(words.charAt(8)); // 结果:n