1.对象的可变与不可变html
String类中使用字符数组来保存数据,由于有“final”修饰符,因此string对象是不可变的。以下:java
private final char value[];git
StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存数据,这两种对象都是可变的。以下:正则表达式
char[] value;数组
2.是不是线程安全安全
String中的对象是不可变的,也就能够理解为常量,因此是线程安全。数据结构
AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操做,如expandCapacity、append、insert、indexOf等公共方法。多线程
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,因此是线程安全的。app
3.StringBuilder与StringBuffer共同点框架
StringBuilder与StringBuffer有公共的抽象父类AbstractStringBuilder。
抽象类与接口的一个区别是:抽象类中能够定义一些子类的公共方法,子类只须要增长新的功能,不须要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。
StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
若是程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
在编译的时候出现了这个错误提示;
解答:检查了代码没有任何问题出现,参考以前发生过的错误,我首先分析了缘由,这应该是须要多个文件共同编译致使的。随后我查阅资料并询问同窗,找到了一种办法,就是将相关的文件加以相同的前缀,而后统一编译、运行。就好比E9_1 E9_2 E9_3,而后用命令javac E9*.java来进行编译运行。虽然使得类名没意义,可是能解决问题。能够在此基础上再寻求更好的解决方案。
错题1:
父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override.
A.true
B.false
解析:子类重写的方法,方法名字、参数个数、参数类型和父类的方法彻底相同。这里是重载.
错题2:
下列关于abstract关键字的说法,正确的是
A.可使用static修饰abstract方法。
B.非abstract类中不能够有abstract方法。
C.不能使用new建立abstract类的对象。
D.不容许使用final和abstract同时修饰一个方法.
E.可使用public abstract void eat(){};来声明抽象方法eat()。
F.抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
解析:5.9节。A项:abstract关键字不能应用于static、private或final 方法。E项:不能有方法体。
这周的内容比前两周明显多了很多,并且是过去没有接触过的新知识和新概念,理解起来须要必定的时间,编写代码也要一步一步地努力提升。我对这些新知识如今还掌握得不够熟练,但愿多花时间敲代码后可以熟练应用。我以为课前预习是很是有必要的,若是不及时掌握那么会被落下不少不少,跟着大部队一块儿前进才是最好的,结对学习也初次体验了乐趣,相信之后会愈来愈好!