找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2560|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

java語言基礎(chǔ)(四)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291487 發(fā)表于 2018-12-20 14:59 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
變量和常量
變量:變量代表程序的狀態(tài)。程序通過改變變量的值來改變整個程序的狀態(tài),或者說得更大一些,也就是實現(xiàn)程序的功能邏輯。
為了方便的引用變量的值,在程序中需要為變量設(shè)定一個名稱,這就是變量名。例如在2D游戲程序中,需要代表人物的位置,則需要2個變量,一個是x坐標(biāo),一個是y坐標(biāo),在程序運行過程中,這兩個變量的值會發(fā)生改變。
由于Java語言是一種強類型的語言,所以變量在使用以前必須首先聲明,在程序中聲明變量的語法格式如下:
數(shù)據(jù)類型 變量名稱;
例如:int x;
在該語法格式中,數(shù)據(jù)類型可以是Java語言中任意的類型,包括前面介紹到的基本數(shù)據(jù)類型以及后續(xù)將要介紹的復(fù)合數(shù)據(jù)類型。變量名稱是該變量的標(biāo)識符,需要符合標(biāo)識符的命名規(guī)則,在實際使用中,該名稱一般和變量的用途對應(yīng),這樣便于程序的閱讀。數(shù)據(jù)類型和變量名稱之間使用空格進行間隔,空格的個數(shù)不限,但是至少需要1個。語句使用“;”作為結(jié)束。
也可以在聲明變量的同時,設(shè)定該變量的值,語法格式如下:
數(shù)據(jù)類型 變量名稱 = 值;
例如:int x = 10;
在該語法格式中,前面的語法和上面介紹的內(nèi)容一致,后續(xù)的“=”代表賦值,其中的“值”代表具體的數(shù)據(jù),注意區(qū)別“==”代表為判斷是否相等。在該語法格式中,要求值的類型需要和聲明變量的數(shù)據(jù)類型一致。
在程序中,變量的值代表程序的狀態(tài),在程序中可以通過變量名稱來引用變量中存儲的值,也可以為變量重新賦值。例如:
int n = 5;
n = 10;
在實際開發(fā)過程中,需要聲明什么類型的變量,需要聲明多少個變量,需要為變量賦什么數(shù)值,都根據(jù)程序邏輯決定,這里列舉的只是表達的格式而已。

常量
常量代表程序運行過程中不能改變的值。
常量在程序運行過程中主要有2個作用:
   1. 代表常數(shù),便于程序的修改(例如:圓周率的值)
   2. 增強程序的可讀性(例如:常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其數(shù)值分別是1、2、3和4)
常量的語法格式和變量類型,只需要在變量的語法格式前面添加關(guān)鍵字final即可。在Java編碼規(guī)范中,要求常量名必須大寫。
則常量的語法格式如下:
  final 數(shù)據(jù)類型 常量名稱 = 值;
  final 數(shù)據(jù)類型 常量名稱1 = 值1, 常量名稱2 = 值2,……常量名稱n = 值n;
  例如:
  final double PI = 3.14;
  final char MALE=‘M’,F(xiàn)EMALE=‘F’;
Java語法中,常量也可以首先聲明,然后再進行賦值,但是只能賦值一次,示例代碼如下:
final int UP;
  UP = 1;
運算符和表達式
算術(shù)運算符:1.加減運算符:  +,-
加減運算符是二目運算符;加減運算符的結(jié)合方向是從左到右;加減運算符的操作元是整型或浮點型數(shù)據(jù),加減運算符的優(yōu)先級是4級。
2.乘、除和求余運算符: *,/,%
以上運算符是二目運算符,結(jié)合方向是從左到右,乘、除和求余運算符的操作元是整型或浮點型數(shù)據(jù)。運算符的優(yōu)先級是3級。
3.算術(shù)表達式
  用算術(shù)符號和括號連接起來的符合java語法規(guī)則的式子,稱為算術(shù)表達式。
4.自增自減運算符:++,--
是單目運算符,可以放在操作元之前,也可以放在操作元之后。操作元必須是一個整型或浮點型變量。作用是使變量的值增1或減1,如:
++x(--x)表示在使用x之前,先使x的值增(減)1。
x++(x--)表示在使用x之后,使x的值增(減)1。
運算精度:精度從“低”到“高”排列的順序是:
   byte  short  char  int  long  float  double
Java在計算算術(shù)表達式的值時,使用下列計算精度規(guī)則:
1.如果表達式中有雙精度浮點數(shù)(double型數(shù)據(jù)),則按雙精度進行運算。
2.如果表達式中最高精度是單精度浮點數(shù)(float型數(shù)據(jù)),則按單精度進行運算。
3.如果表達式中最高精度是long型整數(shù),則按long精度進行運算。
4.如果表達式中最高精度低于int型整數(shù),則按int精度進行運算
關(guān)系運算符:關(guān)系運算符是二目運算符,用來比較兩個值的關(guān)系。關(guān)系運算符的運算結(jié)果是boolean型,當(dāng)運算符對應(yīng)的關(guān)系成立時,運算結(jié)果是true,否則是false。
file:///C:/Users/馮強/AppData/Local/Temp/ksohtml/wpsC3FE.tmp.jpg
邏輯運算符:邏輯運算符包括:&&,||,!
其中&&、||為二目運算符,實現(xiàn)邏輯與、邏輯或。
!為單目運算符實現(xiàn)邏輯非。
邏輯運算符的操作元必須是boolean型數(shù)據(jù),邏輯運算符可以用來連接關(guān)系表達式。
file:///C:/Users/馮強/AppData/Local/Temp/ksohtml/wpsC3FF.tmp.jpg
位運算符:兩個整型數(shù)據(jù)實施位運算,即對兩個整型數(shù)據(jù)對應(yīng)的位進行運算得到一個新的整型數(shù)據(jù)。
1.按位與”運算
“按位與”運算符“&”是二目運算符。
2.按位或”運算
“按位或”運算符:“|”是二目運算符。
3.按位非”運算
“按位非”運算符:“~”是單目運算符。
4.按位異或”運算
“按位異或”運算符:“^”是二目運算符。
其他:1、賦值運算符和賦值表達式:=
賦值運算符是二目運算符,左面的操作元必須是變量,不能是常量或表達式。
賦值運算符的優(yōu)先級較低,是14級,結(jié)合方向右到左。
賦值表達式的值就是“=”左面變量的值。
注意:不要將賦值運算符“=”與關(guān)系運算符“==”混淆。
2、instanceof運算符
instanceof 運算符是二目運算符,左面的操作元是一個對象;右面是一個類。當(dāng)左面的對象是右面的類或子類創(chuàng)建的對象時,該運算符運算的結(jié)果是true ,否則是false。
流程控制
條件語句:條件分支語句按著語法格式可細(xì)分為三種形式,
if語句
if-else語句
if-else if- ……-else 語句
開關(guān)語句:switch 語句是單條件多分支的開關(guān)語句,它的一般格式定義如下(其中break語句是可選的):
switch(表達式)
{
  case 常量值:
              若干個語句
              break;
  case  常量值:
              若干個語句
              break;
    ...
  case  常量值n:
              若干個語句
             break;
   default:
         若干語句
}
switch語句中的“表達式”和“常量值”的值必須為byte、short、int、char型或者枚舉類型,而且互不相同。
循環(huán)語句for循環(huán):or語句的語法格式:
for (表達式1;表達式2;表達式3){
   若干語句
}
for語句的執(zhí)行規(guī)則是:
1)計算“表達式1”,完成必要的初始化工作。
2)判斷“表達式2”的值,若“表達式2”的值為true,則進行(3),否則進行(4)。
3)執(zhí)行循環(huán)體,然后計算“表達式3”,以便改變循環(huán)條件,進行(2)。
4)結(jié)束for語句的執(zhí)行。
While循環(huán):while語句的語法格式:
while (表達式) {
  若干語句
}
while語句的執(zhí)行規(guī)則是:
1)計算表達式的值,如果該值是true時,就進行(2),否則執(zhí)行(3)。
2)執(zhí)行循環(huán)體,再進行(1)。
3)結(jié)束while語句的執(zhí)行。
Do while循環(huán):do-while語句的語法格式:
do {
   若干語句
} while(表達式);
do- while語句的執(zhí)行規(guī)則是:
(1)執(zhí)行循環(huán)體,再進行(2)。
(2)計算表達式的值,如果該值是true時,就進行(1),否則執(zhí)行(3)。
(3)結(jié)束while語句的執(zhí)行。
breakcontinue
break和continue語句是用關(guān)鍵字break或continue加上分號構(gòu)成的語句。
在循環(huán)體中可以使用break語句和continue語句。
如果在某次循環(huán)中執(zhí)行了break語句,那么整個循環(huán)語句就結(jié)束。
如果在某次循環(huán)中執(zhí)行了continue語句,那么本次循環(huán)就結(jié)束,即不再執(zhí)行本次循環(huán)中循環(huán)體中continue語句后面的語句,而轉(zhuǎn)入進行下一次循環(huán)。
從抽象到類
類:類是組成Java程序的基本要素。類封裝了一類對象的狀態(tài)和方法。類是用來定義對象的模板。
   類的實現(xiàn)包括兩部分:類聲明和類體。基本格式為:
class 類名 {
   類體的內(nèi)容
}
class是關(guān)鍵字,用來定義類!癱lass 類名”是類的聲明部分,類名必須是合法的Java標(biāo)識符。兩個大括號以及之間的內(nèi)容是類體
構(gòu)造方法與對象的創(chuàng)建:
類是面向?qū)ο笳Z言中最重用的一種數(shù)據(jù)類型,那么就可以用它來聲明變量。在面向?qū)ο笳Z言中,用類聲明的變量被稱作對象。和基本數(shù)據(jù)類型不同,在用類聲明對象后,還必須要創(chuàng)建對象,即為聲明的對象分配變量(確定對象所具有的屬性),當(dāng)使用一個類創(chuàng)建一個對象時,也稱給出了這個類的一個實例。通俗的講,類是創(chuàng)建對象的“模板”,沒有類就沒有對象。構(gòu)造方法和對象的創(chuàng)建密切相關(guān)。
構(gòu)造方法:
構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型。
允許一個類中編寫若干個構(gòu)造方法,但必須保證他們的參數(shù)不同,即參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。
  需要注意的是
1) 如果類中沒有編寫構(gòu)造方法,系統(tǒng)會默認(rèn)該類只有一個構(gòu)造方法,該默認(rèn)的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。
2)如果類里定義了一個或多個構(gòu)造方法,那么Java不提供默認(rèn)的構(gòu)造方法
創(chuàng)建對象:1.對象的聲明
一般格式為:
類的名字  對象名字;如:
Vehicle car;
這里Vehicle是一個類的名字,car是我們聲明的對象的名字。
2.為聲明的對象分配內(nèi)存
使用new運算符和類的構(gòu)造方法為聲明的對象分配變量,即創(chuàng)建對象。如果類中沒有構(gòu)造方法,系統(tǒng)會調(diào)用默認(rèn)的構(gòu)造方法,默認(rèn)的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。如:
car=new Vehiclee();
PS:見示例。
使用對象:對象不僅可以操作自己的變量改變狀態(tài),而且能調(diào)用類中的方法產(chǎn)生一定的行為。
    通過使用運算符“.”,對象可以實現(xiàn)對自己變量的訪問和方法的調(diào)用。
1.對象操作自己的變量(對象的屬性)
    對象.變量;
2.對象調(diào)用類中的方法(對象的功能)
  對象.方法;
3.體現(xiàn)封裝
     當(dāng)對象調(diào)用方法時,方法中出現(xiàn)的成員變量就是指分配給該對象的變量。
對象的引用和實體:類是體現(xiàn)封裝的一種數(shù)據(jù)類型,類聲明的變量稱做對象,對象中負(fù)責(zé)存放引用,以確保對象可以操作分配給該對象的變量以及調(diào)用類中的方法。分配給對象的變量習(xí)慣地稱做對象的實體。
1.避免使用空對象
       沒有實體的對象稱作空對象,空對象不能使用,即不能讓一個空對象去調(diào)用方法產(chǎn)生行為。
2.垃圾收集
一個類聲明的兩個對象如果具有相同的引用,那么二者就具有完全相同的實體,而且Java有所謂“垃圾收集”機制,這種機制周期地檢測某個實體是否已不再被任何對象所擁有(引用),如果發(fā)現(xiàn)這樣的實體,就釋放實體占有的內(nèi)存
參數(shù)傳值:方法中最重要的部分之一就是方法的參數(shù),參數(shù)屬于局部變量,當(dāng)對象調(diào)用方法時,參數(shù)被分配內(nèi)存空間,并要求調(diào)用者向參數(shù)專遞值,即方法被調(diào)用時,參數(shù)變量必須有具體的值。
方法重載:方法重載的意思是:一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。
class A {
   float add(int a,int b) {
      return a+b;
   }
   float add(long a,int b) {
      return a+b;
   }
   double add(double a,int b) {
      return a+b;
   }
}
This關(guān)鍵字:this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。
實例方法可以操作類的成員變量,當(dāng)實例成員變量在實例方法中出現(xiàn)時,默認(rèn)的格式是:
this.成員變量;
當(dāng)static成員變量在實例方法中出現(xiàn)時,默認(rèn)的格式是:
類名.成員變量;
當(dāng)一個對象調(diào)用方法時,方法中的實例成員變量就是指分配給該對象的實例成員變量,而static變量則和其他對象共享。因此,通常情況下,可以省略實例成員變量名字前面的“this.”,以及static變量前面的“類名.”。
但是,當(dāng)實例成員變量的名字和局部變量的名字相同時,成員變量前面的“this.”或“類名.”就不可以省略。  
注:this不能出現(xiàn)在類方法中,這是因為,類方法可以通過類名直接調(diào)用,這時,可能還沒有任何對象誕生。
包:包是Java語言中有效地管理類的一個機制。
包名的目的是有效的區(qū)分名字相同的類。不同Java源文件中兩個類名字相同時,它們可以通過隸屬不同的包來相互區(qū)分。
import語句:一個類可能需要另一個類聲明的對象作為自己的成員或方法中的局部變量,如果這兩個類在同一個包中,當(dāng)然沒有問題。
如果一個類想要使用的那個類和它不在一個包中,要使用import語句完成使命。
訪問權(quán)限:當(dāng)用一個類創(chuàng)建了一個對象之后,該對象可以通過“.”運算符操作自己的變量、使用類中的方法,但對象操作自己的變量和使用類中的方法是有一定限制的。  
所謂訪問權(quán)限是指對象是否可以通過“.”運算符操作自己的變量或通過“.”運算符使用類中的方法。
訪問限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來修飾成員變量或方法。


untitled1.png (25.34 KB, 下載次數(shù): 126)

untitled1.png

untitled.png (28.43 KB, 下載次數(shù): 85)

untitled.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表