?? 02_identifier_basictype.txt
字號(hào):
標(biāo)識(shí)符:
用于給類,變量,方法,包命名.
$ _ 數(shù)字 字母,第一個(gè)不能是數(shù)字
約定俗稱的習(xí)慣:
類名:每個(gè)單詞的首字母大寫.
屬性和方法:第一個(gè)單詞全小寫以后每個(gè)單詞首字母大寫.
這些都是習(xí)慣,可以不按照這樣的規(guī)定,編譯器不會(huì)給你報(bào)錯(cuò).(但會(huì)被人鄙視)
例
class Person{
public String userName;
public void setUserName(){
}
public void getUserName(){
}
}
包名:全小寫
常量:全大寫,用"_"分隔每個(gè)單詞
字符集
java的字符集使用的是unicode字符集.
這個(gè)字符集除了收集英文字符以外還包含了漢字的字符集.
也就是說(shuō)可以用漢字來(lái)命名類名或者變量名.
關(guān)鍵字
有個(gè)關(guān)鍵字enum是java1.5里面加入的.
strictfp這個(gè)關(guān)鍵字很生僻.
jdk5.0里面有50個(gè)關(guān)鍵字.
很多和C++是一樣的.
被取消的關(guān)鍵字
goto和const都被保留下來(lái)了,但在java語(yǔ)言里面是沒(méi)有意義的.
java中實(shí)說(shuō)這兩個(gè)單詞我保留了,但是我不用,可能希望將來(lái)希望使用.
const
不使用了, 被java中的 final來(lái)代替.
goto
不使用,java中沒(méi)有取代它.那么C++里面的goto被java取消了.這個(gè)語(yǔ)句會(huì)使你的程序變得沒(méi)有結(jié)構(gòu)性.
使用了goto還非常容易出現(xiàn)死循環(huán).
goto主要應(yīng)用在多層嵌套循環(huán)的內(nèi)部直接的跳到最外層.
java中的break
java是怎么樣解決這個(gè)問(wèn)題,它使用的是break,但是在break后面可以帶有語(yǔ)句標(biāo)號(hào);
break loop1;
true和false
表示這boolean的字面值.
boolean
對(duì)應(yīng)c++中bool
c++中的sizeof關(guān)鍵字沒(méi)有了.
這個(gè)關(guān)鍵字是用來(lái)判斷某個(gè)類型占據(jù)的內(nèi)存空間的大小.
為什么要使用sizeof.因?yàn)镃++在不同平臺(tái)下int所占用的字節(jié)數(shù)是不同的.
java語(yǔ)言不論你在什么樣的平臺(tái)下:
只要你在源程序中定義的是int它就認(rèn)為是4個(gè)字節(jié).
把底層的平臺(tái)數(shù)據(jù)字節(jié)數(shù),通過(guò)jvm屏蔽掉了.
數(shù)據(jù)類型:
八種基本數(shù)據(jù)類型
boolean 表示true和false 單獨(dú)的提取出來(lái)了.
在C++種經(jīng)常犯一些錯(cuò)誤.
char c;
while(c=getChar()!='\0'){
.....;
}
這里完成的是把一個(gè)bool值賦值給一個(gè)字符變量,C++的編譯器是檢查不出來(lái)這樣的錯(cuò)誤的.
但java里面編譯器是可以檢查的出來(lái)這樣的錯(cuò)誤的.
因?yàn)閖ava種的邏輯boolean值是單獨(dú)被提取出來(lái)的.
位數(shù) 取值范圍
整型:
byte 8bit 2^8 -128~127 共 256個(gè)
int 32bit -2^31~2^31-1
2^31=2^30*2=1024*1024*1024*2=2G>20億
long 64bit -2^63~2^63-1
short 16bit 2^16 -32768~32767
char 16bit 保存nuicode字符編碼值
實(shí)型:
double 64bit
float 32bit 只有四個(gè)字節(jié),因?yàn)槭墙拼鎯?chǔ).
char
ASCII 0~127 后面的是IBM擴(kuò)充的ascii的全表
它的存儲(chǔ)方式和整數(shù)的存儲(chǔ)方式一樣的
unicode就把主要語(yǔ)種的字符包含進(jìn)去了,
65535個(gè)位置,而常用的漢字也不過(guò)5000多個(gè).
char和short不同在取值范圍的不同.
short是 -32768~32767
char 是 0~65535
整型數(shù)據(jù)的內(nèi)存存儲(chǔ)原則:
正整數(shù) 直接存儲(chǔ)二進(jìn)制原碼
負(fù)整數(shù) 直接存儲(chǔ)二進(jìn)制補(bǔ)碼 在原碼的基礎(chǔ)上按位求反末位加一.
-28 00011100----求補(bǔ)碼--->11100100
符號(hào)位:補(bǔ)碼的最高位是一,原碼的最高位是零.
實(shí)型數(shù)據(jù)的存儲(chǔ)方式
float 32bit 前三個(gè)字節(jié)存儲(chǔ)數(shù)值,后一個(gè)字節(jié)存儲(chǔ)位權(quán)
3.14156 = 314156 , -5 =314156*10^-5
double 64bit 前6個(gè)字節(jié)存儲(chǔ)數(shù)值,后兩個(gè)字節(jié)存儲(chǔ)位權(quán).
java語(yǔ)言里面沒(méi)有無(wú)符號(hào)的概念
類型轉(zhuǎn)化:
數(shù)值類型的轉(zhuǎn)換原則:
從小范圍的值轉(zhuǎn)換成大范圍的值可以自動(dòng)進(jìn)行,否則需要強(qiáng)制進(jìn)行.
如果要把a(bǔ)=b,a這種類型的取值范圍要完全包容b類型的取值范圍.
如果不能夠完全包容就不能自動(dòng)轉(zhuǎn)換.
byte轉(zhuǎn)換成short 可以自動(dòng)進(jìn)行.
byte->short char->int short->int int->long long->float float->double
float的取值范圍沒(méi)有,因?yàn)槭墙拼鎯?chǔ).所以可以包容double
byte有負(fù)數(shù)char不能表示負(fù)數(shù),所以byte不能自動(dòng)轉(zhuǎn)char
強(qiáng)制類型轉(zhuǎn)換規(guī)則:
把int轉(zhuǎn)換成byte,去掉高位保留低位存入byte;
int a=0x17ff;byte b=(byte)a;System.out.println(a);-1
自動(dòng)類型轉(zhuǎn)換也會(huì)造成數(shù)據(jù)丟失
從int->float long->float long->double
float和double本身故有的存儲(chǔ)空間大小決定的.
float只用前三的字節(jié)存儲(chǔ)數(shù)據(jù).
double只用前六個(gè)字節(jié)存儲(chǔ)數(shù)據(jù).
這樣有可能造成低8位的數(shù)據(jù)丟失.
int 自動(dòng)轉(zhuǎn)換成 float的時(shí)候,如果int值大于float保存數(shù)據(jù)可以存儲(chǔ)的范圍,那么自動(dòng)類型轉(zhuǎn)換會(huì)把int類型值的低8位舍棄.
字符類型和整形的關(guān)系
int a='0'; char b='\u0048';
System.out.println(a);
"abc"
long la=1234567L;在數(shù)字后面直接跟上L表示長(zhǎng)整形.
byte b=123;這樣就是可以的.但是不可以 byte b=129;
對(duì)于數(shù)字標(biāo)量 byte short char 可以直接的賦值.
float f=123.22;錯(cuò),應(yīng)當(dāng)float f=123.22F;
double d=123.22;對(duì),希望表示double值可以double d=123D;如果不給出D也可以.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -