20165203 第6周《Java程序设计》学习

教材学习内容总结

第八章

  • String
  1. 分清常量池和变量池。

  2. String类的常用方法

    public int length()  
    public boolean eauals(String s)  
    public boolean startsWith(String s)
    public boolean endsWith(String s)  
    public int compareTo(String s)  
    public boolean contains(String s)
    public int indexOf(String s)  
    public int lastIndexOf(String s)  
    public String substrings(int startpoint)  
    public String trim()  
    
  • StringTokenizer
  • Scanner
  • StringBuffer
  • Date
  • Calender
  • 日期的格式化(重点是format方法)
  • Math
  • BigInteger
  • Random
  • 数字格式化
  • Class
  • Console
  • Pattern
  • Matcher

第十五章

  • 泛型
  • 链表(重点是++排序方法与查找方法++)
  • 堆栈
  • 散列映射
  • 树集
  • 树映射
  • 自动装箱与拆箱

教材学习中的问题和解决过程

Q1:在看到如图所示情况时,我出现了疑问,为什么前面的hellotestOne的引用相等,而后面hellotestTwo的引用值不相等呢?

A1:在回顾之前内容时,我明白了:
在之前String testOne = "你"+"好"中是两个常量的运算,其结果仍然在常量池中,而后面String testTwo = you+hi是变量之间的运算,结果在动态区中,testTwo被重新赋予一个引用。

Q2:在看到课本对代码1的解析时,有一个名词++常量优化技术++,不知道是什么意思,为此我上百度查了一下:

A2:常量优化是编译时的一项优化技术;顾名思义,将代码中的常量计算在编译时完成,从而节约运行时的计算量;
一般涉及一下几方面:

  1. 常量替换: 将代码中声明的const类型变量引用到的地方直接替换为常量值;

  2. 数学恒等式的模式匹配替换,主要是数字和Bool运算:如对任意整型数X,X-X是0,X-0是X,(X*2)-X是X等; 在编译时将这些计算出,并替换引用的地方;

  3. 常量折叠:顾名思义是对expression中的常量计算进行折叠,去掉冗余的运算;比如bool运算true||(a||b&&c) 这个运算直接就折叠为true;

4.通过认识这个编译时优化技术。我们可以更好的利用常量,写出更漂亮更快的代码了。
-- [常量优化]

Q3:在学习到如图所示时,不太了解Arrays

A3: 在java.util中,Arrays可以调用各种对数组的操作。

代码调试中的问题和解决过程

Q1:在编译代码时,出现了如图所示情况。

A1:自己一开始以为是找不到java.util包,于是上网查了一下,可能是变量classpath出现了问题,结果发现自己设置的没有问题,后来才发现是自己误将util敲成until

自己将这个错误写到博客为了提醒自己,如果出现找不到java.util包的情况,要从最基本的classpath变量的设置解决。

Q2:在编译代码时,出现了如图所示情况。

A2:一开始,自己找不出问题出现在哪里,到了后来,自己发现,是误将a[j].compareTo(a[i])<0敲成了a[j].compareTo(a[i]>0)

所以,一定要了解,比较的是compareTo方法的返回值。

代码托管

上周考试错题总结

Q1:下列关于Override的说法,正确的是

A.子类所声明的成员变量的名字和从父类继承来的成员变量名字相同但类型不同时,子类会隐藏所继承的成员变量。

B.除了继承的方法之外,子类新定义的方法可以操作子类继承的成员变量。
C.子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。
D.重写方法可以操作被子类隐藏的成员变量和方法。

答案:ABC
解析:子类隐藏的变量是指子类所生命的成员变量的名字和从父类继承的成员变量的名字相同。而++重写的方法无法操作被子类隐藏的成员变量和方法++。
本题漏选A,经过查课本,发现子类隐藏的所继承的成员变量的确是所声明的成员变量的名字和从父类继承来的成员变量的名字相同,++声明的类型可以不同++。

Q2:某方法在父类的访问权限是public,则子类重写时级别可以是protected。

A.true
B.false

答案:B
解析:该题选错,子类重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限。

Q3:下列代码中标注的(A,B,C,D)中,哪一个是错误的?

abstract class Takecare {
protected void speakHello() {}     //A
public abstract static void cry();    //B
static int f()
{ return 0 ;}          //C
abstract float g();                //D
}  

A.A
B.B
C.C
D.D

答案:B
解析:此题本不该出错,出错的原因还是练习的次数太少,abstract应该写在类型的前面。

其他(感悟、思考等,可选)

随着学习任务的增多,原来在学习新知识时,旧知识的漏洞也就会显现出来,一开始,我们可能会慌,其实,这并不可怕,发现知识的漏洞是好事,我们只要返回认真把知识的漏洞填补好就可以了。不要在同样的地方摔倒第二次,这就是我对于最近的学习想法。

学习进度条

~ 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第六周 3093/1500 1/2 46/90

参考资料

posted @ 2018-04-08 19:38  I~Justice  阅读(323)  评论(0编辑  收藏  举报