主頁 > 軟體設計 > Java基礎語法(總結篇)

Java基礎語法(總結篇)

2020-09-10 18:34:17 軟體設計

關鍵字&識別符號

關鍵字的概念與特征

概念:Java關鍵字是事先定義好的對Java的編譯器有特殊的意義,他們用來表示一種資料型別,或者表示程式的結構等,關鍵字不能用作變數名、方法名、類名、包名和引數,

特征:

  • 完全小寫
  • 在增強版記事本中(例如Notepad++)有特殊顏色

識別符號的概念與規則

  1.   什么是識別符號?

    凡是可以由自己命名的地方都稱為識別符號.

    例: 專案名 ,包名 ,類名 .方法名

        2.   命名規范

    ①    不可使用java關鍵字和保留字,但是可以包含關鍵字和保留字.

    ②    可以使用26個字母大小寫,數字0-9,$和_.

    ③    可以使用數字,但不可放在首位.

    ④    長度理論上沒有限制,但命名最好能反映出其作用,遵循”駝峰形式”,見命知意

    ⑤    包名全部小寫,類名全部大駝峰式

    ⑥    變數名、方法名首字母小寫,如果名稱由多個單詞組成,每個單詞的首字母都要大寫

              ⑦ 常量(特指被 final 修飾的常量)名全部大寫,如果是單個字母,需要大寫,如果是多個單詞,需要用下劃線分開,并且都大寫

    例:寫一個ajax的專案實體,

    專案名:ajaxtest        包名:com.liu.ajax       類名:AjaxDemo

常量&變數

常量的概念:在程式運行期間,固定不變的量,

常量的分類:

  1. 字符常量:凡是用單引號引起來的單個字符,就做字符常量,例如:、‘b'、9’、‘中
  2. 字串常量:凡是用雙引號引起來的部分,叫做字串常量,例如:"abc"、"Hello”、“123"
  3. 整數常量:直接寫上的數字,沒有小數點,例如:100、200、0、-250

  4. 浮點數常量:直接寫上的數字,有小數點,例如:2.5、-3.14、0.0 

  5. 布爾常量:只有兩種取值 true  |  false

基本資料型別:

 

           型別                                                                                                 位元組數                       二進制位數

 

          byte (位元組型)                                                                                   1                                   8

 

          short(短整型)                         char    (字符型)                             2                                  16

 

          int    (整型)                            float    (單精度浮點數)                   4                                  32

 

         long  (長整型)                        double(雙精度浮點數)                   8                                   64

注意事項:

  • Java中的默認型別:整數型別是 int 、浮點型別是double
  • 資料范圍與位元組數不一定相關,例如float資料范圍比 long 更加廣泛,但是float是4位元組,1ong是8位元組,
  • 浮點型可能只是一個近似值,并非精確的值,
  • 浮點數當中默認型別是double,如果一定要使用float型別,需要加上一個后綴F,
  • 字串不是基本型別,而是參考型別
  • 如果是整數,默認為int型別,如果一定要使用long型別,需要加上一個后綴L,推薦使用大寫字母后綴,

 

 變數: 程式運行期間,內容可以改變的量,

創建一個變數并且使用的格式:

 

  資料型別  變數名稱; //創建了一個變數

  變數名稱 = 資料值;  //賦值,將右邊的資料值,賦值交給左邊的變數

一步到位的格式:
  資料型別  變數名稱 = 資料值; //在創建一個變數的同時,立刻放入指定的資料值

 注意事項:

  1.如果創建多個變數,那么變數之間的名稱不可以重復,

   2.對于float和long型別來說,字母后綴F 和 L不要丟掉,

   3.沒有進行賦值的變數,不能直接使用;一定要賦值之后,才能使用,

 

作用域 : 從定義變數的一行開始,一直到直接所屬的大括號結束, 

 

資料型別轉換

當效據型別不一樣時,就會發生資料型別轉換

自動型別轉換(隱式)

  1.特點:代碼不需要進行特殊處理,自動完成

  2.規則:資料范圍從小到大

long num1 = 100;System.out.println(num1)

 

 // 左邊是long型別,右邊是默認的int型別,左右不一樣

 // int-->long,符合了資料范圍從小到大的要求

 

強制型別轉換(顯式)

   1.特點:代碼需要進行特殊的格式處理,不能自動完成

   2.格式:范圍小的型別范圍小的變數名=(范圍小的型別)原本范圍大的資料

 

int num=(int)100L;System.out.print1n(num);

 

 //左邊是int型別,右邊是long型別,不一樣

 //格式范圍小的型別  范圍小的變數名 =(范圍小的型別) 原本范圍大的資料 ;

注意事項:

  1.強制型別轉換一般不推薦使用,因為有可能發生精度損失、資料溢位,

  2.byte / short / char這三種型別都可以發生數學運算,例如加法“+”.

  3.byte/short/char這三種型別在運算的時候,都會被首先向上提升成為int型別,然后再計算,符合ASCII編碼表, 

例3:byte num4 = 40;//注意!右側的數值大小不能超過左側的型別范圍byte num5 = 50//當byte + byte,會先向上提升稱為int型別,所以結果就是--> int + int  ,回傳型別也應該是int
int result1 = num4 + num5;
System.out.println(result1);
//90

 

 運算子 :進行特定操作的符號,例如:+

 運算式:用運算子連起來的式子叫做運算式,例如:20+5 ,   又例如:a+b

 四則運算:加+      減 -      乘 *      除  /

 

  取模(取余數):%

 只有對于整數的除法來說,取模運算子才有余數的意義,

 

int x = 10;
int y = 3;
int resultl = x / y ;
System.out.println(result1);//3
int result2 = x % y ;
System.out.println(result2);//余數,模,1

 

 算術運算子

 

 

 

 

 四則運算當中的加號“+”有常見的三種用法:

  1.對于數值來說,+ 就是加法,

  2.對于字符char型別來說,在計算之前,char會被提升成為int,然后再計算,
  char型別字符,和int型別數字,之間的對照關系表:ASCII、Unicode

  3.對于字串String來說,+ 代表字串連接操作,   () 小括號的優先級最高

例3:
String str = "Java";

//
String + int --> String
System.out.println(str2+20);
//Java20

 

 

自增運算子:++

  例如:   a++;   先使用a值,再執行a = a + 1 ; 
int a = 1;int b = 2;b = a++;  //在這一步,a的值還沒有改變,所以是將a=1的值賦給了b,然后再進行改變,System.out.println("a:"+a); //a:2System.out.println("b:"+b); //b:1

 

自減運算子:- -

  例如:   ++a; 先執行a = a + 1 ; 再使用a值,
int a = 1;int b = 2;b = --a;System.out.println("a:"+a);System.out.println("b:"+b);

 

a++ : 在變數值被使用之后才增加的值

++a : 在變數值在被使用之前增加它的值

- - 運算子的作業原理與此相同,只是它所執行的是減值操作而非增值操作,

 賦值運算子

賦值運算子是指為變數或常量指定數值的符號,如可以使用 “=” 將右邊的運算式結果賦給左邊的運算元,

Java 支持的常用賦值運算子,如下表所示:

 

 

 比較運算子

比較運算子用于判斷兩個資料的大小,例如:大于、等于、不等于,比較的結果是一個布林值( true 或 false ),

Java 中常用的比較運算子如下表所示:

注意事項:

  1、  > 、 < 、 >= 、 <= 只支持左右兩邊運算元是數值型別

  2、  == 、 != 兩邊的運算元既可以是數值型別,也可以是參考型別

 

邏輯運算子

主要用于進行邏輯運算,連接兩個Boolean值,代表兩個條件,

Java 中常用的邏輯運算子如下表所示:

我們可以從“投票選舉”的角度理解邏輯運算子:

  1、 與:要求所有人都投票同意,才能通過某議題

  2、 或:只要求一個人投票同意就可以通過某議題

  3、 非:某人原本投票同意,通過非運算子,可以使其投票無效

  4、 異或:有且只能有一個人投票同意,才可以通過某議題

 

當使用邏輯運算子時,我們會遇到一種很有趣的 “短路” 現象    >> 如果根據左邊已經可以判斷得到最終結果,那么右邊的代碼將不再執行,從而節省一定的性能,

譬如:( 1 > 2 ) && ( 1 < 3 ) 中,如果能確定左邊 1 > 2 運行結果為 false , 則系統就認為已經沒有必要執行右側的 1 < 3 啦,

 

條件運算子

條件運算子( ? : )也稱為 “三元運算子”,

  • 一元運算子:只需要一個資料就可以進行操作的運算子,例如:取反!、自增++、自減--
  • 二元運算子:需要兩個資料才可以進行操作的運算子,例如:加法+、賦值=
  • 三元運算子:需要三個資料才可以進行操作的運算子,

 

語法形式:布爾運算式 ? 運算式1 :運算式2

運算程序:如果布爾運算式的值為 true ,則回傳 運算式1 的值,否則回傳 運算式2 的值

例如 :

 

 

 因為,運算式 8>5 的值為 true ,所以,回傳: 8大于5

 

方法 ♦ ♦

所謂方法,就是用來解決一類問題的代碼的有序組合,是一個功能模塊,

一般情況下,定義一個方法的語法是:  

訪問修飾符  回傳值型別  方法名(引數串列){

  方法體

}

 其中:

  1、 訪問修飾符:方法允許被訪問的權限范圍, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示該方法可以被其他任何代碼呼叫

  2、 回傳值型別:方法回傳值的型別,如果方法不回傳任何值,則回傳值型別指定為 void ; 如果方法具有回傳值,則需要指定回傳值的型別,并且在方法體中使用 return 陳述句回傳值

  3、 方法名:定義的方法的名字,必須使用合法的識別符號

  4、 引數串列:傳遞給方法的引數串列,引數可以有多個,多個引數間以逗號隔開,每個引數由引數型別和引數名組成,以空格隔開 

 

 根據方法是否帶參、是否帶回傳值,可將方法分為四類:

 

   無參無回傳值方法

  如果方法不包含引數,且沒有回傳值,我們稱為無參無回傳值的方法,

  方法的使用分兩步:

  第一步,定義方法

  例如:下面代碼定義了一個方法名為 show ,沒有引數,且沒有回傳值的方法,執行的操作為輸出 “ welcome to imooc. ”

  

 注意 :

  1、 方法體放在一對大括號中,實作特定的操作

  2、 方法名主要在呼叫這個方法時使用,需要注意命名的規范,一般采用第一個單詞首字母小寫,其它單詞首字母大寫的形式

 

  第二步,呼叫方法

  當需要呼叫方法執行某個操作時,可以先創建類的物件,然后通過  物件名.方法名();  來實作

  例如:在下面的代碼中,我們創建了一個名為 hello 的物件,然后通過呼叫該物件的 show( ) 方法輸出資訊

  

  運行結果為:  welcome to imooc.

 

 

  無參帶回傳值方法

  如果方法不包含引數,但有回傳值,我們稱為無參帶回傳值的方法,

  例如:下面的代碼,定義了一個方法名為 calSum ,無引數,但回傳值為 int 型別的方法,執行的操作為計算兩數之和,并回傳結果

  

    在 calSum( ) 方法中,回傳值型別為 int 型別,因此在方法體中必須使用 return 回傳一個整數值

  呼叫帶回傳值的方法時需要注意,由于方法執行后會回傳一個結果,因此在呼叫帶回傳值方法時一般都會接收其回傳值并進行處理,如下:第6行

  

  運行結果為: 兩數之和為:17

 

 不容忽視的“小陷阱”:

  1、 如果方法的回傳型別為 void ,則方法中不能使用 return 回傳值!

  

  2、 方法的回傳值最多只能有一個,不能回傳多個值

  

  3、 方法回傳值的型別必須兼容,例如,如果回傳值型別為 int ,則不能回傳 String 型值

  

 

   帶參無回傳值方法

 有時方法的執行需要依賴于某些條件,換句話說,要想通過方法完成特定的功能,需要為其提供額外的資訊才行,

 例如,現實生活中電飯鍋可以實作“煮飯”的功能,但前提是我們必須提供食材,如果我們什么都不提供,那就真是的“巧婦難為無米之炊”了,

 我們可以通過在方法中加入引數串列接收外部傳入的資料資訊,引數可以是任意的基本型別資料或參考型別資料,

 

 我們先來看一個帶引數,但沒有回傳值的方法:

 

  上面的代碼定義了一個 show 方法,帶有一個引數 name ,實作輸出歡迎訊息,

 

  呼叫帶參方法與呼叫無參方法的語法類似,但在呼叫時必須傳入實際的引數值

 

 例如:

  

  運行結果為: 歡迎您,愛慕課!

  很多時候,我們把定義方法時的引數稱為形參,目的是用來定義方法 需要傳入引數的個數和型別;把呼叫方法時的引數稱為實參,是傳遞給方法真正被處理的值,

 

  一定不可忽視的問題:

  1、 呼叫帶參方法時,必須保證實參的數量、型別、順序與形參一一對應

 

  

 

2、 呼叫方法時,實參不需要指定資料型別,如 

 

  3、 方法的引數可以是基本資料型別,如 int、double 等,也可以是參考資料型別,如 String、陣列等           

 

 

 

                         第10行,Array.toString()方法將陣列轉換為字串輸出

 

 4、 當方法引數有多個時,多個引數間以逗號分隔

 

 帶參帶回傳值方法

  如果方法既包含引數,又帶有回傳值,我們稱為帶參帶回傳值的方法,

  例如:

下面的代碼,定義了一個 show 方法,帶有一個引數 name ,方法執行后回傳一個 String 型別的結果

  

呼叫帶參帶回傳值的方法:

  

  運行結果為: 歡迎您,愛慕課!

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/3072.html

標籤:面向對象

上一篇:絕了!大廠20個企業級實戰專案,筆記+視頻+原始碼泄露,手慢無

下一篇:結對編程:中小學自動試卷生成程式分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more