- 3
- 0
- 约8.64千字
- 约 17页
- 2017-06-19 发布于湖北
- 举报
纲要
String
StringBuffer
基础类型对应的8个包装类
日期相关类
数字相关类
Random
Enum
内容
2.1、String
2.1.1、String类是不可变类,也就是说String对象声明后,将不可修改
public class StringTest01 {
public static void main(String[] args) {
String s1 = a;
String s2 = b;
s1=s1 + s2; //ab
//new String(“a”);
System.out.println(s1);
}
}
从以上内存图,大家可以看到,String对象赋值后不能再修改,这就是不可变对象,如果对字符串修改,那么将会创建新的对象
注意:只要采用双引号赋值字符串,那么在编译期将会放到方法区中的字符串的常量池里,如果是运行时对字符串相加或相减会放到堆中(放之前会先验证方法区中是否含有相同的字符串常量,如果存在,把地址返回,如果不存在,先将字符串常量放到池中,然后再返回该对象的地址)
2.1.2、String s1 = “abc”和 String s2 = new String(“abc”)
public class StringTest02 {
public static void main(String[] args) {
String s1 = abc;
String s2 = abc;
String s3 = new String(abc);
System.out.println(s1==s2, + (s1==s2));
System.out.println(s2==s3, + (s2==s3));
System.out.println(s2 equlas s3, + (s2.equals(s3)));
}
}
如果是采用双引号引起来的字符串常量,首先会到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的数据是在编译期赋值的,也就是生成class文件时就把它放到常量池里了,所以s1和s2都指向常量池中的同一个字符串“abc”
关于s3,s3采用的是new的方式,在new的时候存在双引号,所以他会到常量区中查找“abc”,而常量区中存在“abc”,所以常量区中将不再放置字符串,而new关键子会在堆中分配内存,所以在堆中会创建一个对象abc,s3会指向abc
如果比较s2和s3的值必须采用equals,String已经对eqauls方法进行了覆盖
2.1.3、String面试题分析
String s1 = new String(hello) ;
String s2 = new String(hello) ; 以上代码创建了几个对象?
通过以上分析,大家会看到创建了5个对象,堆区中2个,常量池中1一个,栈区2个
通过以上分析,使用String时,不建议使用new关键字,因为使用new会创建两个对象
记住:堆区中是运行期分配的,常量池中是编译器分配的
2.1.4、String常用方法简介
endsWith:判断字符串是否以指定的后缀结束
startsWith,判断字符串是否以指定的前缀开始
equals,字符串相等比较,不忽略大小写
equalsIgnoreCase,字符串相等比较,忽略大小写
indexOf,取得指定字符在字符串的位置
lastIndexOf,返回最后一次字符串出现的位置
length,取得字符串的长度
replaceAll,替换字符串中指定的内容
split,根据指定的表达式拆分字符串
substring,截子串
trim,去前尾空格
valueOf,将其他类型转换成字符串
2.1.5、使用String时的注意事项
因为String是不可变对象,如果多个字符串进行拼接,将会形成多个对象,这样可能会造成内存溢出,会给垃圾回收带来工作量,如下面的应用最好不要用String
【代码示例】
public class StringTest04 {
public static void main(String[] args) {
String s = ;
for (int i=0; i100; i++) {
//以下语句会生成大量的对象
//因为String是不可变对象
//存在大量的对象相加或相减一般不建议使用String
//建议使用StringBuffer或StringBuilder
s+=i;// s = s+i;
}
}
} 2.1.5、正则表达式初步
正则表达式,主要可以用来做字符串处理
您可能关注的文档
最近下载
- 机动车驾驶人科目一考试题库英文版共1500道题Chinese Driving Theory Test Question Bank.pdf VIP
- 高考语文阅读理解《心灵的绝唱:红楼梦论痕》《红楼梦美学意蕴结构分析》含答案解析.docx VIP
- 2025年宁夏中考试卷2025真题及答案.doc VIP
- QSH0045-2007_钻井液用超细碳酸钙技术要求.pdf VIP
- 2026年1月浙江省高考选考化学模拟试卷试题(含答案详解).pdf VIP
- 2026年1月浙江省高考选考物理模拟试卷试题(含答案详解).pdf VIP
- 2025年常州工业职业技术学院单招(语文)测试试卷大全.docx VIP
- 2025年1月浙江省高考选考生物试卷真题(含答案详解).docx VIP
- 2026年1月浙江省高考首考英语试卷真题完整版(含答案详解).pdf VIP
- 酒店营销年度工作计划,酒店营销全年工作计划.doc VIP
原创力文档

文档评论(0)