java基础-String类
String类基本特性
String类表示的字符串,String是不可变类,因此String对象一旦创建,它的包含的字符序列就不可改变,直至对象被销毁。
(String类的底层实现是由Public final char values[]
实现的,所以String对象一旦创建,存储的内容不可改变。)
常量池的概念:JVM中一块独立的区域用于存储字符串常量和基本类型常量。
String创建对象的存储区域比较:
- 单独使用""创建的字符串都是常量,都是在编译期就存储到常量池中;
- 使用
new String("")
创建的对象会存储到堆内存中,是在运行期新创建的; - 只包含常量的字符串连接符如
"china"+"dream"
也是在编译期就存储到常量池; - 使用包含变量的字符串连接符如
"china"+ s1
是在运行时创建的存储于堆内存中
String的常用方法
String()
: 初始化一个新的String对象,使其为空的字符序列,并不是NULL。
String(StringBuffer buffer)
:通过StringBuffer来创建对象
String(StringBuilder builder)
:通过StringBuilder来创建对象
char charAt(int index)
: 返回index处的字符
String concat(String str)
:拼接(常用)
boolean contentEquals(StringBuffer buffer)
:内容是否相等
boolean equals(Object obj)
: 值相等
boolean equalsIgnoreCase(String anotherString)
:忽略大小写判断值是否相等
byte[] getBytes()
:将字符串转换成byte数组
int indexOf(String str)
:str在字符串中出现的首次索引
int indexOf(String str,int fromIndex )
:从指定的fromIndex开始出现的第一次的str的索引
int lastIndexOf(String str)
:返回str最后一次出现的索引
int length()
:返回字符串的长度
String replace(String oldChar,String newChar)
:使用newChar替换oldChar
String replaceAll(String regex,String replacement)
:用给定的replacement替换所有的regex字符串
boolean startsWith(String str)
:测试字符串是否以指定前缀开始
String[] split(String str)
:将字符串按照指定的字符串分开,返回的为字符串数组
String substring(int beginIndex)
:返回从beginIndex开始的子串
String substring(int beginIndex,int endIndex)
:返回从beginIndex到endIndex的子串
char[] toCharArray()
:字符串转成字符数组(常用)
String toLowerCase()
:转小写字母
String toUpperCase()
:转大写字母
static String valueOf(基本类型 obj)
:基本类型转化成字符串(常用)
String trim()
:忽略字符串的前导和尾部空白
测试char[] toCharArray()
:
public class DemoIsNum{
public static void main(String[] args){
String s1 = "123456789";
String s2 = "12345 678";
System.out.println("\"123456789\" are all numbers ? "+isNum(s1));
System.out.println("\"12345 678\" are all numbers ? "+isNum(s2));
}
public static boolean isNum(String str){
char[] c = str.toCharArray();
for(char ch : c){
if(!(ch >= '0'&& ch <= '9')){
return false;
}
}
return true;
}
}
运行结果