一、String字符串类型
1.String字符串类型:
--java.lang.String类使用final修饰,不能被继承
--String的底层封装的是一个字符数组
--String在内存中采用Unicode编码格式,每个字符占2个字节的内存空间
--字符串对象一旦创建,对象内容永远无法改变,但字符串引用可以重新赋值(指向新的对象)
--String称为不变对象
2. 字符串常量池:是java对String的一个优化措施
--java推荐使用字面量/直接量(直接"")的方式来创建字符串对象,并且会将所有以字面量方式创建的对象缓存到常量池中,当使用相同字面量再创建字符串对象时将会复用常量池中的对象,以减少内存开销
二、String类的常用方法
1.length()获取字符串的长度(字符个数)
package string;
/**
* 获取字符串的长度
*/
public class LengthDemo {
public static void main(String[] args) {
String str = "我爱Java!";
int len = str.length();//获取str的长度
System.out.println(len);//7
}
}
2.trim():去除当前字符串两边的空白字符
package string;
/**
* String trim():去除当前字符串两边的空白字符
*/
public class TrimDemo {
public static void main(String[] args) {
String str = " hello world ";
System.out.println(str);// hello world
str = str.trim();//去除str两边的空白字符(生成一个新的字符对象)
//并将新的字符串对象存储到str中
System.out.println(str);//hello word
}
}
3.toUpperCase()/toLowerCase():将当前字符中英文部分转成大写/小写
package string;
/**
* String toUpperCase():
* 将当前字符串中的英文部分给转换为全大写
* String toLowerCase():
* 将当前字符串中的英文部分给转换为全小写
*/
public class ToUpperCaseDemo {
public static void main(String[] args) {
String str = "我爱Java";
String upper = str.toUpperCase();//将str中的英文部分给转换为全大写,并存入upper中
System.out.println(upper);
String lower = str.toLowerCase();//将str中的英文部分给转换为全小写,并存入lower中
System.out.println(lower);
}
}
4.startsWith();/endsWith():判断当前字符串是否是以给定的字符串开始/结束的
package string;
/**
* boolean startsWith(String s);
* 判断当前字符串是否是以给定字符串(s)开始的
* boolean endsWith(String s):
* 判断当前字符串是否是以给定字符串(s)结束的
*/
public class StartsWithDemo {
public static void main(String[] args) {
String str = "thinking in java";//java编程思想(经典书---工具书)
boolean starts = str.startsWith("think");//判断str是否是以think开头的
System.out.println(starts);
boolean ends = str.endsWith(".png");//判断str是否是以.png结尾的
System.out.println(ends);
}
}
5.charAt():返回当前字符串指定位置上的字符----根据位置找字符
package string;
/**
* char charAt(int index):
* 获取当前字符串指定位置(index)上的字符-----根据位置找字符
*/
public class CharAtDemo {
public static void main(String[] args) {
String str = "thinking in java";
char c = str.charAt(9);//获取str中下标9所对应的字符
System.out.println(c);
}
}
6.indexOf()/lastIndexOf():检索给定字符串在当前字符串中第一次/最后一次出现的位置---根据字符串找位置
package string;
/**
* int indexOf(String s):
* 检索给定字符串(s)在当前字符串中第一次出现的位置---根据字符串找位置
* int lastIndexOf(String s):
* 检索给定字符串(s)在当前字符串中最后一次出现的位置
*/
public class IndexOfDemo {
public static void main(String[] args) {
String str = "thinking in java";
int index = str.indexOf("in");//检索in在str中第1次出现的位置
System.out.println(index);
index = str.indexOf("in",3);//从下标为3的位置开始找in第1次出现的位置
System.out.println(index);
index = str.indexOf("abc");//若字符串在str中不存在,则返回-1
System.out.println(index);
index = str.lastIndexOf("in");//检索in在str中最后一次出现的位置
System.out.println(index);
}
}
7.substring():截取当前字符串中指定范围的字符串(含头不含尾)
package string;
/**
* String substring(int index,int end):
* 截取当前字符串中指定范围内的字符串(含头不含尾)
*/
public class SubstringDemo {
public static void main(String[] args) {
// 01234567890
String str = "www.xxxx.cn";
int start = 4;
int end = 8;
String name = str.substring(start,end);//载取下标4到7之内的字符串
System.out.println(name);
}
}
/**
*扩展:双后缀情况下截取当前字符串中指定范围内的字符串
*index和substring搭配使用
*/
public class SubstringDemo {
public static void main(String[] args) {
// 01234567890
String str = "www.xxxx.com.cn";
int start = str.indexOf(".")+1;//4
int end = str.indexOf(".",start);//8
String name = str.substring(start,end);//载取下标4到7之内的字符串
System.out.println(name);
}
}
8.静态方法valueOf():将其他数据转换为字符串
package string;
/**
* static String valueOf(数据类型 a):
* 将其它数据类型转换为String
*/
public class ValueOfDemo {
public static void main(String[] args) {
int a = 123;
String s1 = String.valueOf(a); //将int型变量a转换为String类型并赋值给s1
System.out.println(s1); //123---字符串类型
double b = 123.456;
String s2 = String.valueOf(b); //将double型变量b转换为String类型并赋值给s2
System.out.println(s2); //123.456---字符串类型
String s3 = b+""; //任何类型与字符串相连,结果都会变为字符串类型,效率低
System.out.println(s3); //123.456---字符串类型
}
}