- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、纲要 1
2、内容 1
2.1、计算机语言发展简史 1
2.2、Java发展简史 1
2.3、Java语言特性 2
2.4、Java的加载与执行 2
2.5、开始第一个Java程序 3
2.5.1、J2SE 的安装 3
2.5.2、搭建开发环境 3
2.6、public class 和 class的区别 5
纲要
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”
//s1 = 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 = ;
f
文档评论(0)