1.關鍵字
關鍵字的定義和特點
定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞)
特點:關鍵字中所有字母都爲小寫
2.標識符
標識符:
(1)Java 對各種變量、方法和類等要素命名時使用的字符序列稱爲標識符
(2)凡是自己可以起名字的地方都叫標識符。
定義合法標識符規則:
(1)由26個英文字母大小寫,0-9 ,_或 $ 組成
(2)數字不可以開頭。
(3)不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
(4)Java中嚴格區分大小寫,長度無限制。
(5)標識符不能包含空格。
注意:在起名字時,爲了提高閱讀性,要儘量有意義,“見名知意”。
Java中的名稱命名規範:
包名:多單詞組成時所有字母都小寫:xxxyyyzzz
類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz
變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
3.變量
變量的概念:
(1)內存中的一個存儲區域
(2)該區域有自己的名稱(變量名)和類型(數據類型)
(3)Java中每個變量必須先聲明,後使用
(4)該區域的數據可以在同一類型範圍內不斷變化
使用變量注意:
(1)變量的作用域:一對{ }之間有效
(2)必須初始化值
定義變量的格式:
數據類型 變量名 = 初始化值
變量是通過使用變量名來訪問這塊區域的
變量的分類-按數據類型:
對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間。
變量的分類-按聲明的位置的不同:
在方法體外,類體內聲明的變量稱爲成員變量。
在方法體內部聲明的變量稱爲局部變量。
注意:二者在初始化值方面的異同:
同:都有生命週期 異:局部變量除形參外,需顯式初始化。
4.基本數據類型的轉換
自動類型轉換:
容量小的類型自動轉換爲容量大的數據類型。數據類型按容量大小排序爲:
注:
(1)有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然後再進行計算。
(2)byte,short,char之間不會相互轉換,他們三者在計算時首先轉換爲int類型。(3)當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉化爲字符串類型。
基本數據類型轉換測試:
package com.one;
/**
* 基本數據類型轉換測試
* @author sujinran
*/
public class Helloworld {
public static void main(String[] args) {
String str1 = 4; //判斷對錯:錯
String str2 = 3.5f +""; //判斷str2對錯:對
System.out.println(str2);//輸出:3.5
System.out .println(3+4+"Hello!"); //輸出:7Hello!
System.out.println("Hello!"+3+4); //輸出:Hello!34
System.out.println('a'+1+"Hello!");//輸出:98Hello!
System.out.println("Hello"+'a'+1); //輸出:Hello!a1
}
}
強制類型轉換:
自動類型轉換的逆過程,將容量大的數據類型轉換爲容量小的數據類型。使用時要加上強制轉換符(()),但可能造成精度降低或溢出,格外要注意。
通常,字符串不能直接轉換爲基本類型,但通過基本類型對應的包裝類則可以實現把字符串轉換成基本類型。
如: String a = “43”; int i = Integer.parseInt(a);
注意:
boolean類型不可以轉換爲其它的數據類型。
Idea是邊編譯的。因此可以不用保存代碼,他會自動幫忙保存,紅色代表編譯不通過
強制類型轉換測試:
package com.two;
/**
* 強制類型轉換
* @author sujinran
*/
public class Helloworld {
public static void main(String[] args) {
//第一種
short s = 5;
s = s-2;//判斷:no
//第二種
byte b = 3;
b = b+4;//判斷:no
b = (byte) (b+4);//判斷:yes
//第三種
char c = 'a';
int i = 5;
double d= .314;
double result = c+i+d;//判斷:yes
//第四種
byte b1 = 5;
short s1 = 3;
short t= s+b;//判斷:no
}
}
5.運算符
運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等。
算術運算符:
算術運算符:自加、自減測試:
package com.com.three;
/**
* 算術運算符:自加、自減
*
* @author sujinran
*/
public class HelloWorld {
public static void main(String[] args) {
int i1 = 10, i2 = 20;//初始化
//後自增
int i = i1++;//i = 10,i1=11
System.out.println("i=" + i);//i=10
System.out.println("i1=" + i1);//i1=11
//前自增
i = ++i1;//i=12,i1=12
System.out.println("i=" + i);//i=12
System.out.println("i1=" + i1);//i1=12
//後自減
i = i2--;//i=20,i2=19
System.out.println("i=" + i);//i=20
System.out.println("i1=" + i2);//i1=19
//前自增
i = --i2;//i = 18,i2=18
System.out.println("i=" + i);//i=18
System.out.println("i1=" + i2);//i1=18
}
}
賦值運算符:
符號:=
當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理。
支持連續賦值。
擴展賦值運算符: +=, -=, *=, /=, %=
比較運算符(關係運算符):
邏輯運算符:
&—邏輯與 | —邏輯或 !—邏輯非
&& —短路與 || —短路或 ^ —邏輯異或
位運算符:
三元運算符:
格式:
(條件表達式)? 表達式1:表達式2;
爲true,運算後的結果是表達式1;
爲false,運算後的結果是表達式2;
表達式1和表達式2爲同種類型
三元運算符與if-else的聯繫與區別:
1)三元運算符可簡化if-else語句
2)三元運算符要求必須返回一個結果。
3)if後的代碼塊可有多個語句
6.程序流程控制
順序結構:
程序從上到下逐行地執行,中間沒有任何判斷和跳轉。
順序結構練習:
package com.four;
/**
* 順序結構
*
* @author sujinran
*/
public class Helloworld {
public static void main(String[] args) {
int num1 = 12;
int num2 = num1 + 2;
System.out.println(num2);
}
}
分支結構:
根據條件,選擇性地執行某段代碼。
有if…else和switch兩種分支語句。
if語句三種格式:
1. if(true){
執行代碼塊;
}
2. if(條件表達式){
執行代碼塊;
}
else{
執行代碼塊;
}
3. if(條件表達式){
執行代碼塊;
}
else if (條件表達式){
執行代碼塊;
}
……
else{
執行代碼塊;
}
package com.four;
/**
* if練習
* 思路:
* 1.定義年齡age
* 2.判斷年齡是否小於0 是 輸出不可能
* 3判斷年齡大於250 是 是個妖怪
* 4.2.3都不是 輸出年齡
*/
public class If1 {
public static void main(String args[]) {
int age = 75;
if (age < 0) {
System.out.println("不可能!");
} else if (age > 250) {
System.out.println("是個妖怪!");
} else {
System.out.println("人家芳齡 " + age + " ,馬馬乎乎啦!");
}
}
}
switch語句有關規則:
switch(表達式)中表達式的返回值必須是下述幾種類型之一:byte,short,char,int,枚舉,String;
case子句中的值必須是常量,且所有case子句中的值應是不同的;default子句是可任選的,當沒有匹配的case時,執行default
break語句用來在執行完一個case分支後使程序跳出switch語句塊;如果沒有break,程序會順序執行到switch結尾
switch和if語句的對比:
如果判斷的具體數值不多,而且符合byte、 short 、int、 char這四種類型。雖然兩個語句都可以使用,建議使用swtich語句。因爲效率稍高。
其他情況:對區間判斷,對結果爲boolean類型判斷,使用if,if的使用範圍更廣。
switch(變量){
case 常量1:
語句1;
break;
case 常量2:
語句2;
break;
… …
case 常量N:
語句N;
break;
default:
語句;
break;
}
練習:
package com.four;
/**
* Switch 練習
* @author sujinran
*/
public class Switch {
public static void main(String args[]) {
int i = 1;
switch (i) {
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
default:
System.out.println("default");
break;
}
}
}
注意:
循環結構:
根據循環條件,重複性的執行某段代碼。有while、do…while、for三種循環語句。
注:JDK1.5提供了foreach循環,方便的遍歷集合、數組元素。
for 循環語句:
package com.four;
/**
* for練習
* @author sujinran
*/
public class ForLoop {
public static void main(String args[]) {
int result = 0;
for (int i = 1; i <= 100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}
do-while 循環語句:語法格式
[初始化語句]
do{
語句或語句塊;
[更改語句;]
}while(布爾值測試表達式);
package com.four;
/**
* do-while練習
*
* @author sujinran
*/
public class WhileLoop {
public static void main(String args[]) {
int result = 0, i = 1;
do {
result += i;
i++;
} while (i <= 100);
System.out.println("result=" + result);
}
}
break 語句:break語句用於終止某個語句塊的執行
{ ……
break;
……
}
break語句出現在多層嵌套的語句塊中時,可以通過標籤指明要終止的是哪一層語句塊
label1: { ……
label2: { ……
label3: { ……
break label2;
……
}
}
}
package com.four;
/**
* break練習
* @author sujinran
*/
public class TestBreak {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
if (i == 3)
break;
System.out.println(" i =" + i);
}
System.out.println("Game Over!");
}
}
continue 語句:continue語句用於跳過某個循環語句塊的一次執行
continue語句出現在多層嵌套的循環語句體中時,可以通過標籤指明要跳過的是哪一層循環
package com.four;
/**
* continue練習
*
* @author sujinran
*/
public class ContinueTest {
public static void main(String args[]) {
for (int i = 0; i < 100; i++) {
if (i % 10 == 0)
continue;
System.out.println(i);
}
}
}
注:
break只能用於switch語句和循環語句中。
continue 只能用於循環語句中。二者功能類似,但continue是終止本次循環,break是終止本層循環。
break、continue之後不能有其他的語句,因爲程序永遠不會執行其後的語句。
標號語句必須緊接在循環的頭部。標號語句不能用在非循環語句的前面。
7.數組
數組是多個相同類型數據的組合,實現對這些數據的統一管理
數組中的元素可以是任何數據類型,包括基本數據類型和引用數據類型
數組屬引用類型,數組型數據是對象(object),數組中的每個元素相當於該對象的成員變量
一維數組的聲明方式:
type var[] 或 type[] var;
例如:
int a[];
int[] a1;
double b[];
Mydate[] c; //對象數組
Java語言中聲明數組時不能指定其長度(數組中元素的數), 例如: int a[5]; //非法
動態初始化:數組聲明且爲數組元素分配空間與賦值的操作分開進行
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
靜態初始化:在定義數組的同時就爲數組元素分配空間並賦值。
int a[] = new int[]{ 3, 9, 8};
int[] a = {3,9,8};