基本語法筆記補充
註釋、識別符號、關鍵字
註釋
-
專案結構複雜,需要用到註釋
-
註釋不執行,寫給寫程式碼的人看
-
保持寫註釋的好習慣
-
-
註釋的種類:
-
單行註釋
-
多行註釋
-
文件註釋
-
識別符號
關鍵字:
Java所有的組成部分都需要名字。類名、變數名一級方法名都被成為識別符號
注意點:
-
所有識別符號都因該以字母(A-Z或者a-z),美元符($)、下劃線(_)開始
-
首字元之後可以是字母、美元符、下劃線或者數字的任何字元
-
不能使用關鍵字作為變數名或使用方法
-
識別符號大小寫敏感的
-
可以使用中文命名,但不建議使用
資料型別
強型別語言
變數的使用嚴格規定,所有變數必須先定義後才能使用
String:字串
int:數字
Java 的資料型別兩大類
-
基本型別:
-
引用型別
reference:引用
什麼是位元組
-
(bit):計算機內部最小的儲存單位
-
位元組(byte):資料處理的基本單位,用B表示。
-
1B=8bit
-
字元:計算機使用的字母、數字、字和符號。
資料型別拓展
-
整數拓展:進位制
-
二進位制:0b
-
八進位制:0
-
十進位制
-
十六進位制:0x (0~9 A~F)
-
-
浮點數拓展
-
銀行業務怎麼表示:(float&double有問題不能用)BIgDecimal 數學工具類
-
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//比較f&d是否一樣 -
float d1=65623456321f;
float d2=d1+1;
System.out.println(d1==d2);//比d1&d2是否一樣 -
原因:float 是有限的,離散的,有一個舍入誤差,大約,接近但不等於。
-
最好完全使用浮點數進行比較。
-
3.字元拓展
-
char c1='a';
char c2='中'; -
強制轉換:
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//強制將字元轉換成數字
System.out.println((int)c2);//強制將字元轉換成數字 -
所有的字元本質還是數字
-
編碼 Unicode 表 佔2位元組 總共有65536(2的16次方)(Excel也是65536)
例如:a=97 A=65
-
範圍:U0000 UFFFF
char c3='\u0061';
System.out.println(c3); -
轉義字元
-
\t:製表符 \n:換行 很多,需要自學
-
-
布林值擴充套件
boolean flag = true;
if(flag==true);//新手這樣寫
if(flag);//老手這樣寫,兩個意思一樣。
型別轉換
Java是強型別語言,所以進行有些運算需要型別轉換
byte,short,char,int,long,float,double
低==================================高
public class Demo04 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//記憶體溢位情況,超出了byte的範圍。
System.out.println(i);
System.out.println(b);
}
}
-
強制型別轉換 需要(型別)變數名 高→低,類似於上面的程式
-
自動轉換 低到高。例如:
public class Demo04 {
public static void main(String[] args) {
int i=128;
double b=i;
System.out.println(i);
System.out.println(b);
}
}注意點
-
不能對布林值進行轉換
-
不能把物件型別轉換為不相干的型別
-
不能高容量轉換到低容量的時候,強制轉換;否則自動轉換。
-
轉換的時候可能存在溢位或者精度的問題
public class Demo04 { public static void main(String[] args) { System.out.println((int)23.7); System.out.println((int)-45.89f); } }
-
5. char字元也可以自動轉換,
public class Demo04 { public static void main(String[] args) { char c='a'; int d=c+1; System.out.println(d); System.out.println((char)d); } }
-
再次強調溢位的問題,
public class Demo05 { public static void main(String[] args) { //操作比較大的數的時候,注意溢位問題 //JDK7新特性,數字之間可以用_分割 int money = 10_0000_0000; int years=20; int total=money*years;//int的範圍是正負21億,輸出結果溢位 long total2=money*years;//計算結果已經溢位,給total2轉換為long也沒用 long total3=(long)money*years;//這才是正確的輸出結果 System.out.println(total); System.out.println(total2); System.out.println(total3); } }
變數、常量
變數
-
變數:就是可以變化的量
-
Java是強型別語言,每個變數都必須宣告其型別
-
Java變數是程式中最基本的儲存單元,其要素包括變數名,變數型別和作用域
-
資料型別 變數名=值;可以使用逗號隔開來宣告多個同類型變數
-
注意事項:
-
每個變數都有型別,型別可以是基本型別,也可以是引用型別。
-
變數必須是是合法的識別符號
-
變數宣告是一條完整的語句,因此每個宣告都必須以分號結束。
-
public class Demo06 { public static void main(String[] args) { int a=1; int b=2; int c=3; String name="ouronghui"; char x='X'; double pi=3.14; System.out.println(); } }
變數作用域
-
類變數
public class Demo08 { static double salary=2500; //例項變數:從屬於物件;如果不進行初始化,這個型別的預設值 //所有的數值型別初始化值是0或0.0,字串初始化是u0000 布林值預設是false //除了基本型別其餘的預設值都null String name; int age; public static void main(String[] args) { int i=10; System.out.println(i); //變數型別 變數名字=new Demo08; Demo08 demo08= new Demo08(); System.out.println(demo08.age); System.out.println(demo08.name); //類變數 static System.out.println(salary); }
-
例項變數
public class Demo08 { //例項變數:從屬於物件;如果不進行初始化,這個型別的預設值 //所有的數值型別初始化值是0或0.0,字串初始化是u0000 布林值預設是false //除了基本型別其餘的預設值都null String name; int age; public static void main(String[] args) { int i=10; System.out.println(i); //變數型別 變數名字=new Demo08; Demo08 demo08= new Demo08(); System.out.println(demo08.age); System.out.println(demo08.name); } }
-
區域性變數
public class Demo07 { //屬性“:變數 //main 方法 public static void main(String[] args) { //區域性變數;必須宣告和初始化值 int i=10; System.out.println(i); }//區域性變數只在當個括號內有效 //其他方法 public viod add(){ } }
常量
用 final 關鍵詞來定常量/
Constant 初始化(initialize)後不能再改變值!不會變動的值。
常量可以理解成特殊的變數,他的值被設定後,程式執行中不能被改變。
常量名一般使用大寫字元。
public class Demo09 { //修飾符,不存在先後順序 static final double PI=3.14; public static void main(String[] args) { System.out.println(PI); } }
變數的命名規範
-
所有的變數、方法、類名:見名知意
-
類成員變數:除了第一個單詞意外首字母大寫,(駝峰原則)
-
區域性變數:除了第一個單詞意外首字母大寫,(駝峰原則)
-
常量:全部大寫
-
類名:首字母大寫和駝峰原則
-
方法名:首字母小寫和駝峰原則
-
運算子
算數運算子:+,-,*,/,%,++,--
賦值運算子: =
關係運算符:<,>,>=,>=,==,!=,instanceof
邏輯運算子:與(&&),非(!),或(||),
位運算子:&,|,^,~,>>,<<,>>>
條件運算子 ? :
擴充套件運算子:+=,-=,*=,/=
-
package operator; public class Demo01 { public static void main(String[] args) { //二元運算子 //ctrl+D:複製當前行到下一行 int a=10; int b=20; int c=25; int d=30; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/(double)b);
-
package operator; public class Demo02 { public static void main(String[] args) { long a=121321345454545L; int b=123; short c=10; byte d=8; System.out.println(a+b+c+d);//long System.out.println(b+c+d);//int System.out.println(c+d);//int } }
-
package operator; public class Demo03 { public static void main(String[] args) { //關係運算符返回的結果:正確,錯誤 布林值 //if int a=10; int b=20; int c=21; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); System.out.println(c%a);//c/a 21/10=2....1 } }
-
運算拓展知識:
package operator; public class Demo04 { public static void main(String[] args) { //++ -- 自增 ,自減 一元運算子 int a=3; int b=a++;//a++ a=a+1,執行當前程式碼後,先給b賦值,再自增 //相當於在執行這條程式碼後自增 System.out.println(a); int c=++a;//++a a=a+1 執行時機不同 執行當前程式碼前,先自增 System.out.println(a); System.out.println(b); System.out.println(c); //冪運算 2^3 =2*2*2=8 double pow= Math.pow(3,3); System.out.println(pow); } }
-
邏輯運算:
package operator; //邏輯運算子 public class Demo05 { public static void main(String[] args) { //與(and)或(or)非(取反) boolean a=true; boolean b=false; System.out.println("a&&b:"+(a&&b));//邏輯與運算:兩個變數都為真,結果才為true System.out.println("a||b:"+(a||b));//邏輯或運算:兩個有一個變數為真,結果為true System.out.println("!(a&&b):"+!(a&&b));//如果是真,則變為假,如果是假,則變為真 //短路運算 與運算前面為假,則不往後運算 int c=5; boolean d=(c<4)&&(c++<4); System.out.println(d); System.out.println(c); } }
-
位運算例子:
package operator; public class Demo06 { public static void main(String[] args) { /* A=0011 1100 B=0000 1101 A&B 0000 1100 A|B 0011 1101 A^B 0011 0001 ~B 1111 0010 2*8=16 2*2*2*2 << 左移 意思是乘以2 >> 右移 意思是除以2 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 */ System.out.println(16>>2);//運算效率極高 } }
-
擴充套件運算子:
package operator; public class Demo07 { public static void main(String[] args) { int a=10; int b=20; a+=b;//a=a+b a-=b;//a=a-b System.out.println(a); //字串連線符 + System.out.println(a+b); System.out.println(""+a+b); System.out.println(a+b+""+a+b); } }
-
條件運算子:
package operator; public class Demo08 { public static void main(String[] args) { //x ? y : z //如果x==true,則結果為y,否則為z int score=80; String type= score<60?"不及格":"及格"; System.out.println(type); } }
-
-
-
-