CoreJava學習筆記1-基本概念、對象和類

来源:http://www.cnblogs.com/mesopotamia/archive/2016/06/06/5563061.html
-Advertisement-
Play Games

一、 java的基本程式設計結構 (一) java共有8種基本類型:4種整型,2種浮點類型,1種char,1種boolean。 1) 4種整型:byte(1)、short(2)、int(4)、long(8)。 2) int最常用,byte和short常用在底層的文件處理或者需要控制占用存儲空間量的大 ...


一、    java的基本程式設計結構

(一)   java共有8種基本類型:4種整型,2種浮點類型,1種char,1種boolean。

1)       4種整型:byte(1)、short(2)、int(4)、long(8)。

2)       int最常用,byte和short常用在底層的文件處理或者需要控制占用存儲空間量的大數組。

3)       浮點類型:float(4)、double(8)。Float尾碼F,不加尾碼預設為double(D)。

4)       char類型表示單個字元,通常用來表示字元常量。

5)       boolean類型有兩個值:false、true。

(二)   聲明一個變數之後,必須用賦值語句對變數進行顯式初始化,千萬不要使用未初始化的變數。

(三)   關鍵詞final表示該變數只能被賦值一次。一旦賦值,不可更改。在Java中,經常用final來定義類常量,這樣,可以使該常量在一個類中的多個方法中使用。

(四)   正數被0除將會產生異常,浮點數被0除將會得到無窮大或NaN。

(五)   字元串的不可變性有一個優點:可以讓字元串共用。

(六)   檢測字元串是否相等使用equals而不用==。後者要求兩個字元串的存放地址必須也相同。

(七)   輸入輸出例子:

 

(八)   While迴圈語句首先檢測迴圈條件,因此迴圈體中的代碼可能不被執行。如果希望迴圈體至少執行一次,則應該將檢測條件放在最後,使用do..while.

(九)   case標簽可以是:類型為char、byte、short、int的常量表達式;枚舉常量;

1)       從Java7開始,case可以支持字元串字面量。

2)       如果case分支語句的末尾沒有break,那麼會接著執行下一個分支語句。

(十)   中斷控制流程語句:break、continue。

(十一)        數組

1)       創建一個數組時,所有元素初始化為0;

2)       boolean數組元素初始化為false。

3)       對象數組元素初始化為null(表示這些元素未存放任何對象)。

4)       Arrays.sort()可以對數組進行快速排序。

二、    對象與類

(一)   類之間最常見的關係:

1)       依賴(uses-a):A類的方法操縱B類的對象(B類的對象是A類的方法的入參),則A類依賴B類。

2)       聚合(has-a):A類的對象包含B類的對象(B對象是A的成員變數)。

3)       繼承(is-a):A繼承自B,A is a B。

(二)   要想使用對象,就必須首先構造對象,並制定其初始狀態。然後對對象應用方法。

1)       使用構造器構造新實例。

(三)   一個對象變數只是引用一個對象,而不是包含一個對象。

1)       如:Date deadline = new Date(); new Date()構造了一個Date類型的對象,該對象的值是一個引用該對象的地址,而這個地址存放在變數deadline中。

2)       如果一個對象為null,就等於沒有指向任何對象,就不能調用該對象的任何方法。比如:

Brithday birth = null;

birth.toString();

這樣會報錯。

(四)   在一個源文件中,只可以有一個公共類,可以有多個非公共類。

1)       比如,EmployeeTest.java除了一個公共類EmployeeTest(包含main方法)之外,還有一個非公共類Employee。

2)       當編譯這段源代碼時,編譯器會在目錄下創建兩個類文件:EmployeeTest.class和Employee.class。

3)       然後將程式中包含main方法的類名(EmployeeTest)提供給位元組碼解釋器,以便啟動該程式:java EmployeeTest

(五)   關於構造器

1)       構造器與類同名。

2)       每個類可以有一個以上的構造器。

3)       構造器可以有多個參數。

4)       構造器沒有返回值。

5)       構造器總是伴隨著new操作一起調用。

(六)   在每一個方法中,關鍵詞this表示隱式參數,表示當前對象實例。比如:

public void raiseSalary(double percent){

       double raise = this.salary +percent;

         this.salary +=raise;

}

而percent就是顯式參數。

(七)   如果一個類有final實例變數,那麼初始化該類時必須初始化該變數。即:必須確保在每一個構造器執行之後,該變數的值被設置,並且在後續操作中不能夠對它再修改。

(八)   final修飾符大都應用於基本類型變數或者不可變類型的變數(如果類中的每一個方法都不會改變其對象,這種類就是不可變的類。例如String類。)

(九)   靜態變數屬於類,不屬於任何對象。比如:

 

每一個Test對象擁有自己的size變數,但是無論新建多少對象,它們共用age變數。

(十)   System.out就是一個使用靜態變數的例子。

(十一)        按值調用表示方法提供的是調用者提供的值。按引用調用表示方法接收的是調用者提供的變數地址。Java總是採用按值調用。

1)       很多人根據下麵的例子得出結論:Java對對象的傳遞採用按地址調用,因為調用函數後,對象的屬性值發生了變化:

 

 

實際上,49行的方法的引用x只是harry的一個拷貝,此時,x和harry都是一個數值,該數值都等於Employee對象指向的地址。即:x和harry同時指向Employee對象的地址。你改變了對象的屬性,但x、harry各自代表的那個地址數值並沒有發生改變。

2)       通過下例來說明Java對對象採用的也是按值傳遞:

 

swap方法對x、y進行置換,導致x和y引用的地址發生了變化。但是a、b沒有發生任何變化。

(十二)        如果多個方法有相同的名字、不同的參數,便發生了重載。

1)       要完整的描述一個方法,需要指出方法名以及參數類型。這叫做方法的簽名。

2)       返回值類型不是方法簽名的一部分。也就是說,不能有兩個名字相同、參數類型也相同卻返回不同類型值得方法。下麵的寫法錯誤:

 

(十三)        如果在編寫一個類時沒有編寫構造器,那麼系統就會提供一個無參構造器。這個構造器將所有的實例域(成員變數)設置為預設值。於是,實例域的數值數據設置為0、布爾型數據設置為false、所有對象變數設置為null。(僅當類沒有提供任何構造器的時候,系統才會提供一個預設的構造器。)

(十四)        關鍵詞this的雙重意義:

1)       首先,this引用方法的隱式參數(即,一個函數除了多個入參外,還有一個沒有寫出的this參數,該參數總是指向當前調用該方法的對象實例。)

2)       第二個,如果構造器的第一個語句形如:this(…),這個構造器將調用同一個類的另一個構造器。

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • Django 遵從 MVC 模型,並將其特色化為 MTV 模型。模型的核心是通過用戶訪問的 url 來指向處理的函數,而函數處理後返回相應的結果。所以url決定了用戶訪問的入口,另外表單處理的提交地址也需要指定的url。url是所有功能的入口,所以url的編寫就變得非常重要。 Django 的 ur ...
  • <?php //php操作memcache的使用測試總結--學習 //1 Memcache::connect; //$memcache = new Memcache; //$memcache->connect('127.0.0.1',11211) or die("鏈接失敗!"); //2 Memca ...
  • 某個子站是php寫的,訪問的時候nginx時不時會冒出現502錯誤,高峰時更頻繁,檢查php-fpm的日誌發現大量的 child exited on signal 7 (SIGBUS),並且和accesslog里的502時間完全吻合,排除了php進程過載的可能,然後又排除了apc的嫌疑。 既然php ...
  • ...
  • 第2天 棧和寄存器 多文件編程 筆者在私下和很多C語言的愛好者和初學者交流的過程中發現,大家已經能夠使用C語言做出來很出色的程式了。但是這些出色的程式中的一部分竟然只有一個源文件。所以,筆者決定要介紹一下如何使用多個源文件進行編程。不得不說,多文件編程有非常多的優勢。比如在維護上非常方便,同時也給多 ...
  • 上一篇文章主要是講了mybatis-generator-core-1.3.2.jar的使用,這一篇我要介紹的是,修改jar包代碼,實現生成自定義模板。 1.我們從這裡可以下載mybatis-generator-core-1.3.2.jar項目源碼 http://maven.outofmemory.c ...
  • 看了網上一些文章,做了點總結,順便再加點自己的東西,簡單的說下。 1.利用瀏覽器的304緩存,但是304叫協商緩存,還是需要與伺服器通信一次 2.強制使用瀏覽器使用本地緩存(cache-control/expires),但是問題來了,不讓瀏覽器發資源請求,資源怎麼更新。 3.使用版本號,類似於a.c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...