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

为什么80%的码农都做不了架构师?>>>   hot3.png

一、字符串

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

String str = “abc”:

String str1 = new String(“abc”);

推荐使用第一种方式,因为第一种方式只创建了一个对象。

虚拟机首先创建一个Sting对象的引用,然后到堆区查找,有没有String对象”abc”,如果有就将这个String对象的引用指向”abc”

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

一些特殊的字符:

回车 '\r'

换行 '\n'

Tab '\t'

换页 '\f'

退格 '\b'

二、== 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,他们的值是相等的

三、单职责原则

面向对象的一个基本的设计原则:一个类只做好一件事情,由于只做一件事情,所以改变类的动机只有一个。

同理,一个方法最好也只做一件事情,如果您的有个方法超过了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);

}

四、系统属性

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

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

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

System.getProperty("line.separatpr");

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

五、访问修饰符

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

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

如果显示的注明修饰符,java会默认修饰符为friendly(package),表示同一个包的类可以访问

同一个类

同一个包

同一个包的子类

不同包的子类

不同包的类

public

可以

可以

可以

可以

可以

protected

可以

可以

可以

可以

不可以

friendly

可以

可以

可以

不可以

不可以

private

可以

不可以

不可以

不可以

不可以

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

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

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

六、ANT

转载于:https://my.oschina.net/play/blog/4480

你可能感兴趣的:([敏捷JAVA读书笔记-java基础部分] 第三章)