20172328李馨雨《程序設計與數據結構》第五週學習總結
第五章:條件循環和判斷
switch(布爾表達式)
{
case A :
語句/語句塊;
break;
case B:
語句/語句塊;
break;
.............
default :
語句/語句塊;
}
- 2.條件運算符(三元運算符,須要三個操做數(?:),條件運算符對較短表達式進行運算並返回結果)
例: System.out.println("The value is" + ((value<=10)?"not" : " ") + ""greater than 10");
3.do語句(do循環的循環體至少會執行一次)java
- 4.for語句(for語句一般用於已知循環執行次數的狀況,for循環的控制頭包含由分號隔開的三部分,初始化、布爾表達式、增量)
- 5.for-each循環(有助於處理迭代器問題)
6.各類循環的比較(要讓循環體至少執行一次,就用do循環。for循環更傾向於知道循環次數,while循環在開始前先判斷表達式初始值。)git
- 問題1:應該如何使用塊語句來創造條件語句?
- 1.(〃'▽'〃)本題解答:塊語句將一組語句組織爲語法意義上的一條語句。當須要在一個布爾條件的控制下處理較多的事物時,能夠用塊語句定義if語句的if塊或者定義循環語句的循環體。
- 問題2:在作SR5.23時,程序沒法正常運行,會一直出現死循環。
- 2.(〃'▽'〃)本題解答:通過老師的幫助和修改,發如今定義變量時的錯誤。
- 問題3:不理解迭代器。
3.(〃'▽'〃)本題解答:百度到的,而後能夠進一步理解。程序員
迭代器(iterator)是一種對象,它可以用來遍歷標準模板庫容器中的部分或所有元素,每一個迭代器對象表明容器中的肯定的地址。迭代器修改了常規指針的接口,所謂迭代器是一種概念上的抽象:那些行爲上像迭代器的東西均可以叫作迭代器。然而迭代器有不少不一樣的能力,它能夠把抽象容器和通用算法有機的統一塊兒來。
迭代器提供一些基本操做符:*、++、==、!=、=。迭代器是個所謂的複雜的指針,具備遍歷複雜數據結構的能力。其下層運行機制取決於其所遍歷的數據結構。所以,每一種容器型都必須提供本身的迭代器。事實上每一種容器都將其迭代器以嵌套的方式定義於內部。所以各類迭代器的接口相同,型號卻不一樣。這直接導出了泛型程序設計的概念:全部操做行爲都使用相同接口,雖然它們的型別不一樣。算法
- 問題4:switch語句中沒有String類型,運算結果不能爲float型或者boolean型。並且,每個case子句中的表達式必須爲常量,不能爲變量或其餘表達式。
4.(〃'▽'〃)本題解答:編程
switch(A),括號中A的取值只能是整型或者能夠轉換爲整型的數值類型,好比byte、short、int、char、還有枚舉;須要強調的是:long和String類型是不能做用在switch語句上的。markdown
case B;case是常量表達式,也就是說B的取值只能是常量(須要定義一個final型的常量,後面會詳細介紹緣由)或者int、byte、short、char(好比一、二、三、200000000000(注意了這是整型)),若是你須要在此處寫一個表達式或者變量,那麼就要加上單引號; case後的語句能夠不用大括號,就是C不須要用大括號包裹着;數據結構
default就是若是沒有符合的case就執行它,default並非必須的.app
- 問題1: The behavior of an object is defined by the object's
A . instance data
B . constructor
C . visibility modifiers
D . methods
E . all of the above
- 問題1分析和領悟:這些方法規定了對象在傳遞消息時的反應。每條消息都是做爲一個方法實現的,方法是在傳遞消息時執行的代碼。構造函數是這些方法中的一種,可是全部的方法組合在一塊兒決定了行爲。可見性修飾符會間接地影響對象的性能。因此選擇D。
- 問題2:In order to preserve encapsulation of an object, we would do all of the following except for which one?
A . Make the instance data private
B . Define the methods in the class to access and manipulate the instance data
C . Make the methods of the class public
lD . Make the class fina
E . All of the above preserve encapsulation
- 問題2分析和領悟:封裝意味着該類包含了操縱數據所需的數據和方法。爲了正確地保存封裝,實例數據不該該直接從類以外訪問,所以實例數據是私有的,而且定義了方法來訪問和操縱實例數據。此外,訪問和操縱實例數據的方法被公開,以便其餘類可使用該對象。保留的單詞「final」用於控制繼承,與封裝沒有任何關係。
- 問題3:A variable whose scope is restricted to the method where it was declared is known as a(n)
A . parameter
B . global variable
C . local variable
D . public instance data
E . private instance data
- 問題3分析和領悟:局部變量是那些被聲明的方法「本地」的變量,也就是說,它們只能在那個方法中訪問。全局變量是那些能夠從任何地方訪問的變量,而參數是傳遞給方法的變量。實例數據能夠被看做是整個對象的全局變量。
- 問題4: A class' constructor usually defines
A . how an object is initialized
B . how an object is interfaced
C . the number of instance data in the class
D . the number of methods in the class
E . if the instance data are accessible outside of the object directly
- 問題4分析和領悟: 構造器應該用於「構造」對象,也就是說,用來設置實例數據的初始值。這不是必需的,但一般是這樣作的。對象的接口是由在實例數據和方法上使用的可見性修飾符所決定的。
- 問題5: Instance data for a Java class
A . are limited to primitive types (e.g., int, float, char)
B . are limited to Strings
C . are limited to objects(e.g., Strings, classes defined by other programmers)
D . may be primitive types or objects, but objects must be defined to be private
E . may be primitive types or objects
- 問題5分析和領悟: 實例數據是組成該類的實體,多是任何可用的類型,不管是原始的仍是對象的,多是公有的仍是私有的。經過使用對象做爲實例數據,它容許將類構建在其餘類之上。這種關係中,類擁有其餘類的實例數據,稱爲has-a關係。
- 問題6: Consider a Rational class designed to represent rational numbers as a pair of int's, along with methods reduce (to reduce the rational to simplest form), gcd (to find the greatest common divisor of two int's), as well as methods for addition, subtraction, multiplication, and division. Why should the reduce and gcd methods be declared to be private.
A . Because they will never be used
B . Because they will only be called from methods inside of Rational
C . Because they will only be called from the constructor of Rational
D . Because they do not use any of Rational's instance data
E . Because it is a typo and they should be declared as public
- 問題6分析和領悟: 被聲明爲私有的類的全部條目只能被該類中的實體訪問,無論它們是實例數據仍是方法。在這種狀況下,因爲這兩種方法只從Rational的其餘方法(包括構造函數)調用,因此它們被聲明爲私有,以促進信息隱藏在更大的程度。注意,答案C不是一個正確的答案,由於reduce方法調用gcd方法,因此其中一個方法是從構造函數之外的方法調用的。
- 問題7:Consider a method defined with the header: public void doublefoo(double x). Which of the following method calls is legal?
A . doublefoo(0);
B . doublefoo(0.555);
C . doublefoo(0.1 + 0.2);
D . doublefoo(0.1, 0.2);
E . all of the above are legal except for D
- 問題7分析和領悟: 在A的狀況下,值0(整數)被擴展爲double。在C的狀況下,增長的是0.3,而後調用doublefoo。D中的參數列表是非法的,由於它包含兩個雙參數,而不是1。
- 問題8: What happens if you declare a class constructor to have a void return type?
A . You'll likely receive a syntax error
B . The program will compile with a warning, but you'll get a runtime error
C . There's nothing wrong with declaring a constructor to be void
>>D . The class' default constructor will be used instead of the one you're declaring
E . None of the above
- 問題8分析和領悟: 在添加一段有void的構造函數後會將其語段自動當作了一個方法。因此選D
- 問題9: Every class definition must include a constructor.
A . true
B . false
- 問題9分析和領悟: Java容許在沒有構造函數的狀況下定義類,然而,在這種狀況下有一個默認的構造函數。
- 問題10:Static methods cannot
A . reference instance data
B . reference non-static instance data
C . reference other objects
D . invoke other static methods
E . invoke non-static methods
- 問題10分析和領悟:靜態方法是一種方法,它是類自己的一部分,而不是實例化的對象,所以靜態方法是在類的全部實例化對象之間共享的。因爲靜態方法是共享的,因此它不能訪問非靜態實例數據,由於全部非靜態實例數據都是特定於實例化的對象。靜態方法能夠訪問靜態實例數據,由於像該方法同樣,實例數據在類的全部對象中共享。靜態方法也能夠訪問傳遞給它的參數。
- 問題11:Inheritance through an extended (derived) class supports which of the following concepts?
A . interfaces
B . modulary
C . information hiding
D . code reuse
E . correctness
- 問題11分析和領悟:經過延長一個類並繼承它,新類沒必要從新實現任何繼承的方法或實例數據,從而爲程序員節省了一項工做。所以,代碼重用是一種重用其餘人的代碼的能力,它能夠爲你的須要擴展它。
這周學習內容和高中數學中的算法語句實際上是同樣的,高中學習時只看中邏輯性。在真正瞭解到編程後。才能明白其實用性,才能更理性的看待各類app什麼的小bug。這學期好忙,可是必定不能放棄java的學習。哼哼哈嘿,繼續努力!!!
目標 |
5000行 |
30篇 |
400小時 |
第一週 |
100/100 |
1/1 |
15/15 |
第二週 |
377/477 |
1/2 |
20/35 |
第三週 |
280/757 |
2/4 |
22/57 |
第四周 |
973/1730 |
1/5 |
35/92 |
第五週 |
1000/2730 |
1/6 |
40/132 |
參考資料
1.java中switch語句詳細用法
2.java中迭代器的使用
3.java程序設計(第八版)
4.美化CSDN博客--markdown編輯器中段落縮進、換行,改變字體、字號與顏色等