備註:該筆記可參考 速學堂java學習html
1.註釋方式:java
2.示例學習
/** * Welcome類(文檔註釋) * @author codeworker * @version 1.0 */ public class Welcome{ //單行註釋 public static void main(String[] args/*行內註釋*/){ System.out.println("Hello World!"); } /* 多行註釋 多行註釋 */ }
1.標識符:用來給變量、類、方法以及包進行命名的,如Welcome、name等
2.標識符命名規則:測試
3.標識符使用規範:code
4.示例htm
/** * 測試標識符的用法 * @author:codeworker */ public class TestIdentifer{ public static void main(String[] args){ int a123 = 1; //int 123a = 2; //數字不能開頭 int $a = 3; int _abc = 4; //int #abc = 5; int 年齡 = 18; //可使用中文,可是不建議 //int class = 2; //關鍵字不能做爲標識符 } }
Java關鍵字是Java語言保留供內部使用的,不能使用關鍵字做爲變量名或方法名。不須要專門記憶,使用多了天然就記住了。
對象
1.變量的本質:表明一個「可操做的存儲空間」
注:變量在使用前必須對其聲明,只有聲明後,才能爲其分配存儲空間
2.示例:生命週期
double salary; long earthPopulation;//long類型的分配空間爲8個字節 int age; //int類型的分配空間爲4個字節 int i,j; //可一行聲明多個變量,可是不建議,其可讀性較差 double e = 2.718282828;//可將變量的聲明和初始化放在同一行中
3.變量分類ci
類型 | 聲明位置 | 從屬於 | 生命週期 | 注意事項 |
---|---|---|---|---|
局部變量 | 方法或語句塊內部 | 方法或語句塊 | 從聲明位置開始,直到方法或語句塊執行完畢,局部變量消失 | 在使用前必須先聲明、初始化(賦初值)再使用 |
成員變量(實例變量) | 類內部,方法外部 | 對象 | 對象建立,成員變量也跟着建立,對象消失,成員變量也跟着消失 | 若是不自行初始化,會自動初始化爲該數據類型的默認初始值 |
靜態變量(類變量) | 類內部,static修飾 | 類 | 類被加載,靜態變量就有效;類被卸載,靜態變量消失 | 若是不自行初始化,與成員變量相同會自動賦初值 |
注:與成員變量和靜態變量相關的知識,在後面會再次講解文檔
4.示例:
public class TestVariable{ int a; //成員變量,從屬於對象,成員變量會自動被初始化 static int size; //靜態變量,從屬於類 public static void main(String[] args){ { int age; //局部變量,從屬於語句塊 age = 18; } int salary = 3000;//局部變量,從屬於方法 int i; //int j = i + 5;//編譯出錯,變量i尚未初始化 } }
常量類型:
final double PI = 3.14159; //PI = 3.15; //編譯出錯,常量一旦被初始化,即不可改其值
建議:
全部變量、方法、類名:見名知意
類成員變量:首字母 小寫 和駝峯原則,如monthSalary
局部變量:首字母 小寫 和駝峯原則
常量:大寫字母和下劃線,如MAX_VALUE
類名:首字母 大寫 和駝峯原則,如GoodMan
方法名:首字母 小寫 和駝峯原則,如calSalary()
Java中定義了3類8種基本數據類型
注:
1.與C++區別,Java整型的範圍與處理器無關,使其有很強的移植能力;
2.Java語言的整型常數默認爲 int型,聲明 long型常量能夠後加 ’l‘或 ’L‘;
3.絕大部分應用程序採用double型浮點數,默認的浮點型常量也是double;
4.浮點類型數據不適合於不允許舍入偏差的金融計算領域,其多使用BingDecimal類;
5.對於沒法直接寫出的字符型,可採用轉移字符,如 ‘\n';
雷區:不要使用浮點數進行比較,在須要進行比較的時候,請使用BigDecimal類
建議:當寫判斷語句:if(flag == true)時,建議寫法爲if(flag),可避免低級錯誤
示例一:長整數類型賦值
long a = 55555555; //編譯成功,在int型表示的範圍內(21億內) //long b = 5555555555555;//不加L編譯錯誤,超過int範圍 long b = 5555555555555L;//編譯成功
示例二:科學記數法賦值浮點數
double f = 314e2; //314*10^2 double f2 = 314e-2; //314*10^(-2)
示例三:浮點數比較存在的問題
float f = 0.1f; //聲明賦值爲float類型 double d = 1.0/10; System.out.println(f==d);//結果爲false float d1 = 423432423f; float d2 = d1 + 1; System.out.println(d1==d2);//結果爲true
示例四:BigDecimal進行浮點數比較
import java.math.BigDecimal; public class Main{ public static void main(String[] args){ BigDecimal bd = BigDecimal.valueOf(1.0); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); System.out.println(bd);//0.5 System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001 } }
注:
=是賦值運算符,而真正的判斷兩個操做數是否相等的運算符是==
==、!=是全部(基本和引用)數據類型均可以使用
>、>=、<、<=僅針對數值類型(byte/short/int/long,float/double,char)
i++和++i不要太深究,大概理解意思便可
運算符優先級不需刻意記憶,不清楚時,使用小括號組織便可
可是,對於經常使用的邏輯運算符優先級,切記「邏輯非>邏輯與>邏輯或」
示例:三目條件運算符
int score = 80; int x = -100; String type = score<60?"不及格":"及格"; int flag = x>0?1:(x==0?0:-1); System.out.println("type="+type); System.out.println("flag="+flag);
short b1 = 12; //合法 short b2 = 1234567;//非法,1234567超出short的表數範圍
double x = 3.14; int nx = (int)x; //值爲3 char c = 'a'; int d = c+1; System.out.println(nx); System.out.println(d); System.out.println((char)d);
int money = 1000000000;//10億 int years = 20; int total = money*year;//返回total爲負數,超過了int範圍 System.out.println("total="+total); long total2 = money*year; //返回的total2仍然爲負數,由於是先int計算,後轉爲long,已經丟失數據 System.out.println("total2="+total2); long total3 = money*((long)years); //返回的total3正確,先將其中一個因子變爲long,整個表達式發生提高,所有用long來計算 System.out.println("total3="+total3);
常見問題二:不要命名爲l的變量,l容易和1混淆,long類型使用大寫L不要用小寫
int l = 2;//分不清是L仍是1 long a = 23451l;//建議使用大寫L System.out.println(a+l);
import java.util.Scanner; public class TestScanner{ Scanner scanner = new Scanner(System.in); System.out.println("請輸入名字:"); String name = scanner.nextline(); System.out.println("請輸入愛好:"); String favor = scanner.nextline(); System.out.println("請輸入年齡:"); int age = scanner.nextInt(); System.out.println("##############"); System.out.println(name); System.out.println(favor); System.out.println("來到地球的天數"+age*365); }
未完,待續 ~