P173
类成员不能访问实例成员??
什么是单例类?单例类的作用?
P175
final修饰符有什么作用?
当执行静态初始化块时可以对类变量赋初始值??为什么?当执行普通初始化块、构造器时可以对实例变量赋初始值??类变量是指类里面定义的变量吗?
对于final修饰的成员变量而言,一旦有了初始值,就不能被重新赋值,为什么需要这样?比如在什么情形下需要这样?
实例变量不能在静态初始化块中指定初始值,因为静态初始化块时静态成员,不可访问实例变量--非静态成员??
类变量不能再普通初始化块中指定初始值,因为类变量在类初始化阶段已经被初始化了,普通初始化块不能对其重新赋值?为什么不能对其重新赋值?
P179
如何理解常量池??
private ,final修饰过程中,谁在前谁在后?有影响吗?
P181
那么Double和String类肯定需要提供实例变量来保存这两个参数,但程序无法修改这两个实例变量的值,实例变量是什么??此处不是Double d = new Double(2.0),d不是实例变量吗?为何程序无法修改这两个实例变量的值??因此Double类和String类没有提供修改它们的方法?为什么没有提供?为何不能修改?
使用private和final修饰符来修饰该类的成员变量??为何需要这样?
hashcode()是什么?计算之后有什么用?
对于final修饰的成员变量,如果在构造函数里面进行了初始化,在重载的构造函数里面再次进行初始化不会出错?
不可变类是?创建该类的实例后,该实例的实例变量时不可改变??怎么理解?不可变类有什么作用?
P183
this.name = new Name(name.getFirstName(), name getLastName());??
缓存实例的不可变类有什么用?
P186
抽象类是什么?有什么作用?
就算在父类中定义了一个抽象类,在父类中没有具体实现,感觉也没什么用的嘛?
抽象类不能被实例化那还有什么作用?
含有抽象方法的类(包括直接定义了一个抽象方法;或继承了一个抽象父类,但没有完全实现父类包含的抽象方法;或实现了一个接口,但没有完全实现接口包含的抽象方法的三种情况)后两种如何理解?
抽象方法与空方法有什么区别?
P188
程序可以直接调用s1变量和s2变量的callPerimeter()方法和getType()方法,无须强制类型转换为其子类类型,感觉定义的时候父类就已经赋了子类的值??
final修饰的类为何不能被继承?
P190
interface接口有什么作用?为何可以由抽象提升出接口?
P191
为什么接口里的成员变量只能是静态变量?
系统为很么会自动回成员变量添加static 和final两个修饰符?
P193
接口不能用于创建实例,但接口可以用于声明引用类型变量,当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象?如何理解?
多继承会导致什么问题?
implements Output出错?
P195
接口里不能定义静态方法?说的是接口里的方法只能是抽象、类方法或默认方法,类方法不就是静态方法吗??
P196
面向接口和面向对象之间的区别?面向接口是指?
简单工厂模式??看的晕乎乎的...完全看不懂
需要组合一个输出设备,需要组合是什么意思?如果有一天需要重构,需要使用betterprinter来代替printer,需要打开computer类源代码进行修改,如果多个类组合了printer意味着多个类需要修改printer。。。
为了避免这个问题,工厂模式建议让computer类组合一个Output类型的对象,组合Output类型的对象有什么用?将Computer与Printer类完全分离,如何进行分离,Printer方法不是还在Computer里面吗?Computer对象实际组合的是Printer对象还是BetterPrinter对象,对Computer而言完全透明,如何实现对computer完全透明??透明怎么理解?当Printer对象切换到BetterPrinter对象时,系统完全不受影响,为何系统会不受影响??
public class Computer
{
private Output out;
public Computer(Output out)
{
this.out = out;
}
public void keyIn(String msg)
{
out.getDate(msg);
}
public void print()
{
out.out();
}
}
上面的Computer类已经完全与Printer类分离。。。为什么Computer与Printer类完全分离了?感觉Printer方法不是还在Computer里面吗?Computer不再负责创建Output对象,系统提供一个Output工厂负责生成Output对象,Computer类里不是已经生成了Output对象吗??为什么需要提供一个Output工厂负责生成Output对象??
工厂模式的原理是什么??
P197
某个方法需要完成某一个行为,但这个行为的具体实现无法确定,必须等到执行该方法时才能确定。。那该怎么办呢
假设有个方法需要遍历某个数组的数组元素,但无法确定在遍历数组元素时如何处理这些元素。。需要在调用该方法时指定具体的处理行为,那怎么确定处理呢?好神奇的感觉
这个方法不仅需要普通数据可以变化,甚至还有方法执行体也需要变化,,方法执行体还可以发生变化??将“处理行为”作为一个参数传入该方法,如何将处理行为传入方法,处理行为是?怎么理解处理行为?
自己写的MyCommandTest与书上的命令模式有什么区别??
P199
内部类是什么?内部类有什么作用?是说在类的内部还有类?
外部类不可以使用private,protected,static修饰符吗??突然想起类可以用什么修饰??
P202
感觉程序命名一般变量名也是首个单词小写,后面单词首字母大写,,然而在函数起名的时候也是同样的,怎么区分变量名跟函数名呢?
外部类不允许访问非静态内部类的实例成员还有一个原因,上面程序中main方法中的1号粗体字代码创建了一个外部类对象,并调用外部类对象的accessInnerProp方法,此时非静态内部类对象根本不存在,如果允许accessInnerProp方法访问非静态内部类对象,将肯定引起错误,那不是在调用的时候不能访问内部类的成员??然而程序运行是可以的,为什么?
P203
如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象,什么叫着属于外部类的某个对象??
P204
外部类的上一级程序单元是包,所以不可使用static修饰,,为什么??
内部类寄生在外部类的实例或外部类的类本身有什么区别??
此处直接跳过局部内部类,匿名内部类什么的。。
P234
abstract与static不能同时修饰方法?为什么?
--------------------------------------第七章-----------------------------------
P240
集合框架??什么框架?
String,StringBuffer,StringBuilder如何处理字符串??
正则表达式是一个强大的文本处理工具,处理使用正则表达式?通过正则表达式可以对文本内容进行查找、替换、分割等操作,分割是什么??
java使用Locale对象封装一个国家、语言环境,怎么说使用对象封装??感觉应该是类才封装吧?
如何获得用户的键盘输入?
P241
Scanner类是什么??有什么作用?
Scanner类提供了一个基于正则表达式的文本扫描器,可以从文件、输入流、字符串中解析出基本类型值和字符串值,,输入流与字符串的区别?字符串不是属于输入流吗?感觉文件也是属于输入流?
P243
为什么程序涉及文件输入,可能引发文件IO相关异常,故主程序声明throws Exception而其他地方则不用声明throws Exception??throws Exception有什么作用??
程序为什么不能创建system类的对象?System有什么作用?
如何使用System来访问操作系统的环境变量和系统属性??
P244
System类还提供一个identityHashCode(Object x)方法,该方法返回指定对象的精准hashCode值,也就是根据该对象的地址计算得到hashcode值,到底hashcode值有什么用?如何根据对象的地址计算hashCode?
当某个类的hashCode()方法被重写后,该类实例的hashcode方法就不能唯一地标识该对象??为何??
P245
应用程序不能创建自己的Runtime实例,,什么意思??不是可以在类里定义Runtime rt = Runtime.getRuntime();这个不是定义实例吗?
unreported exception IOException; must be caught or declared to be thrown。。为什么很多时候都会出这种错,什么时候该throws Exception呢??
P246
toString与valueOf的区别??感觉都是把其他类型转换为string类型??
Object提供protected修饰的clone方法,该方法用于帮助其他对象来实现“自我克隆”,所谓的“自我克隆”就是得到一个当前对象的副本,而且两者之间完全隔离,克隆有什么作用??得到一个当前对象的副本有什么用??
P247
clone()方法只是一种“浅克隆”它只是克隆该对象的所有成员变量值,不会对引用类型的成员变量值所引用的对象进行克隆??怎么理解??
String(byte[] bytes, Charset charset)使用指定的字符集将指定的byte[]数组解码成一个新的String。。怎么理解解码?
P251
String类是不可变的,String的实例一旦生成就不会再改变了,怎么理解?String str1 = "hello"; str1 = str1 + "java";str1不是改变了吗??那个实例是指什么??
P263
跳过时间、随机数的类。。直接到正则表达式,正则表达式是什么??
boolean matchs(String regex) 判断该字符串是否匹配指定的正则表达式??怎么理解??
$匹配一行的结尾,怎么理解??^匹配一行的开头又是怎么理解??
完全理解不起正则表达式
------------------------------------------------------------------------------------------