两种方式创建String对象的区别
public class StringDemo {
public static void main(String[] args) {
String s1="abc";
String s2=new String("abc");
//s1和s2有什么区别?
//s1在内存中有一个对象,s2在内存中有两个对象
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true,因为String类重写了Object类中的equals方法,该方法用于判断字符串是否相等
}
}
2.常见的字符串操作方法
/***
* String 类适用于描述字符串事物
* 那么他就提供了多个方法对字符串进行操作
* 常见的操作有哪些?
*/
public class StringMethodDemo {
//获取
public static void method_get(){
String str="abcdeakpf";
//长度
sop(str.length());//返回9
//根据索引获取字符
sop(str.charAt(4));//返回额e,访问不存在的角标时会发生java.lang.StringIndexOutOfBoundsException
//根据字符获取索引
sop(str.indexOf('a'));//返回0,如果没有找到,返回-1
sop(str.indexOf('a',3));//从3位置开始找,返回5
//反向索引一个字符出现位置
sop(str.lastIndexOf("a"));//返回5
}
//判断
public static void method_is(){
String str="ArrayDemo.java";
//判断文件名称是否是Array单词开头
sop(str.startsWith("Array"));//true
//判断文件名称是否是.java的文件
sop(str.endsWith(".java"));//true
//判断文件中是否包含Demo
sop(str.contains("Demo"));//true
//还有两种判断boolean equals(str),boolean equalsIgnoreCase(str)忽略大小写
}
/**
* 转换
* 1.将字符数组转换成字符串
* 构造函数:
* String(char[]);
* String(char[] value, int offset, int count);
* 静态方法:
* static String copyValueOf(char[]);
* static String copyValueOf(char[] data,int offset,int count);
* static String valueOf(char[]);
* 2.将字符串转成字符数组
* char[] toCharArray();
* 3.将字节数组转成字符串
* String(byte[]);
* String(byte[] value, int offset, int count);
* 4.将字符串转成字节数组
* byte[] getBytes();
* 5.将基本数据类型转成字符串
* static String valueOf(int)
* static String valueOf(double);
* 3+"";相当于String.valueOf(3);
* 特殊:字符串和字节数组在做转换的过程中,是可以指定编码表的
*/
public static void method_trans(){
//将字符数组转换成字符串,字符串初始化就能完成
char[] arr={'a','b','c','d','e'};
String s=new String(arr, 1, 3);//返回“bcd”
sop("s:"+s);
//或者
String ss=String.valueOf(arr);
sop("ss:"+ss);//abcde
String sss=String.copyValueOf(arr);
sop("sss:"+sss);//abcde
String s1="zxcvbnm";
char[] chr=s1.toCharArray();
for(char c:chr){
sop("ch:"+c);
}
}
//替换
public static void method_replace(){
String s="hello java";
//String s1=s.replace('q','n');//如果要替换的字符不存在,返回的还是原串
String s1=s.replace("java", "world");
sop("s:"+s);
sop("s1:"+s1);//hello world
}
//切割
public static void method_splite(){
String s="zhangsan,lisi,wangwu";
String[] arr=s.split(",");
for(String ss:arr){
sop(ss);
}
}
//子串,获取字符串中的一部分
//String substring(begin);
//String substring(begin,end);
public static void method_sub(){
String s="abcdef";
sop(s.substring(2));//cdef,从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常
sop(s.substring(2, 4));//cd,包含头,不包含尾
//原串不变
}
//大小写转换,去除空格,比较
public static void method_all(){
String s=" Hello World ";
sop("小写:"+s.toLowerCase());
sop("大写:"+s.toUpperCase());
sop("去除空格:"+s.trim());
String s1="abc";
String s2="aaa";
sop(s1.compareTo(s2));//返回1,s1>s2
}
public static void sop(Object o){
System.out.println(o);
}
public static void main(String[] args) {
method_get();
method_is();
method_trans();
method_replace();
method_splite();
method_sub();
method_all();
}
}
|
|