學習java,將本身的心得或總結寫下來吧。java
標識符由字母,下劃線(_),美圓符($)和數字組成。c++
標識符不能以數字開頭。數組
標識符不能使java關鍵字。dom
標識符對大小寫敏感。函數
Java經常使用關鍵字工具
關鍵字學習 |
用途this |
boolean, byte, char, double, float, int, long, short ,void spa |
基本類型線程 |
new, super, this, instanceof, null |
對象建立,引用 |
if, else, switch, case, default |
選擇語句 |
do, while, for |
循環語句 |
break, continue, return |
控制轉移 |
try, catch, finally, throw, throws, assert |
異常處理 |
synchronized |
線程同步 |
abstract, final, private, protected, public, static |
修飾說明 |
class, extends, interface, implements, import, package |
類,繼承,接口,包 |
native, transient, volatile |
其餘方法 |
true, false |
布爾常量 |
注意:
java中 的關鍵字均爲小寫字母,TRUE,NULL等不是關鍵字。
goto和const雖然在java中午做用,但還是java的關鍵字。
單行註釋符://
//這是單行註釋符
多行註釋符:/*……*/
/* 這是多行註釋符 */
文檔註釋:/**……*/
/** * 文檔註釋能被java文檔化工具javadoc識別處理,在自動生成文檔是有用 */
Java數據類型包括簡單數據類型(基本類型)和複合數據類型(引用類型)
基本類型:表明語言能處理的基本數據。特色:佔用的存儲空間固定。
整數類型:byte,short,int,long
浮點類型:float,double
字符類型:char
布爾類型:boolean
引用類型:一般由多個基本數據類型或引用類型組合構成。
類:class
接口:interface
數組
【注意】java的字符串實際上是String類的常量,它不是java數據類型。
關鍵字 |
數據類型 |
所佔字節 |
默認值 |
取值範圍 |
||
byte |
字節型 |
1 |
0 |
-2^7 ~ 2^7-1 |
||
short |
短整型 |
2 |
0 |
-2^15 ~ 2^15-1 |
||
int |
整型 |
4 |
0 |
-2^31 ~ 2^31-1 |
||
long |
長整型 |
8 |
0 |
-2^63 ~ 2^63-1 |
||
float |
單精度浮點型 |
4 |
0.0F |
1.4e^-45 ~ 1.4e^-45-1 |
||
double |
雙精度浮點型 |
8 |
0.0D |
4.9e^-324 ~ 1.798e^+308 |
||
char |
字符型 |
2 |
0 |
0 ~ 65535 |
||
boolean |
布爾型 |
1 |
false |
true, false |
布爾常量:true,false
整數常量:有byte,short,int,long四種類型。有十進制,八進制,十六進制,二進制四種表示形式。
浮點常量:有float和double類型。有小數點形式和指數形式兩種。
字符常量:由一對單引號括起來的單個字符或以反斜線(\)開頭的轉義字符。如'j', '4'。
經常使用轉義字符
轉義字符 |
描述 |
\' |
單引號字符 |
\'' |
雙引號字符 |
\\ |
反斜槓 |
\r |
回車 |
\n |
換行 |
\f |
走紙換頁 |
\t |
橫向跳格 |
\b |
退格 |
字符串常量:有雙引號括起來的由0個或多個字符組成的字符序列。字符串能夠包含轉義字符。
/** * Create by libra */ public class VariablesDemo { /**變量的取值範圍*/ public static void main(String[] args) { System.out.println("數據的取值範圍:"); System.out.println("字節型: " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE); System.out.println("短整型: " + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE); System.out.println("整型型: " + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE); System.out.println("長整型: " + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE); System.out.println("單精度浮點型: " + Float.MIN_VALUE + " ~ " + Float.MAX_VALUE); System.out.println("雙精度浮點型: " + Double.MIN_VALUE + " ~ " + Double.MAX_VALUE); } }
輸出結果:
強制轉換
格式:變量 = (數據類型) 表達式
基本數據類型自動轉換順序:byteàshortàcharàintàlongàfloatàdouble.
【注意】布爾類型不能與其餘類型轉換。
運算符(雙目單目)稍微提下,位運算符。
算數運算符:
算數運算符 |
|
雙目運算符 |
單目運算符 |
+, -, *, /, % |
++, --, -(負號) |
關係運算符:
運算符優先級:(==,--) > ~ > ! > 算術運算符>移位運算符>關係運算符> &,^, | , &&, ||, ||
經常使用數學函數Math類
方法 |
功能 |
|
int abs(int i) |
求整數的絕對值 |
|
double ceil(double d) |
求不小於d的最小整數 |
|
double floor(double d) |
求不大於d的最大整數 |
|
int max(int i1, int i2) |
求兩個整數中的最大數 |
|
int min(int i1, int i2) |
求兩個整數中的最小數 |
|
double random() |
0~1的隨機數 |
|
int round(float f) |
求最靠近f的整數 |
|
long round(double d) |
求最靠近d的長整數 |
|
double sqrt(double a) |
求平方根 |
|
double cos(double d) |
求d的餘弦函數 |
|
double log(double d) |
求天然對數 |
|
double exp(double x) |
求e的x次冪(e^x) |
|
double pow(double a, double b) |
求a的次冪 |
標準輸出流System.out提供三種輸出:
print():輸出後不換行
println():輸出後換行
printf():相似於c語言中的printf()用法
標準輸入流System.in提供read()等方法。寫一個程序便於說明及理解。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Input { public static void main(String[] args) throws IOException { System.out.println("==============字符=============="); char ch = (char) System.in.read(); System.out.println("讀入的字符爲:" + ch); System.out.println("==============字符串=============="); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s = in.readLine(); System.out.println("讀入的字符串爲:" + s); System.out.println("==============數字=============="); String x = "123"; int m = Integer.parseInt(x); String y = "123.123"; float n = Float.parseFloat(y); System.out.println("x = " + x); System.out.println("y = " + y); } }
輸出結果:
還能夠使用java.util.Scanner類輸入:
import java.util.Scanner; public class Input { public static void main(String[] args) throws IOException { Scanner s = new Scanner(System.in); System.out.println("請輸入數據:"); System.out.println("請輸入數據:"); short a = s.nextShort(); //輸入短整數 int b = s.nextInt(); //輸入整數 long c = s.nextLong(); //輸入長整數 float d = s.nextFloat(); //輸入單精度浮點型 double e = s.nextDouble(); //輸入雙精度浮點型 String f = s.nextLine(); //輸入字符串 System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d = " + d); System.out.println("e = " + e); System.out.println("f = " + f); } }
輸出結果:
在Scanner中還有不少輸入。
流程控制語句和c/c++沒有太大區別。
【注意】循環結構體中能夠用break 標號名; 和continue 標號名; 來跳出循環。
一維數組聲明有兩種格式:
1.數組元素類型 數組名[];
2.數組元素類型[] 數組名;
建議用第二種聲明方式
【建議】二維數組及多維數組聲明方式相似於一維數組,不過建議你們用第二種數組聲明方式,[]也是數組聲明的組成部分。
【注意】
1.java數組和c/c++數組不一樣,java數組理解爲數組的數組,數組的每一維的大小不必定相同。
例如:
int[][] a = new int[2][]; a[0] = new int[3]; a[1] = new int[4];
上面這段代碼聲明瞭一個二維數組,可是第0維和第1維的大小不相同。
2.求一維數組a長度常常用到的方法是a.length。如果多維數組也能夠這樣用:a[i].length,a[i][j].length ……。
對象的初始化和構造方法以及變量的做用域在一個例子中說明。
public class Scope { //成員變量的做用域是整個類體 int x; int y; /*對象的初始化*/ { x = 2; y = 1; } /*對象的構造方法*/ public Scope { x = 2; y = 1; } //方法參數a的做用域是整個方法 public void method(int a) { int x = 5; for (int i = 1; i < a; i++) { //局部變量i的做用域是for循環內 x = x + i; } System.out.println("x = " + x + ", y = " + y + ", a = " + a); } public static void main(String[] args) { //局部變量x的做用域從它的聲明點擴展到它被定義的代碼塊結束 Scope x = new Scope(); x.method(6); } }
【注意】構造方法的名稱必須與類名相同;構造方法無返回類型;一個類能夠提供多個構造方法,系統自動調用參數匹配的構造方法。
用static修飾的成員變量叫靜態變量,也叫類變量。
訪問:
在本類中直接訪問。
經過類名訪問。
經過類的一個對象訪問。
【注意】靜態變量的在存儲上歸屬類空間,可是不依賴任何對象;(經過對象訪問靜態變量實質上仍是訪問類空間的變量)
【建議】在類外訪問靜態變量時經過類名訪問以防混淆。
賦初值:便可以經過下面代碼塊賦初值,也可在定義時賦初值。
static { //code }
【注意】靜態代碼塊只能訪問靜態變量;對象的建立不會執行static代碼塊。注意區分靜態空間和對象空間。
class TalkPlace { static String talkArea = ""; } public class User { static int count = 0; String username; int age; public User(String name, int yourage) { username = name; age = yourage; } void Login() { //直接訪問同一類中的靜變量 count++; System.out.println("you are no " + count + " user"); } void Speak(String words) { //訪問其餘類的類變量,經過類名訪問類變量 TalkPlace.talkArea = TalkPlace.talkArea + username + "說: " + words + "\n"; } public static void main(String[] args) { User x1 = new User("張三", 20); x1.Login(); x1.Speak("hello"); User x2 = new User("李四", 16); x2.Login(); x2.Speak("good morning"); x1.Speak("bye"); System.out.println("-----討論區內容以下:"); System.out.println(TalkPlace.talkArea); } }
用static修飾的方法叫靜態方法,也叫類方法。
調用:
通常用類名作前綴調用。
經過對象調用
【注意】靜態方法也不依賴任何對象;靜態方法中只能處理靜態變量和其餘靜態方法,毫不能訪問任何歸屬對象空間的變量和方法。
public class FindPrime2 { public static boolean prime(int n) { for (int k = 2; k <= Math.sqrt(n); k++) { if (n % k == 0) { return false; } } return true; } public static void main(String[] args) { // FindPrime2 a = new FindPrime2(); for (int m = 10; m <= 100; m++) { //prime爲靜態方法,則可直接調用 if (prime(m)) { System.out.print(m + " "); } } } }