[敏捷JAVA读书笔记-java基础部分] 第三章

1、字符串

Java中字符串是对象。字符串是不可更改的。java

String str = “abc”:编程

String str1 = new String(“abc”);windows

推荐使用第一种方式,由于第一种方式只建立了一个对象。安全

虚拟机首先建立一个Sting对象的引用,而后到堆区查找,有没有String对象”abc”,若是有就将这个String对象的引用指向”abc”session

第二种方式一共建立了两个对象:虚拟机首先建立一个”abc”String对象,而后再建立一个String对象,将第一个对象做为参数传递给第二个对象。app

一些特殊的字符:ui

回车 '\r' spa

换行 '\n' 设计

Tab '\t' unix

换页 '\f'

退格 '\b'

2、== equals

== 是比较对象的引用(地址)是否相等,equals是比较对象的值是否相等。

String str = "abc";

String str2 = "abc";

String str1 = new String("abc");

System.out.println(str==str1);//false 由于引用的不是同一个对象

System.out.println(str==str2);//true 引用同一个对象

System.out.println(str.equals(str1));//true,他们的值是相等的

3、单职责原则

面向对象的一个基本的设计原则:一个类只作好一件事情,因为只作一件事情,因此改变类的动机只有一个。

同理,一个方法最好也只作一件事情,若是您的有个方法超过了10行,就应该对其进行重构了,将其分红更小的方法,方便理解和维护。

敏捷java中一个例子:

一个生成报表的类,重构前:

String getReport() {

StringBuilder buffer = new StringBuilder();

buffer.append(ROSTER_REPORT_HEADER);

for (Student student: session.getAllStudents()) {

buffer.append(student.getName());

buffer.append(NEWLINE);

}

buffer.append(

ROSTER_REPORT_FOOTER + session.getAllStudents().size() + NEWLINE);

return buffer.toString();

}

这个repot的方法很短,可是从概念上讲,该方法作了三件事情,为了方便理解,应该将他拆分红三个更小的方法重构后:

String getReport() {

StringBuilder buffer = new StringBuilder();

writeHeader(buffer);

writeBody(buffer);

writeFooter(buffer);

return buffer.toString();

}

void writeHeader(StringBuilder buffer) {

buffer.append(ROSTER_REPORT_HEADER);

}

void writeBody(StringBuilder buffer) {

for (Student student: session.getAllStudents()) {

buffer.append(student.getName());

buffer.append(NEWLINE);

}

}

void writeFooter(StringBuilder buffer) {

buffer.append(

ROSTER_REPORT_FOOTER + session.getAllStudents().size() + NEWLINE);

}

4、系统属性

Java虚拟机启动的时候设置好了许多系统属性,多数属性返回与虚拟机以及当前执行系统相关的信息,因此使用系统属性是消除系统之间差别的好方法;

好比,windows下面回车换行是’\r\n’unix下面是’\n’,

使用系统属性便可这样表示:

System.getProperty("line.separatpr");

这样就消除了系统之间的某些差别,更多的属性见jdk帮助文档。

5、访问修饰符

前面咱们接触了publicprivatepublic的范围最大,public修饰的属性和方法能够被不一样包的对象调用,private的范围最小,只能对象内部有效,public表示公共财产,private表示私有财产。

还有一个修饰符protected,表示受保护的,他的范围比public小一些,同一个包中的对象能够调用他修饰的属性和方法,对象的子类也能够调用(即使子类不在同一个包中)。

若是显示的注明修饰符,java会默认修饰符为friendly(package),表示同一个包的类能够访问

同一个类

同一个包

同一个包的子类

不一样包的子类

不一样包的类

public

能够

能够

能够

能够

能够

protected

能够

能够

能够

能够

不能够

friendly

能够

能够

能够

不能够

不能够

private

能够

不能够

不能够

不能够

不能够

为了安全的编程:推荐的使用顺序,首先是最受限的访问,而后须要是打开相应的访问权限,暴露太多的类给用户,会致使客户对系统集成的细节产生没必要要的依赖。

原则:尽量的保护代码,只有在必要的时候,放开访问权限。

在uml中public用+号表示,private用-号表示,protected用#表示,package用~表示

6、ANT

相关文章
相关标签/搜索