目录
String方法
Java 字符串(String)操作常用操作:字符串的替换、删除、截取、赋值、连接、比较、查找、分割等。
String是一个类,一旦声明不可改变!!!
类中可以有: 属性、方法、构造器属性。
String既然是一个类,s1应该叫做String类的对象。类如果要创建对象,必须有new,s1并没有new,s1也可以叫做对象。
public class Ch01 {
public static void main(String[] args) {
String s1 = "abcdefg";
}
}
s2是通过new创建出来的String类的对象,创建对象是要调用构造器 。s1指向的abcdefg和s2指向的abcdefg不在同一个区域内。因此运行结果是false。
双等号比较的是虚地址,虚地址:对象在内存中的存储位置。
public class Ch01 {
public static void main(String[] args) {
String s1 = "abcdefg";
s1 = "hello";
String s2 = new String("abcdefg");
String s3 = new String("abcdefg");
String s4 = "abcdefg";
System.out.println(s1 == s2);
// new代表新建
System.out.println(s2 == s3);
System.out.println(s1 == s4);
}
}
注意:
=赋值,无论怎么比较,都是true
new赋值,用双等号比较,就是false
Equal
定义和用法
equals()
方法比较两个字符串,如果字符串相等则返回true,否则返回false。
比较字符串以判断它们是否相等:
String myStr1 = "Hello";
String myStr2 = "Hello";
String myStr3 = "Another String";
System.out.println(myStr1.equals(myStr2)); // 相等则返回true
System.out.println(myStr1.equals(myStr3)); // false
charAt
定义和用法
charAt()
方法返回字符串中指定索引处的字符。第一个字符的索引为0,第二个字符的索引为1,依此类推。
返回字符串的第一个字符:
String myStr = "Hello";
char result = myStr.charAt(0);
System.out.println(result);
取出指定下标位置的字符:
String s1 = "abcdefg";
String s1 = "abcdefg";
// 取出指定下标位置的字符
System.out.println(s1.charAt(0));
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
System.out.println(c + 1);
length
定义和用法
length()方法返回指定字符串的长度。
注意:空字符串的长度为0。
length方法: 1.不需要传参
2.有返回值,整型int
3.访问权限public
返回字符串中的字符数:
String s1 = "5465";
System.out.println(.length());
indexOf
1.定义和方法
indexOf()
方法返回字符串中首次出现的指定字符的索引位置。
提示:使用方法返回字符串中最后一次出现指定字符的位置。lastIndexOf
2.调用语法
有4个indexOf()方法:
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
例:
String s1="sfehbhjihhh";
System.out.println(s1.indexOf("h",9));
trim
定义和用法trim()
方法可删除字符串两端的空格。
注意:此方法不会更改原始字符串。
从字符串的两侧删除空格:
String str = " Hello World! ";
System.out.println(str);
System.out.println(str.trim());
toUpperCase()
定义和用法
toUpperCase()
方法将字符串转换为大写字母。
注意:toLowerCase()
方法将字符串转换为小写字母。
将字符串转换为大写和小写字母:
String s1 = "Hello World";
System.out.println(s1.toUpperCase());
System.out.println(s1.toLowerCase());
substring()
定义和用法
返回一个新的字符串,它是当前字符串的一个子字符串。
调用语法
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
例:
public class RunoobTest {
public static void main(String args[]) {
String Str = new String("This is text");
System.out.print("返回值 :" );
System.out.println(Str.substring(4) );
System.out.print("返回值 :" );
System.out.println(Str.substring(4, 10) );
}
}
split()
拆分字符串。
语法:public String[] split(String regex, int limit)
String address = new String("192.168.13.240");
String[] str = address.split("\\.");
for(String s : str){
System.out.println(s);
}
System.out.println("@2@3@".split("@",-1)); //[ , 2, 3, ]
System.out.println("@2@3@".split("@",0)); //[ , 2, 3]
System.out.println("@2@3@".split("@",2)); //[ , 2@3@]
System.out.println("@2@3@".split("@",3)); //[ , 2, 3@]
System.out.println("@2@3@".split("@",4)); //[ , 2, 3, ]
System.out.println("@2@3@".split("@",5)); //[ , 2, 3, ]
字符串替换方法
replace() 方法
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串)
语法:字符串.replace(String oldChar, String newChar)
例:创建一个字符串,对它使用 replace() 方法进行字符串替换并输出结果。(本案例参考:Java字符串的替换(replace()、replaceFirst()和replaceAll()) (biancheng.net))
public static void main(String[] args) {
String words = "hello java,hello php";
System.out.println("原始字符串是'"+words+"'");
System.out.println("replace(\"l\",\"D\")结果:"+words.replace("l","D"));
System.out.println("replace(\"hello\",\"你好\")结果:"+words.replace("hello","你好 "));
words = "hr's dog";
System.out.println("原始字符串是'"+words+"'");
System.out.println("replace(\"r's\",\"is\")结果:"+words.replace("r's","is"));
}
输出结果如下所示:
原始字符串是'hello java,hello php' replace("l","D")
结果:heDDo java,heDDo php replace("hello","你好")
结果:你好 java,你好 php 原始字符串是'hr's dog' replace("r's","is")
结果:his dog
replaceAll() 方法
replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串。
语法:字符串.replaceAll(String regex, String replacement)
其中,regex 表示正则表达式,replacement 表示用于替换的字符串。
例: (本案例参考:Java字符串的替换(replace()、replaceFirst()和replaceAll()) (biancheng.net))
String words = "hello java,hello php";
String newStr = words.replaceAll("hello","你好 ");
System.out.println(newStr); // 输出:你好 java,你好 php
包装器类
原理:
自动装箱:把int类型包装成了包装器Integer类型
基本数据类型转换成对应的包装器类型
自动拆箱:把Integer类型转换int类型
包装器类型转换成对应的基本数据类型
public static void main(String[] args) {
int i = 10;
Integer i1 = 20;
Integer i2 = Integer.valueOf(50);
int ii = i2;
int ii2 = i2.intValue();
}
自动装箱
public static void main(String[] args) {
String s = "a";
// 自动装箱
Integer i = Integer.parseInt(s);
Integer.toString(i);
System.out.println(2022 - 1990);
}
数组和字符串的相互转换
字符串转换为数组
字符串转换为字符数组。
String str = "123abc";
char[] arr = str.toCharArray(); // char数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 输出1 2 3 a b c
}
数组转换为字符串
char字符数组转化为字符串。
char[] arr = { 'a', 'b', 'c' };
String string = String.copyValueOf(arr);
System.out.println(string); // 输出abc
String字符串数组转化为字符串。
String[] arr = { "123", "abc" };
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]); // String并不拥有append方法,所以借助 StringBuffer
}
String sb1 = sb.toString();
System.out.println(sb1); // 输出123abc
转成字节型数组
byte[] bytes = str.getBytes();
for (byte b : bytes) {
System.out.println(b);
}
字符串和其他数据类型的转换
任何数据类型和字符串类型做加法,结果都是字符串。
int i = 10;
// 把int类型转成字符串(推荐)
String s = String.valueOf(i);
// s = new String(i);
// String s = i + "";// null 不推荐使用
// System.out.println(s);
总结:
今天学习了String的一些方法,常用的就是Equal、charAt、length、indexOf...还有一些不常用的,例如:trim等。还学习了字符串和数组之间的一些转换、包装类以及字符串的一些替换方法。替换方法和转换不是很理解,请求支援!