Java-字符串类
温馨提示:字符串类中方法涉及到范围的都只包含头不包含尾。涉及到位置都是第一次出现的位置。
可以打印任意类型的数据:
public void sop(Object o)
{
System.out.println(o);
}
1、String类
字符串是String类的实例,字符串的格式:“...”。
字符串一旦在内存中开辟空间,它的值就不会被改变,且不会在重复开辟空间。如“abc”。它可以赋值给多个String
类型的变量,这些变量就指向“abc”。注意:这些变量的值不是地址,应该与引用型变量进行区分。变量的值就是“abc”。
String类中有一个方法,叫equals(String s);比较字符串内容。
String s1=“abc”;
String s1=“abc”;
此时s1.equals(s2)为true;等价于(s1==s2)?true
但是特殊:
(面试)
Stirng s1=“abc”;
String s2=new String(“abc”);
s1和s2的区别?
s1在内存中有一个对象。
s2在内存中有两个对象。
此时s1.equals(s2)为true;不等价于(s1==s2)?false
创建String类对象的方法:
String s=new String(“abc”);
Char[] c=new char[6];
String s=new String(c);
String s=“abc”;
String类中常见的方法:
(1)获取
int length();
char charAt(int index);
int indexof(int ch);
int indexof(int ch,int fromIndex);
int indexof(String str);
int indexof(String str,int fromIndex);
int lastIndexof(int ch);
(2)判断
boolean contains(str);
boolean isEmpty();
boolean starSwitch(str);
boolean endSwitch(str);
boolean equals(str);
boolean equalsIgnore(str);
(3)转换
字符数组和字符串之间的转换:
String(char[] c);
String(char[] c,offset,count);
static String copyValueOf(char[]);
static String copyValueOf(char[],offset,count);
Char[] toCharArray();
字节数组和字符串之间的转换:
String(byte[] c);
String(byte[] c,offset,count);
byte[] getBytes();
基本数据类型和字符串之间的转换:
static String valueOf(int );
static String valueOf(double);
(插入):
基本数据类型对象包装类。
对象 |
类 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
boolean |
Boolean |
float |
Float |
double |
Double |
char |
Character |
基本数据类型转成字符串:
基本数据类型+“”
基本数据类型.toString(基本数据类型值);
如:Integer.toStirng(34);//将整数34变成“34”。
数格式的字符串转成基本数据类型。
xxx a=Xxx.parseXxx(String);
如:int num=Integer.parseInt(“123”);
其实这句话等价于:
Integer i=new Integer(“123”);
int num=i.intValue();
十进制整型与其他进制之间的转化:
十进制转成其他进制:
Integer.toBinayString(6);//获取6的二进制形式。
Integer.toHexString(60);
其他进制转化成十进制:
int x=Integer.parseInt(“3c”,16);//将十六进制3c转换成十进制
Jdk1.5版本以后基本数据类型对象包装类新特性:
① 自动装箱
Integer x=new Integer(4);
Integer x=4;
② 自动拆箱
Integer x=new Integer(4);//x是类类型
x=x+4;//x是int类型
Ps:
Integer m=128;
Integer n=128;
S.o.p(m==n);false
Integer m=127;
Integer n=127;
S.o.p(m==n);true
(4)其他
将字符串转成大写或者小写
String toUpperCase();
String toLowerCase();
将字符串两端的多个空格去掉
String trim();
对两个字符串进行自然顺序比较。
int compare(String);
对应位置上的字符进行比较,知道两个字符不相等。
返回的是对应位置上字符的差值。
2、StringBuffer
它是一个容器。
(1)长度是可变化的。
(2)可以直接操作多个数据类型。
(3)打印时可以通过它的对象调用toString()变成字符串。或者直接打印对象。结果是字符串。
该类中的方法:
(1)存储
StringBuffer append();
(2)删除
StringBuffer delete(star,end);
StirngBuffer deleteCharAt(index);
(3)获取
char charAt(int index);
int indexOf(Stirng str);
int lastIndexOf(Strig str);
int length();
String subStirng(int start,int end);
(4)修改
StringBuffer replace(start,end,String);
Void setCharAt(int index,char ch);
(5)反转
StringBuffer reverse();
(6)将容器中指定的数据存到指定数组中
Void getChars(int srcBegin ,int srcEnd,char[] chs,int chsBegin);
3、StringBuilder
约等于StringBuffer。
StringBuilder:线程不同步。Jdk1.5版本开始
StringBuffer:线程同步。
2015-12-05至2015-12-07著