20172310 2017-2018-2 《程序设计与数据结构》第四周学习总结
20172310 2017-2018-2 《程序設計與數據結構》第四周學習總結
教材學習內容總結
第四章
- 類結構、實例數據、形式參數、實際參數這些概念實在是很容易混淆,一開始我都完全不知道程序中的各個數據到底是什么意思,不過后來同過自我學習和老師的講解逐漸明白了這些概念的區別,實際參數是調用一個方法時,在方法名后的圓括號中一一對應所輸入的數據,形式參數則是方法申明首部中給出的參數列表,實例數據則是在創造類時賦給它的屬性,可以是變量或是常量。
- 學習了修飾符,知道了之前在編寫方法時為何要加public private等。
- 還學習了訪問器方法、修改器方法和Tostring,return這些基礎的知識。
第七章
- 第七章主要是在掌握了第四章的基礎之后,進一步的學習如何來真正設計一個對自己有價值的,及面向對象的軟件。
- 學習了靜態方法、靜態變量這兩個靜態類的成員。
- 問題描述中的名詞可能指明了程序中需要的一些類和又對象。
- 靜態變量由類的所有實例共享。
- 一個聚合對象由其他的對象組成,形成一種“有”關系。
- 接口是抽象方法的集合,因而不能被實例化。
- 枚舉類型的值是具有該枚舉類型的靜態變量,在枚舉類型的類定義中可以增加屬性和方法。
- 多個重載方法可以由方法的參數個數、類型及參數順序來區分。
- 程序測試決不能保證程序已沒有錯誤存在,成功的測試就是能夠發現錯誤的測試。
教材學習中的問題和解決過程
- 問題1:課本4.4.2中,我對形式參數和實際參數理解不了(博客開頭就提到當時真的不太懂)以至于在實驗時出現了null的空引用。
- 問題1解決方案:
形式參數是函數定義中的,系統沒有為其分配內存空間,但是在定義里面可以使用的參數。例如:fun(int a)。這里a就是形式參數。
實際參數是函數調用的時候傳給函數的變量。這個是系統實實在在分配了內存空間的變量。
簡單點說,就是形式參數給個形式,實際參數放進去用。例如:fun(a);
函數聲明的用處是告訴編譯器聲明的函數在后面有定義。如果你將函數定義放在調用的前面,就不需要聲明。另外聲明就是函數定義后面加上分號的形式。
例如:定義是fun(int a)。聲明就是fun(int a);
對于實驗的解決方法就是
在學習第七章找到了這種問題的解決方法:在上述構造方法中,this引用特指對象的實例變量,賦值語句右邊的變量是構造方法的形參變量。
這種方法避免了對含義相同的變量要給出不同命名以示區別的問題。有時,這種情況發生在其他的方法中,但更經常出現在構造方法中。
- 問題2:toString后要返回多個值怎么辦
- 問題2解決方案:在做實驗時,我定義了三個實例數據,而最后我想要返回值。按照老師的演示,我最后需要用toString方法,但在return時卻一直報錯,于是我就使用了多個toString方法,發現還是有錯誤,最后才發現可以用“+”來拼接╥﹏╥
代碼調試中的問題和解決過程
- 問題1:
在IDEA中想要上傳文件到碼云,卻遇到了這個問題
問題1解決方案:其實自己還是不會使用IDEA來push和pull項目,有時成功有時又失敗,(╥╯^╰╥)。
- 問題2:課本P214頁:PigLatinTranslator類沒有構造方法,因為這個方法中不需要構造方法,對于這個問題其實在周一的測試中也有遇到,所以比較不理解什么時候是不需要構造方法的。
問題2解決方案:課本有說過,每個類都有一個不帶參數的的默認構造方法。但是必須要實例化這個類(當然這不是唯一產生對象的途徑,比如單例模式,但本質上說所有途徑都是一樣的)的時候,那么就要用到自己寫的構造函數,即告訴程序我現在要實例化一個對象了,你給我馬上分配內存,將內存的首地址賦給我指定的類對象。
- 問題3:
在Linux中運行RationalTester程序時,一直都沒有任何顯示。 問題3的解決方案:老師對這個程序進行調試時,發現其中有一項一直輸出空值,然后才發現是循環語句打錯了(還沒有學循環語句)。
上周考試錯題總結
錯題一:If two variables contain aliases of the same object then
A . the object may be modified using either alias
B . the object cannot be modified unless there's but a single reference to it
C . a third alias is created if/when the object is modified
D . the object will become an "orphan" if both variables are set to null
E . answers A and D are correct
正確答案: E
解析:
A.可以使用別名來修改對象
B.對象不能被修改除非有一個單獨的引用
C.語言如果對象被修改,則會創建第三個別名。
D.如果兩個變量都被設為null,那么這個對象就會變成一個“孤兒”
E.答案A和D是正確的
解析:在課本3.1.1中有解釋,String對象一旦被創建就不可變,但是別名提供了一種可以修改對象的方法。根據定義如果兩個變量都被設為null,那么這個對象就不會被任何變量引用(通過任何別名),它確實會變成一個“孤兒”,并且在將來的某個時候會被垃圾收集。錯題二:Which properties are true of String objects?
A . Their lengths never change
B . The shortest string has zero length
C . Individual characters within a String may be changed using the replace method
D . The index of the first character in a string is one
E . Only A and B are true
正確答案: E
解析:字符串是不可變的。這意味著,一旦創建了string對象,就不能更改它。字符串的長度在創建后不會發生改變。最短的長度字符串是"",所以長度是0。replace方法允許從原來的一個字符串中創建一個新的字符串,替換一些字符。字符串中第一個位置的索引是0,而不是1。另外,每個字符串的最后一個字節包含字符串末尾字符,它是低值或二進制0的字節。錯題三:What happens if you attempt to use a variable before it has been initialized?
A . A syntax error may be generated by the compiler
B . A runtime error may occur during execution
C . A "garbage" or "uninitialized" value will be used in the computation
D . A value of zero is used if a variable has not been initialized
E . Answers A and B are correct
正確答案:E
解析:很多時候,編譯器能夠檢測到未初始化的變量的嘗試,在這種情況下它會產生一個語法錯誤。如果編譯器使用逃逸檢測,則在使用時出現運行時錯誤。Java是一種非常“安全”的語言,因此,如果在計算中使用未初始化的變量,則不允許使用“垃圾”或“零”。錯題四:
What is the function of the dot operator?
A . It serves to separate the integer portion from the fractional portion of a floating point number
B . It allows one to access the data within an object when given a reference to the object
C . It allows one to invoke a method within an object when given a reference to the object
D . It is used to terminate commands (much as a period terminates a sentence in English)
E . Both B and C are correct
正確答案: E
解析: .點操作符直接追加在對象引用之后,后面是需要訪問的數據或方法。在數據的情況下,訪問可能是為了閱讀或寫作。在方法的情況下,訪問是允許某人調用該方法。浮點數中的點是一個小數點而不是一個點算符。錯題五:In Java, "instantiation" means
A . noticing the first time something is used
B . creating a new object of the class
C . creating a new alias to an existing object
D . launching a method
E . none of the above
正確答案: B
你的答案: C
解析:“實例化”意味著創建對象的新實例。這通常是通過使用新操作符來完成的。在字符串的情況下,只需在表達式中使用引號,就可以創建新的實例(實例化)。例如:字符串年代;s="一個新字符串(實例)";錯題六:Say you write a program that makes use of the Random class, but you fail to include an import statement for java.util.Random (or java.util.). What will happen when you attempt to compile and run your program.
A . The program won't run, but it will compile with a warning about the missing class.
B . The program won't compile-you'll receive a syntax error about the missing class.
C . The program will compile, but you'll receive a warning about the missing class.
D . The program will encounter a runtime error when it attempts to access any member of the Random class
E . none of the above
正確答案: B
你的答案: A
假設您編寫了一個程序,該程序使用了Random類,但是您沒有包含java.util的import語句,(或java.util。)。當您試圖編譯并運行您的程序時將會發生什么。
A.這個程序不會運行,但是它將會對丟失的類發出警告。
B.程序不會編譯,您將會收到關于丟失的類的語法錯誤。
C.程序將會編譯,但是您會收到一個關于丟失的類的警告。
D.當程序試圖訪問隨機類的任何成員時,程序將會遇到運行時錯誤
E.以上都不是缺少的類意味著將會有未定義的變量和/或方法。編譯器會檢測到這些,并會發出錯誤消息。你的程序是不可執行的。
錯因:還是沒有準確理解編譯和進行的區別。
解析:缺少的類意味著將會有未定義的變量和/或方法。編譯器會檢測到這些,并會發出錯誤消息。你的程序是不可執行的。錯題七:Which of the following will yield a pseudorandom number in the range [ -5, +5 ) given the following:
Random gen = new Random( );
A . gen.nextFloat( ) * 5
B . gen.nextFloat( ) * 10 - 5
C . gen.nextFloat( ) * 5 - 10
D . gen.nextInt( ) * 10 - 5
E . gen.nextInt(10) - 5
正確答案: B 我的答案: E
解析:gen.nextInt(10) - 5 所得到的結果是-5,-4,-3,-2,-1,0,1,2,3,4,并不是題目中所要求的,它得到的只是一些數而不是一個取值范圍。而nextFloat則是在范圍[0,1)中產生偽隨機數字;乘以10的收益率在0到10之間,再減去5,得到結果。錯題八:Consider the following two lines of code. What can you say about s1 and s2?
String s1 = "testing" + "123";
String s2 = new String("testing 123");
A . s1 and s2 are both references to the same String objects 1和s2都是對同一個字符串對象的引用
B . the line declaring s2 is legal Java; the line declaring s1 will produce a syntax error 聲明s2的行是合法的Java;聲明s1的行將產生一個語法錯誤
C . s1 and s2 are both references to different String objects s1和s2都是對不同字符串對象的引用
D . s1 and s2 will compare "equal" s1和s2會比較"相等"
E . none of the above
正確答案: C
你的答案: A
錯因:粗心大意,沒有注意到兩者細微的差別。
解析:這兩個聲明都是合法的Java。s1是一個字符串引用,它被初始化為字符串“testing123”。s2是一個字符串引用,它被初始化為字符串“測試123”。注意“測試”和“123”之間的空格。所以這兩個字符串不相等。錯題九:
An "alias"(別名) is when
A . two different reference variables refer to the same physical object
B . two different numeric variables refer to the same physical object
C . two different numeric variables contain identical values
D . two variables have the same names
E . none of the above
正確答案: A
你的答案: B
解析:當有兩個或多個對同一物理對象的引用時,就會出現“別名”,這樣,通過遵循任一引用,就可以讀/寫/修改對象錯題十:
The String class' compareTo method
A . compares two string in a case-independent manner(獨立的方式)
B . yields (收益率)true or false
C . yields 0 if the two strings are identical
D . returns 1 if the first string comes lexically before the second string
E . none of the above
正確答案: C
你的答案: E
解析:如果兩個字符串是完全一致的,那么它的值為0。錯題十一:
An API is
A . an Abstract Programming Interface(一個抽象的編程接口)
B . an Application Programmer's Interface(應用程序程序員的接口)
C . an Application Programming Interface(一個應用程序編程接口)
D . an Abstract Programmer's Interface(一個抽象的程序員的接口)
E . an Absolute Programming Interface(一個絕對的編程接口)
正確答案: C
你的答案: B
錯因:沒有理解好課本3.3.1
解析:API是一個應用程序編程接口,它是為特定目的而構建的相關類的集合。它們通常駐留在類庫中。錯題十二:
The advantage(s) of the Random class' pseudo-random number generators, compared to the Math.random method, is that(與數學相比,隨機類的偽隨機數生成器的優點是隨機方法: )
A . you may create several random number generators(你可以創建幾個隨機數生成器)
B . the generators in Random are more efficient than the one in Math.random(隨機產生的發電機比數學中的那個更有效率)
C . you can generate random ints, floats, and ints within a range(你可以在一個范圍內生成隨機的ints、浮點數和ints)
D . you can initialize and reinitialize Random generators(您可以初始化并重新初始化隨機生成器)
E . all but answer B
正確答案: E
你的答案: C
錯因:沒有理解題目。
解析:所有隨機數字生成器的效率是一樣的。隨機生成器優于數學的優點。隨機包含所有其他屬性。錯題十三:
The advantages of the DecimalFormat class compared with the NumberFormat class include(與NumberFormat類相比,十進制格式類的優點包括)
A . precise control over the number of digits to be displayed(精確控制要顯示的數字的數量)
B . control over the presence of a leading zero(控制一個前導零的存在)
C . the ability to truncate values rather than to round them(語言能夠截斷值而不是繞過它們)
D . the ability to display a % automatically at the beginning of the display(在顯示開始時自動顯示“%”的能力)
E . only A and B
正確答案: E
你的答案: A
錯因:沒有詳細比較兩者的區別
解析:雖然十進制格式提供的控制比NumberFormat要多得多,但是通過一個或多個數學方法,截斷仍然在程序員的手中“%”符號會出現在顯示器的末端,而不是開始。
代碼托管
學習進度條
| 目標 | 5000行 | 30篇 | 400小時 | |
| 第一周 | 127/127 | 1/1 | 25/25 | |
| 第二周 | 278/405 | 1/2 | 20/45 | |
| 第三周 | 442/847 | 1/3 | 20/65 | |
| 第四周 | 1063/1910 | 2/5 | 30/95 |
其他(感悟、思考等,可選)
在學第七章的時候遇見了很多的條件語句,也遇到了很多的問題,發現就算是照著課本打,有時也會出問題,因為你根本就沒有理解這些數據的含義到底是什么。所以我們的學習不只是簡單照著書本上敲代碼,更多的是要去理解他為什么要這樣敲,要從中去總結規律,這樣才能更快更好的去掌握知識。我認為我要努力的方面還有很多,還要盡量去使用網上的資源,而不是僅僅只看課本。
參考資料
《Java程序設計與數據結構教程(第二版)》
《Java程序設計與數據結構教程(第二版)》學習指導
轉載于:https://www.cnblogs.com/Qiuxia2017/p/8650167.html
總結
以上是生活随笔為你收集整理的20172310 2017-2018-2 《程序设计与数据结构》第四周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RxJava系列4(过滤操作符)
- 下一篇: 学习笔记(1)centos7 下安装ng