1.String实例化
String本身是一个类,有两种实例化方法.
-
String str1 = “hello”;
-
String str2 = new String(“hello”);
1.1 string的比较:
str1 == str2 ; //这个实际比较的是两个string的内存地址的值.
str1.equals(str2); //这个比较的两个字符串的内容是否相同.
注 :一个字符串实际上就是一个 String的匿名对象 .
1.2两种实例化的区别:
-
String str = “hello”;
这种方式实例化的好处是之后在声明字符串的时候发现内容一样,则不会重新开辟空间,而是从内存池中取出数据继续使用。
-
String str2 = new String(“hello”);
这句程序会在堆内存中开辟一块内容为abc的匿名空间,然后再new一块空间,赋值abc,并有str指向这里,这时候匿名空间由于没有栈指向成为垃圾,然后被回收。
可以发现,程序开辟了两个空间,与前一个相比慢多了。所以在开发中绝对不能使用关键字new实例化String类。而且,如果直接使用赋值的方式也可以减少堆内存的开销。
注:代码 str += “world”;这个代码执行实际上是将str的指向从”hello”断开,重新指向”hello world”,在代码中要尽量避免这种指向的频繁重新指向.
2.String的常用操作方法
2.1字符与字符串
一个字符串就是表示一组字符
-
public char charAt(int index) //找出指定位置的字符
-
public char[] toCharArray() //将字符串变为字符数组
-
public String(char[] value,int offset,int count) //将字符数组变为字符串,offset和count不写表示全部转换.
举例:
String str = “hello”; char c = str.charAt(1);
String str = “hello”; char c[] = str.toCharArray();
String str1 = new String(c); String str1 = new String(c,0,3);
2.2字节与字符串
public byte[] getBytes() //String到字节数组
public String(byte[] bytes,int offset,int length) //字节数组到String,offset和length不写则全转.
举例:
String str = “hello”; byte b[] = str.getBytes();
String str1 = new String(b); String str1 = new String(b,0,3);
2.3String的操作方法
判断String的开头和结尾
public boolean startsWith(String prefix) //是否以 prefix开头
public boolean endsWith(String suffix) //是否以suffix结尾
替换操作:
public String replaceAll(String regex,String replacement)
例如:
String str = “hello”; String str2 = str1.replaceAll(“o”,“e”);
截取操作
:
public String substring(int beginIndex,int endIndex) //没有endIndex表示从beginIndex全部截取.
例如:
String str = “hello”; String str2 = str1.substring (1,3);
拆分操作
:
public String[] split(String regex)
例如:
String str = “hello”; String str2[] = str1. Split (“ ”); //按空格拆分
查找操作
:
public int indexOf(String str,int fromIndex) //从 fromIndex开始,有则返回位置,无返回-1,fromIndex可以去掉,表示查找全部.
public boolean contains(String s)
其他操作:
去掉左右空格:public String trim()
取得字符串长度: public int length()
转大写: public String toUpperCase()
转小写: public String toLowerCase()
JAVA学习笔记系列
--------------------------------------------
联系方式
--------------------------------------------
Weibo: ARESXIONG
E-Mail: aresxdy@gmail.com
------------------------------------------------