String类概述
用于描述字符串;字符串是String类类型的变量,而类类型的变量一定是对象;
①所以每一个字符串都是一个特殊的对象
②字符串一旦被初始化就不可以被改变;是被final修饰的常量
③String s1 = "abc"; 在内存中有一个对象
String s3 = new String("abc");在内存中有两个对象;new是一个对象(堆),"abc"是一个对象(堆中的常量池)
s1 = "bbb";/改变s1的指向/;aaa不会变成”bbb“;而是s1的从"aaa"指向了”bbb“;这也是字符串对象的特殊之处
s2 = "abc",s1和s2指向了常量池中同一个字符串对象
④在Object中equals 方法比较的是对象的内存地址,即哈希值方法体中是"=="
在String类中复写了equals方法,用于判断字符串是否相同
String类的方法操作
①获取
1.1 --获取字符串包含的字符数,即字符串的长度
int length();获取长度。
1.2 --根据位置获取位置上某个字符。
char charAt(int index);
1.3--根据字符获取该字符在字符串中位置
int indexOf( int ch); 返回ch在字符串中第一次出现的位置
int indexOf( int ch, int formIndex); 从fromIndex指定位置开始,获取ch字符在字符串中第一次出现的位置
int indexOf(String str)返回str在字符串中第一次出现的位置
int indexOf(String str , int fromIndex)
int lastIndexOf(int ch) ; 返回ch在字符串最后一次出现的位置
②判断
2.1--字符串中是否包含某一个字串
boolean contains(str);
特殊之处indexOf(str)可以索引str第一次出现的位置,如果返回-1,表示str不存在该字符串中 ;可以用于对指定判断是否包含
if (str.indexOf("aa")!= -1);既可以判断是否存在,又可以获取出现的位置
2.2--字符串是否为空
boolean isEmpty();原理就是判断长度是否为0
2.3--字符串是否以指定内容开头 boolea startsWith(str);
2.4--字符串是否以指定内容结尾 boolean endsWith()str;
2.5--判断字符串内容是否否相同 boolean equals(str); 复写了Object类中的equals方法
2.6--判断内容是否相同(忽略大小写)boolean equalsIgnoreCase();
③转换
3.1将字符数组转换成字符串
构造函数:要注意new
new String (char[]);分配一个新的String,使其包含当前字符数组的字符序列
new String(char[], offset,count) ;将字符数组中的一部分转成字符串。offset起点;count数量
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset ; int count);
static String valueOf(char[]);
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.2将字符串转成字符数组。char[] toCharArray():
3.4将字符串转成字节数组。byte[] getBytes():
3.5将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
//3+"";//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
④替换String replace(oldchar,newchar);
⑤切割String[] split(regex);
⑥子串。获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
⑦转换 去除空格,比较。
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);
示例
class StringMethodDemo
{
public static void main(String[] args)
{
//method_get();
//method_is();
//method_trans();
//method_replace();
//method_split();
//method_sub();
method_7();
}
public static void sop(Object obj)//多态性 也可是(String str)
{
System.out.println(obj);//将输出封装,简化书写
}
public static void method_get() //获取
{
String str = "abcdabfgk";
sop(str.length()); //字符串长度
sop(str.charAt(3)); //下标为3的字符
sop(str.indexOf('b')); //'b'的角标位置
sop(str.indexOf('b',3)); //从下标3开始第一次出现'b'的位置
sop(str.indexOf("ab")); //
sop(str.indexOf("ab",3)); //
sop(str.lastIndexOf('a')); //'a'最后一次出现的位置
}
public static void method_is() //判断
{
String str="StringDemo.java";
String s="stringDemo.java";
sop(str.contains("string"));//是否存在false
sop(str.indexOf("String")); //是否存在及存在的位置0
sop(str.isEmpty()); //是否为空false
sop(str.startsWith("Str")); //是否Str开头true
sop(str.endsWith(".java")); //是否是.java文件reue
sop(str.equals(s)); //是否相同,区分大小写 false
sop(str.equalsIgnoreCase(s));//不区分大小写 true
}
public static void method_trans()//转换
{
char[] arr= {'H','e','l','l','o','W','o','r','l','d','!'}; //将字符数组转换成字符串
//构造函数 需要分配一个新的String 一定要注意new
sop(new String(arr)); //将字符数组转换成字符串
sop(new String(arr,5,6));//从角标5开始,将数组后面的6个元素转换成字符串
//静态方法
sop(String.copyValueOf(arr));//同上
sop(String.copyValueOf(arr,5,5));//同上
sop(String.valueOf(arr));//有无copy的区别,能从指定位置,指定个数
//static String valueOf();将基本数据类型转换成字符串
String s = "Hello Java!"; //将字符串转换成字符数组
char[] ch = s.toCharArray();
for (int x=0 ;x<ch.length ;x++ )
{
sop("ch="+ch[x]);
}
}
public static void method_replace()//替换字符、字符串
{
String s = "Hello World!";
String s1= s.replace("World","Java");
sop(s);
sop(s1);
}
public static void method_split() //切割
{
String s = "zhangsan,lisi,wangwu";
String[] arr = s.split(","); //根据,号切割
for (int x=0; x<arr.length ;x++ )
{
sop(arr[x]);
}
}
public static void method_sub()//子串,获取字符串中的一部分
{
String s = "abcdefg";
sop(s.substring(3)); //从指定位置到结束,如果不存在会发生字符串角标越界异常
sop(s.substring(3,6)); //包含头 不包含尾
}
public static void method_7()
{
String s = " Hello Java ! ";
sop(s.toUpperCase()); //转换大写
sop(s.toLowerCase()); //转换小写
sop(s.trim()); //去除两端空格
String s1 = "abc"; //字典偏移值
String s2 = "a1d"; //等于返回0,正大于 负小于
sop(s1.compareTo(s2)); //对两个字符串进行自然顺序的比较
}
}