java 四舍五入_《JAVA编程思想》5分钟速成:1-4章:概述
前言:
1、面向對象的特征有哪些方面?
2、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少?
3、float f=3.4;是否正確?
4、short s1 = 1; s1 = s1 + 1;有錯嗎? short s1 = 1; s1 += 1;有錯嗎?
5、int 和Integer 有什么區別?
6、Java 有沒有goto?
7、在Java 中,如何跳出當前的多重嵌套循環?
8、&和&&的區別?
9、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
10、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
第一章、對象導論
1.1 抽象過程
面向對象編程:(OOP,Object Oriented Programming 面向對象的程序設計):
成功的面向對象的五個特性:
(1)萬物皆為對象;
(2)程序是對象的集合,他們通過發送消息來告知彼此所要做的;
(3)每個對象都可以擁有其他對象(has-a);
(4)每個對象(Instance)都有類型(Class);
(5)某一類型的所有對象都可以接收同樣消息(is-a)。
1.2 對象類型
類:具有相同的特性(數據元素)和行為(功能),實際上就是一個數據類型。包含:
基本數據類型:
抽象數據類型:比如容器(即JAVA類庫)
接口(interface):類似于定義了類的某些功能。
備注:Unified Modeling Language (UML)又稱統一建模語言或標準建模語言。
1.3 封裝
被隱藏的具體實現:
(1)不讓客戶端程序員訪問他們不應該訪問的部分;
(2)修改類內部而不用擔心影響到客戶端程序員;
1.4 復用
復用的具體實現方法(兩種):
組合(has-a)/聚合:建議優先采用此方式。
繼承(is-a):
備注:is-like-a : 派生類新增了methods或fileds。
1.5 多態
多態(也稱作動態綁定、后期綁定或運行時綁定)。
前期(編譯時)綁定&后期(運行時)綁定:
- 方法重載(overload)實現的是編譯時的多態性(也稱為前綁定);
- 方法重寫(override)實現的是運行時的多態性(也稱為后綁定)。
一個非面向對象語言在調用時會引起所謂的前期綁定,然而在OOP中,程序直到運行時才能確定代碼的地址,因此面向對象語言使用了后期綁定的概念。在java中,動態綁定是默認的。
1.6 單繼承
Java 特性(不同于C++):
單根繼承結構使垃圾回收器的實現變得容易得(?)。
Object是所有類的基類。
1.7 容器
List/Map/Set/Queue/Tree/Stack etc..
1.8 對象的創建和生命期
對象的創建:Java完全采用了動態內存分配方式(基本類型只是一種特例)。每當想要創建對象時,就要使用new關鍵字來構建對象的動態實例。
對象的生命期:jvm gc自動實現內存(垃圾)回收。
1.9 異常(Exception)&并發& C/S編程
Java內置Exception和并發機制,并擅長于 C/S編程領域。
第二章、一切皆對象
2.1 對象引用
String s = a; //借助對象引用,來操控對象
2.2 創建對象
String s = new String("abc");
2.3 基本數據類型(內存一致性):
Java的基本類型所占存儲空間大小不隨機器硬件架構的變化而變化。這種所占存儲空間大小的不變性是Java程序比用其他大多數語言編寫的程序更具可移植性的原因之一。
2.4 作用域(scope):
Java對象不具備和基本類型一樣的生命周期。當用new創建一個Java對象時,它可以存活于作用域之外。如:
{
String s = new String("a string");
} // End of scope
引用 s 在作用域終點就消失了。然而,s 指向的 String 對象仍繼續占據內存空間。
2.5 import 關鍵字
import關鍵字指示編譯器導入一個包,也就是一個類庫(在其他語言中,一個庫不僅包含類,還可能包括方法和數據,但是Java中所有的代碼都必須寫在類里)。
備注:特定類 java.lang 會被自動導入到每一個Java文件中。
2.6 static 關鍵字
2.6.1 通過 static 關鍵字可以滿足以下兩方面情形的需要:
- 只想為某一特定域分配單一存儲空間,而不去考慮空間要創建多少對象,甚至根本就不創建任何對象。
- 希望某個方法不與包含它的類的任何對象關聯在一起。也就是說,即使沒有創建對象,也能夠調用這個方法。
2.6.2 static 字段(類字段,單一存儲空間)
如創建兩個對象,st1.i 和 st2.i 指向同一存儲空間,共享同一個 i (static 字段),因此它們具有相同的值47。
2.6.3 static 方法(類方法)
a. static方法重要用法:在不創建任何對象的前提下就可以調用它。這一點對定義main()方法很重要(所以main()方法是一個 satic 方法),這個方法是運行一個應用時的入口點。
b. 關于static方法內部是否能調用非靜態方法:因為沒有this,就沒有對象,所以不能直接調用非靜態方法;但可以傳遞一個對象引用到靜態方法里,然后通過這個引用(和this效果相同)來調用非靜態方法和訪問非靜態數據成員。
c. 有些人認為static方法不是“面向對象”的,因為它們的確具有全局函數的語義;使用static方法時,由于不存在this,所以不是通過“向對象發送消息”的方式來完成的。
2.7 javadoc標簽
文檔注釋的一些標簽:
@see 引用其他類
@link package.class#member laber 與@see極其類似,只是它用于行內
@inheritDoc 繼承的注釋
@version 版本信息
@author 作者
@since 最早使用版本
@param 參數說明
@return 返回值
@throws 拋出異常
@deprecated 過時的 被@Deprecated取代
第三章、操作符
3.1 賦值
兩種賦值方式:
引用賦值:a = b; //a變化,b也會變化
方法參數賦值:func(a);//func()中的para a變化,方法調用處的a也會變化。
3.2 算術&關系&邏輯&按位運算符
邏輯運算的短路現象
3.3 類型轉換
窄化轉換:eg:double ->int 信息丟失(截尾),不安全的方式;
擴展轉換:eg:int->double 安全的方式;
備注:舍入:Math.round()來實現四舍五入。
3.4 sizeof()
Java沒有sizeof()操作符:Java不需要sizeof()操作符來滿足這方面的需要,因為所有數據類型在所有機器中的大小是相同的。我們不必考慮移植問題——它已經被設計在語言中了。
第四章、控制和執行流程
4.1 true 和 false
注意Java不允許我們將一個數字作為布爾值使用,這與C和C++ 不同(C/C++中,“真”是非零,而“假”是零)。如果將數字作為布爾表達式,Java編譯器會直接報錯。
4.2 迭代:
while(): 先檢查條件,再判斷是否執行;
do-while: 先執行,再判斷條件(同上區別:一定會執行一次);
for :
for-each:
4.3 返回
return/break/continue
關于執行跳轉:
- java中沒有用到goto語法。
- Java中跳出循環的實現方法:break TAG_A;或者continue TAG_B;
下章鏈接:
《JAVA編程思想》5分鐘速成:第5章(初始化和清理)
總結
以上是生活随笔為你收集整理的java 四舍五入_《JAVA编程思想》5分钟速成:1-4章:概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 铁矿石普氏指数
- 下一篇: python解决鸡兔同笼_Python解