一、字符串:不可变对象;一旦赋值,其内容是不可改变的;
//重新赋值,等于创建新的对象;
二、创建方法:
(1)String s=new String();
(2)String s1=new String("abc");
(3)String s2="abc"; //s为String类型的变量;"abc"是一个对象;
注释:
1)s="kk"; //s指向的对象变为"kk","abc"对象还在,没有改变;
2)s1==s2;//false,因为s1和s2为值指向不同的对象;
s1.equals(s2);//ture;String类复写了Object中的equals方法;定义了用于判断字符串是否相同的方法;
3)s1和s2的不同:s1在内存中有个2对象,s2只有1个;
//一个在堆内存,一个在方法区;
4)String s3="abc";String s4="abc";s3==s4;true //s3和s4指向同一对象,不会重新开辟内存空间;
5)String s5 =new String("abc");s3==s5;false;//s5的地址为堆内存中的,s3的在方法区;所有false;
三、常见操作:
1.获取:
(1)int length():获取长度;//数组的.length没有小括号,此处为方法;
(2)char charAt(int index):获取索引位置的字符;从0开始索引;
(3)获取字符第一次在字符串中出现的位置:
1)int indexOf(String str);//不存在返回-1;
2)int indexOf(String str,int fromIndex);//从formIndex位置开始查;
3)lastIndexOf();//反向;
2.判断:
(1)boolean contains(str);判断是否包含str;
(2)boolean isEmpty():判读长度是否为0;1.6版本新加入;//不能判断是否为null;
//判断长度0的三种方法:(1)str.isEmpty();(2)str.length()==0;(3)“”.equals(str);
//常用的为第三种,不会报空指针异常;
(3)boolean startsWith(str):判断是否str开头;
(4)boolean endsWith(str):判断是否str结尾;
(5)boolean equals(str);判断字符串内容是否相同;复写了Object中的equals方法;
(6)boolean equalsIgnoreCase(str);判断字符串是否相同,忽略大小写;
3.转换:
(1)将字符数组转成字符串:
1)构造函数: String(char[]);
String(char[],offset,count);//从offset个开始,选中count个;
2)静态方法:startic String copyValueOf(char[]);
startic String copyValueOf(char[],offset,count);
static String valueOf(char[]);
char[]c={‘1‘,‘2‘,‘3‘,‘4‘,‘5‘};
String str=String.valueOf(c,1,3);
System.out.println(str);
(2)将字符串转为数组:char[] toCharArray();
(3)将字节数组转成字符串构造:
String(byte[]);
String(byte[],offset,count);//从offset个开始,选中count个;
(4)将基本数据类型转换成字符串:
static String valueOf(int);
static String valueOf(double);
4.替换:String replace(oldStr,newStr);//replace创建了新的字符串;对老的字符串本身没有影响,用新的字符串接收;
5.切割:String[] split("str");用str把字符串切割成字符串类型数组;
6.子串:获取字符串中的一部分;
String substring(begin);//从指定位置到结尾;索引从0开始;
String substring(begin,end);//从开头索引到结尾索引;包括开头,不包括结尾;
7.转换,去除空格,比较:
(1)将字符串转成大写或小写:
String toUpperCase();//大写;
String toLowerCase();//小写;
(2)将字符串两端的空格去掉:String trim();
(3)将两个字符串进行自然顺序比较:int str1.compareTo(str2);//str1的ascii码值减去str2的码值;
原文地址:https://www.cnblogs.com/Tractors/p/11235112.html