String基础知识
package test1;
public class Main{
public static void main(String[] args){
String a = "Hello World";
String b = a;//地址相同 同一个串
// System.out.println(b.hashCode());//返回地址的哈希值
// System.out.println(a.hashCode());
String c = a+"yxc";//拼接
String d = a+18.18;//默认将变量转化成字符串 注:前面必须有一个变量才可以转化
String str = String.format("My age is %f",18.1256);// String.format() 直接将一串变量转化成字符串
String m = "3.141592653456456456879465412313564898";
String g = "123";
double n = Double.parseDouble(m);//将字符串转化为Double
int h = Integer.parseInt(g);//将字符串转化为int
float p = Float.parseFloat(m);//将字符串转化为Float
System.out.println(p);
}
}
拼接后地址改变
(不是在原串里拼接,而是创建了一个新的串)
String a = "Hello";
System.out.println(a.hashCode());
a+="World";
System.out.println(a.hashCode());
访问String中的字符
String a = "Hello";
//a[1]————不能直接访问字符串中的字符
//要用chatAt()访问
for (int i = 0; i < a.length(); i++) {//字符串的长度要加括号,数组的长度不加括号
System.out.println(a.charAt(i));
}
常用API
length()
:返回长度
split(String regex)
:分割字符串
indexOf(char c)、indexOf(String str)
:查找,找不到返回-1
equals()
:判断两个字符串是否相等,注意不能直接用==
compareTo()
:判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于
startsWith()
:判断是否以某个前缀开头
endsWith()
:判断是否以某个后缀结尾
trim()
:去掉首尾的空白字符
toLowerCase()
:全部用小写字符
toUpperCase()
:全部用大写字符
replace(char oldChar, char newChar)
:替换字符
replace(String oldRegex, String newRegex)
:替换字符串
substring(int beginIndex, int endIndex)
:返回[beginIndex, endIndex)中的子串
split(” “) 分割函数
String a = "Hello World";
String [] str = a.split(" ");//将a字符串按空格分开 储存在str字符数组中
System.out.println(Arrays.toString(str));//将字符数组转化为字符串
输出:
[Hello, World]
indexOf(“He”) 查找字符串或字符
String a = "Hello World";
int x = a.indexOf("He");//返回第一次出现的下标 不存在返回-1
System.out.println(x);
判断两个字符串是否相同 equals
String a = "aaa";
String b = "bbb";
System.out.println(a.equals(b));//比较a b是否相等 相等true 不等false
//直接用等号比较的是两个地址
比较大小 compareTo
System.out.println(a.compareTo(b));//0 相等 1 大于 -1 小于
startsWith 判断是否以某串字符开头
endsWith():判断是否以某串字符结尾
String a = "abcde";
System.out.println(a.startsWith("abc"));//判断a是否以abc开头 是 返回true 不是 返回false
trim():去掉首尾的空白字符
toLowerCase():全部用小写字符
toUpperCase():全部用大写字符
replace(char oldChar, char newChar):替换字符
replace(String oldRegex, String newRegex):替换字符串
substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串
String a = "ABcdABc";
System.out.println(a.trim());
System.out.println(a.toLowerCase());
System.out.println(a.toUpperCase());
System.out.println(a.replace("A","M"));//全部变
System.out.println(a.replace("ABc","ABC"));//全部变
System.out.println(a.substring(1));//返回从1开始的某个字串
System.out.println(a.substring(1,4));//返回1~3的字串
继续往后加内容 StringBuilder StringBuffer
//往字符串里加内容 字符串变长
StringBuilder sb = new StringBuilder("Hello");//初始化字符串
sb.append("World");//拼接字符串
for (int i = 0; i < 100000; i++) {
sb.append("h");
}
System.out.println(sb);
反转字符串 reverse()
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();//在自己的基础上翻转,而不是返回一个新的
把串的第i位取出来 charAt(i)
String sb = "Hello";
System.out.println(sb.charAt(0));//取出串的第0位
把串的第i位置成新的字符 setCharAt(i,newi)
StringBuilder sb = new StringBuilder("abcde");
for (int i = 0; i < sb.length(); i++) {
sb.setCharAt(i,(char)(sb.charAt(i)+1));//将串的第i位 置成他的ASCII码加一
}
System.out.println(sb);