java編程規范:
1.良好的標識符的命名保留字不能作為標識符命名: class、public、static..., goto,const區分大小寫:helloWorld、HelloWorld
2.良好的注釋習慣
3.良好的縮進:沒遇到一個代碼塊縮進一次(一個tab鍵)
變量:代表內存中的一個區域,區域可以存值
|--聲明:int helloWorld;//數據類型 變量名;
|--賦值:helloWorld = 100;
|--聲明+賦值:int helloWorld = 100;
|--值傳遞:int j = i;
8種基本數據類型:
整型數字:byte 1個字節 -128~127 short 2個字節 -2^15~2^15-1 -32768~32767 short s = 1000;(自動將int轉為short,但會進行精度的校驗)int 4個字節 -2^31~2^31-1 -2147483648~2147483647long(長整型) 8個字節 -2^63~2^63-1 long l = 1000;(整型字面值默認類型int)long l = 1000L;(后面跟l或L表示該字面值是long類型)浮點型:float(單精度浮點型) 4個字節 存儲格式類似于科學計數法,1bit符號位 8bit指數 23bit尾數1.11 * 2^111 0 0000 0111 11000000...范圍:1.4E-45~3.4028235E38float f = 100.01F;(后面跟f或F表示該字面值是float類型)float f = 1.0001E2f;//即1.0001*10^2double(雙精度浮點型) 8個字節 范圍:4.9E-324~1.7976931348623157E308double d = 200.02; 或double d = 200d;(后面跟d或D表示字面值是double類型)double d = 2.0002E2;或double d = 2.0002E2D;字符型:char char c = 'A';//賦值單個字符char c = 'ab';//錯誤的 char c = '\u0041';//可以使用字符對應的unicode編碼賦值//1*16^0 + 4*16^1= 65char c= 65; //可以使用unicode編碼的十進制編碼賦值 布爾型:boolean boolean b = true; boolean b= false;
自動類型提升:
double d = 100 + 100.01;short s = 100;
short s2 = s+1;//錯誤的short s1 = 100;
short s2 = 200;
short s3 = s1 + s2;//錯誤的如果表達式中存在double類型的數據,則參與運算的數據都會自動提升為double類型;如果表達式中存在float類型的數據,則參與運算的數據都會自動提升為float類型;如果表達式中存在long類型的數據,則參與運算的數據都會自動提升為long類型;其余情況,則均自動提示為int類型;(byte、short、int、char)注:不能將數據類型精度大的數據賦值給數據類型精度小的變量。
強制類型轉換:
short s3 = (short)(s1 + s2);//在需要強制類型轉換的數據前使用 (指定強制轉換的類型)
//注意:強制類型轉換的數據不要超過變量數據類型能夠表示的范圍
對象類型
StringString s;s = "a";s = "abbcdgfghh";s = "abcd" + "efgh";// "abcdefgh",+可以進行字符串的拼接s = "10" + 20;//1020,字符串和其他類型數據進行加法運算都是字符串拼接;s = 10 + 20 + "30";//3030
====================================================================================================================================
轉義字符:
char c1 = '\n';//換行符
char c2 = '\t';//制表符
char c3 = '\'';//'本身是特殊字符,通過轉義將其看成普通字符。
char c4 = '\\';
String s = "他的名字叫\"小明\"";
char可以進行算術運算:
char類型數據參與算術運算時,使用其編碼參與運算。
char c = 'A';//65
short s = 100;
short s2 = c + s;//錯誤的
int s2 = c + s;//正確的
System.out.println(c+1);//66
====================================================================================================================================
運算符:
算術運算符+ - * / %(取余)System.out.println("除法運算:"+(100 / 49));//取整System.out.println("除法運算:"+(100d / 49));//小數System.out.println("取余運算:"+(100 % 49));//取余賦值運算符= int i = 100;比較運算符> < >= <= ==(等于) != (不等于) 邏輯運算符&&(且) ||(或) !(非) int i = 100;int j = 49;boolean b = (i<50) && (j>50);//當兩邊的布爾表達式都為true,則結果為true.boolean b2 = i>50 || j>50;//當兩邊的布爾表達式只要有一個為true,則結果為true.boolean b3 = !(i>50);//對布爾表達式結果取反&(且) |(或)&和&& |和||的區別:&& ||:具備短路特性&& 當第一個布爾表達式為false,則不會再運算第二個布爾表達式,直接返回結果false|| 當第一個布爾表達式為true,則不會再運算第二個布爾表達式,直接返回結果true& |:不具備短路特性位運算符:直接操作二進制數據&:2&1 使用二進制進行運算,上下兩位都為1時才為1|:2|1 使用二進制進行運算,上下兩位只要有一個為1則為1<<:左移運算符2<<1 //4每左移一位相當于乘以2>>:算術右移運算符算術右移最高位補符號位8>>1 //4-8>>1 //-4-8>>2 //-2每算術右移一位相當于除以2>>>:邏輯右移運算符邏輯右移最高位補0 正數進行邏輯右移和算術右移的結果一致8>>>1 //4負數進行邏輯右移:-8>>>1//2147483644
注:2*2 、 2>>1,位運算符相對于乘法或除法運算符效率高。^:異或運算符 如果運算的兩位不同值,則結果為1,如果相同則為02^1//3~:取反運算符 將二進制每位都進行取反~1三目運算符布爾表達式?結果1:結果2 //如果布爾表達式運算結果為ture,則返回結果1;否則返回結果2int age = 34;age>=18?"已成年":"未成年"特殊用法:++、--int a = 10;//a++;//等價于 a = a+1;++a; //等價于 a = a+1;int b = a++;System.out.println(a);System.out.println(b);++如果前置,則先加一,后參與表達式運算++如果后置,則先參與表達式運算,在加一a--;//等價于a=a-1例:int a = 10;int b = a-- + --a;// 10 + 8 18System.out.println(b);//18+= -= *= /= %=:int a = 10;a += 5;//a=a+5;System.out.println(a); a -= 5;//a=a-5
運算符優先級:() ---> ++ -- ! ~(一元運算符) ---> * / % ---> + - ---> && ||
注:當不清楚運算的優先級時,使用括號保證運算順序 。
局部變量:聲明在函數內部的變量。
特點:1.先賦值后使用2.作用域的范圍:從定義位置開始到所處的代碼塊結束。3.在作用域范圍內不能出現命名沖突。