(effective java) 避免重复创建对象——创建String

JVM真可谓强大,在不经意间为我们做了很多事情,如果不仔细琢磨,很难发现。请看如下代码:

import junit.framework.TestCase;

public class TestEverything extends TestCase {

public void testString(){

String s1 = new String("string");
String s2 = new String("string");
assertFalse(s1 == s2);

String s3 = "unique";
String s4 = "unique";
assertTrue(s3== s4);
}

}

我写的大部分代码是junit的测试代码,好处是一目了然(assertTrue,assertEquals一眼就能看懂),简洁(不用写main(){})。

首先说一下String的两种创建方式:
String s = new String("silly");
该语句执行时,除了实参本身的String实例外,又创建了一个新的String实例。
String s = "No longer silly";
并不是在每次执行时都创建一个新的实例。

equals与==的区别我就不说了,这里我想比较的是两个字符串的地址,即两个引用指向的是同一对象还是不同的对象。

这样这段代码就说明了这样一件事:对于所有在同一个虚拟机中运行的代码,只要他们包含相同的字符串字面常量,则该对象就会被重用。
### 关于湖南大学面向对象程序设计课程中的Java教程 针对湖南大学(HNU)开设的面向对象程序设计课程,该课程通常会涵盖Java作为主要的教学语言之一。这类课程一般旨在教授学生理解并掌握面向对象的概念及其在实际编程中的应用。 #### 课程目标与内容概述 此类课程的目标在于使学习者熟悉面向对象的设计原则以及如何利用这些原则创建结构良好、易于维护的应用程序。具体到Java方面,课程可能会覆盖类和对象的基础概念、继承机制、多态特性等内容[^1]。此外,还会介绍一些高级主题如泛型、集合框架等,这些都是现代Java开发可或缺的部分。 #### 实践环节的重要性 为了帮助学员更好地理解和运用所学理论知识,在实践中巩固技能是非常重要的。因此,这门课往往伴随着大量的实验练习,比如通过Maven导入项目并连接本地数据库的操作可以加深对于软件工程流程的理解。同时也会涉及到使用诸如JSF这样的框架来进行Web应用程序的构建工作,让学生体验完整的前后端交互过程[^2]。 #### 推荐的学习资源 - **官方文档**:Oracle官方网站提供的《The Java Tutorials》是一份非常详尽且权威性的参考资料。 - **在线平台**:Coursera, edX等平台上由知名高校发布的相关MOOCs也是错的选择。 - **书籍推荐**:《Effective Java》这本书籍深入浅出地讲解了很多关于编写高质量Java代码的最佳实践方法论。 ```java // 示例代码展示简单的面向对象特征——定义一个Student类 public class Student { private String name; public Student(String name){ this.name = name; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值