第02章 基礎(chǔ)數(shù)據(jù)類型與數(shù)組

2.1 標(biāo)識符與關(guān)鍵字

2.1.1標(biāo)識符

定義:

用來標(biāo)識類名腌歉、變量名绊率、方法名、類型名究履、數(shù)組名滤否、文件名的有效字符序列稱為標(biāo)識符,簡單地說最仑,標(biāo)識符就是一個(gè)名字 藐俺。

規(guī)則:

標(biāo)識符由字母、下劃線泥彤、美元符號和數(shù)字組成欲芹,長度不受限制。
標(biāo)識符的第一個(gè)字符不能是數(shù)字字符吟吝。
標(biāo)識符不能是關(guān)鍵字(關(guān)鍵字見下面的2.1.3節(jié))菱父。
標(biāo)識符不能是true、false和null(盡管true、false和null不是關(guān)鍵字)浙宜。

練習(xí):

判斷下列符號是否是合法的標(biāo)識符:
$var1官辽、 _var2、aInt 粟瞬、student_Number
2student同仆、 try、var#

注意:

標(biāo)識符中的字母是區(qū)分大小寫的裙品。

2.1.2關(guān)鍵字

定義:

關(guān)鍵字就是具有特定用途或被賦予特定意義的一些單詞俗批,不可以把關(guān)鍵字作為標(biāo)識符來用 。

注意:

關(guān)鍵字都是小寫的市怎。遇到大寫肯定不是關(guān)鍵字岁忘。

2.2數(shù)據(jù)類型與表達(dá)式

2.2.1 變量與常量

2.2.1.1 變量

定義

一個(gè)由標(biāo)識符命名的項(xiàng),其值可以被改變
每個(gè)變量都有類型区匠,例如 int 類型或 Object類型
變量有作用域干像,根據(jù)變量的作用域,變量可以分為類成員變量和局部變量

變量定義格式:

Type varName1[=value1][,varName2=[value2]…];

例如辱志,int num,total=0;

2.2.1.2 常量

定義

常量一旦被初始化以后就不可改變。

常量定義格式:

 final Type varName1[=value1][,varName2=[value2]…];

例如狞膘,final int PRICE=30;
final double PI=3.14;

2.2.2 數(shù)據(jù)類型

image.png

2.2.2.1 基本數(shù)據(jù)類型

有8種基本數(shù)據(jù)類型:

boolean揩懒、byte、short挽封、int已球、long、float辅愿、double智亮、char。

8種基本數(shù)據(jù)類型習(xí)慣上可分為以下四大類型:

  • 邏輯類型(布爾型):boolean
  • 整數(shù)類型:byte点待、short阔蛉、int、long
  • 字符類型:char
  • 浮點(diǎn)類型:float癞埠、double

(1)邏輯類型(布爾型)

布爾類型只有兩個(gè)值true 和 false状原,它們不對應(yīng)于任何整數(shù)值

(2)字符型(char)

用于存儲(chǔ)單個(gè)字符,用單引號括起來
char采用16位Unicode編碼苗踪,表示范圍0 ~ 65535 颠区。 

常量:

‘A’,‘b’通铲,‘?’毕莱,‘!’,‘9’,‘好’朋截,‘\t’蛹稍,‘き’,‘モ’等质和,即用單引號擴(kuò)起的Unicode表中的一個(gè)字符稳摄。

變量:

使用關(guān)鍵字char來聲明char型變量,對于char型變量饲宿,內(nèi)存分配給2個(gè)字節(jié)厦酬,占16位
例如:char ch=‘A’,home=‘家’,handsome=‘酷’;

轉(zhuǎn)意字符常量:

有些字符(如回車符)不能通過鍵盤輸入到字符串或程序中,就需要使用轉(zhuǎn)意字符常量,
例如:\n(換行), \b(退格),\t(水平制表),\‘(單引號), \“(雙引號),\\(反斜線)等瘫想。

比較

Java語言中char采用16位Unicode標(biāo)準(zhǔn)字符集仗阅,最多可以識別65536個(gè)字符
C語言等的字符類型是采用ASCII編碼,每個(gè)數(shù)據(jù)占用8比特的長度国夜,總共可以表示256個(gè)不同的字符减噪。

(3)整數(shù)類型

int 型

  • 變量:使用關(guān)鍵字int來聲明int型變量,聲明時(shí)也可以賦給初值.
    例如:int x= 12,平均=9898,jiafei;
  • 常量:int型常量共有三種表示方法:

十進(jìn)制:123,6000(十進(jìn)制)
八進(jìn)制: 077(八進(jìn)制车吹,是零開頭)
十六進(jìn)制:0x3ABC(十六進(jìn)制)

對于int型變量筹裕,內(nèi)存分配給4個(gè)字節(jié)(byte),占32位.

byte 型

  • 變量:使用關(guān)鍵字byte來聲明byte 型變量.
    例如:byte x= -12, tom=28, 漂亮=98;

  • 常量:一定范圍內(nèi)的int型常量賦值給byte型變量.

對于byte型內(nèi)存分配給1個(gè)字節(jié),占8位 .

short 型

  • 變量:使用關(guān)鍵字short來聲明short型變量窄驹。
    例如:short x=12,y=1234;
  • 常量:和byte型類似朝卒,Java中也不存在short型常量的表示法,但可以把一定范圍內(nèi)的int型常量賦值給short型變量乐埠。

對于short型變量抗斤,內(nèi)存分配給2個(gè)字節(jié),占16位.

long 型

  • 變量:使用關(guān)鍵字long來聲明long型變量丈咐。
  • 常量:long型常量用后綴L來表示瑞眼,例如108L(十進(jìn)制)、07123L(八進(jìn)制)棵逊、 0x3ABCL(十六進(jìn)制) 伤疙。 例如: long width=12L,height=2005L,length;
    對于long型變量,內(nèi)存分配給8個(gè)字節(jié)辆影,占64位掩浙。

(4)浮點(diǎn)類型

  • 一個(gè)浮點(diǎn)數(shù)包括以下幾個(gè)部分
    -- 整數(shù)部分;小數(shù)點(diǎn) 秸歧;小數(shù)部分厨姚;指數(shù) (e or E)
    -- 類型后綴 (f or F for float, d or D for double)
    可以用小數(shù)點(diǎn)和科學(xué)計(jì)數(shù)法兩種形式表示

float型

  • 常量:453.54F(小數(shù)表示法),2e40f(2乘10的40次方键菱,指數(shù)表示法).

  • 變量:使用關(guān)鍵字float來聲明float型變量谬墙,
    例如:float x=22.76f,tom=1234.987f,weight=1e-12F;
    對于float型變量今布,內(nèi)存分配給4個(gè)字節(jié),占32位拭抬。

  • 精度:float變量在存儲(chǔ)時(shí)保留8位有效數(shù)字部默。

  • float 類型常量舉例:
    1f 2.f .3f 0f 3.1f 4f 1.893e+2f

double 型

  • 常量:238.539d,231.987(小數(shù)表示法)造虎,1e-90(1乘10的-90次方傅蹂,指數(shù)表示法).對于double常量,后綴有“d”或“D”算凿,但允許省略后綴.

  • 變量:使用關(guān)鍵字double來聲明double型變量份蝴,
    例如:double height=23.345,width=34.56D,length=1e12;
    對于double型變量,內(nèi)存分配給8個(gè)字節(jié)氓轰,占64位 婚夫。
    -精度:double變量在存儲(chǔ)double型數(shù)據(jù)時(shí)保留16位有效數(shù)字,實(shí)際精度取決于具體數(shù)值署鸡。

  • double 類型文字量舉例:
    1e1 2. .3 0.0 3.1 4 1e-9d 1e137

特別注意

默認(rèn)情況下案糙,一個(gè)具有小數(shù)部分的數(shù)據(jù)的缺省類型是double而不是float。所以float常量后面必須要有后綴“f”或“F”靴庆。

image.png

Java的數(shù)據(jù)類型與C語言的異同

基本數(shù)據(jù)類型是相近的时捌,其不同之處在于:

1)Java的各種數(shù)據(jù)類型占用固定的內(nèi)存長度,與具體的軟硬件平臺環(huán)境無關(guān)炉抒;(跨平臺特性)
C或C++語言:16位機(jī)中奢讨,short, int占用2字節(jié),long占用4字節(jié)端礼;32位機(jī)中禽笑,short占用2字節(jié)入录,int, long占用4字節(jié)
2)Java的每種數(shù)據(jù)類型都對應(yīng)一個(gè)缺省的數(shù)值蛤奥,使得這種數(shù)據(jù)類型的變量的取值總是確定的。
(安全穩(wěn)定性)
C或C++:變量在未賦值前其值是不確定的僚稿。

2.3 表達(dá)式與運(yùn)算符

表達(dá)式

表達(dá)式是由一系列常量凡桥、變量、運(yùn)算符蚀同、方法調(diào)用構(gòu)成的缅刽,用于計(jì)算、對變量賦值蠢络,以及作為程序控制的條件

運(yùn)算符

(1) 算術(shù)運(yùn)算符

 + , –, *,  /,  % (可用于浮點(diǎn)數(shù))
+ , –, ++ , -- 

(2)賦值運(yùn)算符

  • 簡單賦值運(yùn)算符 =
  • 復(fù)合賦值運(yùn)算符
    *= /= %= += -= <<= >>= >>>= &= ^= |=
    E1 op= E2 等效于 E1 = (T)((E1) op (E2)), 其中T 是 E1的類型
  • 舉例

a=5 表達(dá)式的值為 5
a=b=c=d=3 表達(dá)式以及 a, b, c 的值都是3
a=3+(b=10) 表達(dá)式的值是13, a 是13, b是10
a=(b=14)/(c=7) 表達(dá)式的值是2, a是2, b是14, c是7
a=(b=4)+(c=6) 表達(dá)式的值是 10, a是10,b是4,c是6

a+=a-=aa 等效于 a=a+(a=a-aa)

(3)關(guān)系運(yùn)算符

  • 關(guān)系表達(dá)式的類型永遠(yuǎn)是布爾類型(boolean).
  • 算術(shù)比較運(yùn)算符 <, <=, >, >=
  • 類型比較運(yùn)算符 instanceof
  • 例如:

e instanceof Point //Point 是一個(gè)類
相等關(guān)系運(yùn)算符
數(shù)字相等運(yùn)算符 = = 衰猛, !=
布爾相等運(yùn)算符 = = , !=
引用相等運(yùn)算符 = = 刹孔, !=

(4) 邏輯運(yùn)算符

  • “與”運(yùn)算 &&
    如果兩個(gè)操作數(shù)的值都為true運(yùn)算結(jié)果為true; 否則啡省,結(jié)果為false.
  • “或”運(yùn)算 ||
    如果兩個(gè)操作數(shù)的值都為false運(yùn)算結(jié)果為false;否則,結(jié)果true
  • “非”運(yùn)算符!
    操作數(shù)的類型必須是布爾類型
    如果操作數(shù)的結(jié)果為 false卦睹,則表達(dá)式的結(jié)果為 true 畦戒,如果操作數(shù)的結(jié)果為 true則表達(dá)式的結(jié)果為 false

(5)位運(yùn)算符

  • 按位取反():對數(shù)據(jù)的二進(jìn)制位取反,即0變1结序,1變0障斋。如,00101010=11010101
  • 按位與(&):兩個(gè)操作數(shù)相應(yīng)位都為1徐鹤,則該位結(jié)果為1垃环,否則為0。如凳干,00110111&01000110=0000110
  • 按位或(|) :兩個(gè)操作數(shù)相應(yīng)位都為0晴裹,則該位結(jié)果為0,否則為1救赐。如涧团,00110111| 01000110=01110111
  • 按位異或(^) :兩個(gè)操作數(shù)相應(yīng)位相同,則該位結(jié)果為0经磅,否則為1泌绣。如,00110101&00111010=00001111
  • 左移運(yùn)算符(<<):將一個(gè)數(shù)的二進(jìn)制位全部左移若干位预厌,符號位保持不變阿迈,高位左移后舍棄,低位補(bǔ)0轧叽。在沒有溢出的情況下苗沧,左移n位相當(dāng)于乘以2n。

例如

a=00011100; a<<2=01110000
b=10011011; b<<2=11101100

  • 右移運(yùn)算符(>>):
    將一個(gè)數(shù)的二進(jìn)制位全部右移若干位炭晒,舍棄移出的低位待逞,最高位則移入原來高位的值(空位補(bǔ)符號位)。右移n位相當(dāng)于除以2n取商网严。
    例如

a=00011100; a>>2=00000111
b=10011011; b>>2=11100110

  • 無符號右移運(yùn)算符(>>>):將一個(gè)數(shù)的二進(jìn)制位無符號右移若干位识樱。舍棄移出的低位,最高位補(bǔ)0震束。

說明:

無符號右移運(yùn)算符>>> 只是對32位和64位的值有意義怜庸,在表達(dá)式中過小的值總是被自動(dòng)擴(kuò)大為int 型。這樣垢村,對第7位以0開始的byte 型的值進(jìn)行無符號移動(dòng)是不可能的割疾,因?yàn)樵趯?shí)際移動(dòng)運(yùn)算時(shí),是對擴(kuò)大后的32位值進(jìn)行操作嘉栓。

例如

b=10011011; b將擴(kuò)充至32位后(高24位為符號位1) 進(jìn)行移位宏榕,b>>>2=0011 1111 … 1110 0110 (…處表示16個(gè)1)

(6)條件運(yùn)算符 (表達(dá)式1驰凛?表達(dá)式2:表達(dá)式3)

  • 三目運(yùn)算符
    首先計(jì)算表達(dá)式1,如果表達(dá)式1的值為 true担扑,則選擇表達(dá)式2的值恰响;否則選擇表達(dá)式3的值
    如,int a=6, b=8, max=0; max=a>b?a:b;

2.4類型轉(zhuǎn)換運(yùn)算

  • 每個(gè)表達(dá)式都有類型
  • 如果表達(dá)式的類型與程序上下文不符
    -有時(shí)可能會(huì)導(dǎo)致編譯錯(cuò)誤
    -有時(shí)語言會(huì)進(jìn)行隱含的類型轉(zhuǎn)換涌献。
  • 類型轉(zhuǎn)換分為擴(kuò)展轉(zhuǎn)換和窄化轉(zhuǎn)換


    image.png

Java中數(shù)據(jù)的基本類型(不包括邏輯類型)按精度從“低”到“高”排列:

byte  short  char  int  long  float  double 

規(guī)則:

  • 當(dāng)把級別低的變量的值賦給級別高的變量時(shí)胚宦,系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換。
    例如:float x=100;
  • 當(dāng)把級別高的變量的值賦給級別低的變量時(shí)燕垃,必須使用顯示類型轉(zhuǎn)換運(yùn)算枢劝。顯示轉(zhuǎn)換的格式:(類型名)要轉(zhuǎn)換的值;例如:int x=(int)34.89;
  • 當(dāng)把一個(gè)int型常量賦值給一個(gè)byte和short型變量時(shí),不可以超出這些變量的取值范圍卜壕,否則必須進(jìn)行類型轉(zhuǎn)換運(yùn)算您旁;
    例如:byte b=128;(error) byte b=(byte)128(ok)

下面四種情況下可能發(fā)生類型轉(zhuǎn)換:

  • 賦值轉(zhuǎn)換

將表達(dá)式類型轉(zhuǎn)換為被賦值的變量類型
如,double d=10*2+5;

  • 方法調(diào)用轉(zhuǎn)換

適用于方法或構(gòu)造函數(shù)調(diào)用中的每一個(gè)參數(shù)

  • 強(qiáng)制類型轉(zhuǎn)換

將一個(gè)表達(dá)式類型強(qiáng)制轉(zhuǎn)換為指定的類型
如轴捎, (double)6

  • 字符串轉(zhuǎn)換
  • 任何類型(包括null類型)都可以轉(zhuǎn)換為字符串類型
  • 當(dāng)一個(gè)操作數(shù)是String類型鹤盒,即在“字符串+操作數(shù)”的情況下,操作數(shù)會(huì)被自動(dòng)轉(zhuǎn)換為字符串類型

2.5輸入侦副、輸出數(shù)據(jù)

2.5.1 輸出基本型數(shù)據(jù)

  • java使用System類中的方法實(shí)現(xiàn)數(shù)據(jù)輸出
    例如: System.out.println()System.out.print()輸出串值侦锯,表達(dá)式的值。二者的區(qū)別是前者輸出數(shù)據(jù)后換行秦驯,后者不換行尺碰。
    如:
    System.out.println(m+"個(gè)數(shù)的和為"+sum);
    System.out.println(":"+123+"大于"+122);
    如果需要輸出的字符串的長度較長,可以將字符串分解成幾部分译隘,然后使用并置符號:“+”將它們首尾相接亲桥,
    例如:
System.out.println("你好,"+
                                     "很高興認(rèn)識你" ); 
  • printf
    JDK1.5新增了和C語言中printf函數(shù)類似的輸出數(shù)據(jù)的方法固耘,格式如下:
 System.out.printf("格式控制部分"题篷,表達(dá)式1,表達(dá)式2玻驻,…表達(dá)式n)

格式控制部分由格式控制符號:%d悼凑、%c偿枕、%f璧瞬、%s和普通的字符組成,普通字符原樣輸出渐夸。格式符號用來輸出表達(dá)式的值嗤锉。
%d輸出int類型數(shù)據(jù)值;%c輸出char型數(shù)據(jù)墓塌;%f輸出浮點(diǎn)型數(shù)據(jù)瘟忱,小數(shù)部分最多保留6位奥额;%s輸出字符串?dāng)?shù)據(jù)。
輸出數(shù)據(jù)時(shí)也可以控制數(shù)據(jù)在命令行的位置访诱,例如:%md輸出的int型數(shù)據(jù)占m列垫挨;%m.nf輸出的浮點(diǎn)型數(shù)據(jù)占m列,小數(shù)點(diǎn)保留n位触菜。
例如:System.out.printf("%d,%f",12, 23.78);

2.5.2 輸入基本型數(shù)據(jù)

可以使用Scanner類創(chuàng)建一個(gè)對象:
Scanner reader=new Scanner(System.in);
其中:reader對象調(diào)用下列方法九榔,讀取用戶在命令行輸入的各種基本類型數(shù)據(jù):
nextBoolean()、 nextByte()涡相、 nextShort()哲泊、 nextInt() 、 nextLong()催蝗、nextFloat()切威、nextDouble()。
上述方法執(zhí)行時(shí)都會(huì)堵塞丙号,程序等待用戶在命令行輸入數(shù)據(jù)回車確認(rèn)先朦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市犬缨,隨后出現(xiàn)的幾起案子烙无,更是在濱河造成了極大的恐慌,老刑警劉巖遍尺,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件截酷,死亡現(xiàn)場離奇詭異,居然都是意外死亡乾戏,警方通過查閱死者的電腦和手機(jī)迂苛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼓择,“玉大人三幻,你說我怎么就攤上這事∧拍埽” “怎么了念搬?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摆出。 經(jīng)常有香客問我朗徊,道長,這世上最難降的妖魔是什么偎漫? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任爷恳,我火速辦了婚禮,結(jié)果婚禮上象踊,老公的妹妹穿的比我還像新娘温亲。我一直安慰自己棚壁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布栈虚。 她就那樣靜靜地躺著袖外,像睡著了一般。 火紅的嫁衣襯著肌膚如雪魂务。 梳的紋絲不亂的頭發(fā)上在刺,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音头镊,去河邊找鬼蚣驼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛相艇,可吹牛的內(nèi)容都是我干的颖杏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坛芽,長吁一口氣:“原來是場噩夢啊……” “哼留储!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咙轩,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤获讳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后活喊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丐膝,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年钾菊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帅矗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煞烫,死狀恐怖浑此,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滞详,我是刑警寧澤凛俱,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站料饥,受9級特大地震影響蒲犬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稀火,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一暖哨、第九天 我趴在偏房一處隱蔽的房頂上張望赌朋。 院中可真熱鬧凰狞,春花似錦篇裁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逾冬,卻和暖如春黍聂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背身腻。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工产还, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘀趟。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓脐区,卻偏偏與公主長得像,于是被迫代替她去往敵國和親她按。 傳聞我的和親對象是個(gè)殘疾皇子牛隅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容