在數據類型中,最經常使用也是最基礎的數據類型,被稱做基本數據類型。可使用這些類型的值來表明一些簡單的狀態。編碼
Java 語言的基本數據類型總共有如下8 種,下面是按照用途劃分出的4 個類別:spa
定點類型:
整數型是一類表明整數值的類型。當須要表明一個整數的值時,能夠根據須要從4 種類型中挑選合適的,若是沒有特殊要求的話,通常選擇int 類型。4 種整數型區別主要在每一個數據在內存中佔用的空間大小和表明的數值的範圍。設計
浮點類型:
小數型是一類表明小數值的類型。當須要表明一個小數的值時,能夠根據須要從如下2 種類型中挑選合適的。若是沒有特殊要求,通常選擇double類型。
因爲小數的存儲方式和整數不一樣,因此小數都有必定的精度,因此在計算機中運算時不夠精確。根據精度和存儲區間的不一樣,設計了兩種小數類型。code
字符型:
字符型表明特定的某個字符,按照前面介紹的知識,計算機中都是以字符集的形式來保存字符的,因此字符型的值實際只是字符集中的編號,而不是實際表明的字符,由計算機完成從編號轉換成對應字符的工做。Java 語言中爲了更加方便國際化,使用Unicode 字符集做爲默認的字符集,該字符集包含各類語言中常見的字符。在程序代碼中,字符使用一對單引號加上須要表達的字符來標識,例
如’A’、’a’等,固然也能夠直接使用字符編碼,也就是一個非負整數進行表示。內存
布爾型:
布爾型表明邏輯中的成立和不成立。Java 語言中使用關鍵字true 表明成立,false 表明不成立。布爾型是存儲邏輯值的類型,其實不少程序中都有邏輯值的概念,Java 把邏輯的值用布爾型來進行表達。it
向上轉換:for循環
整型,字符型,浮點型的數據在混合運算中相互轉換,轉換時遵循如下原則:字符編碼
容量小的類型可自動轉換爲容量大的數據類型;class
byte,short,char → int → long → float → double基礎
byte,short,char之間不會相互轉換,他們在計算時首先會轉換爲int類型。
boolean 類型是不能夠轉換爲其餘基本數據類型。
Eg:
int i = 123;
long l = i; //自動轉換,不需強轉
float f = 3.14F;
double d = f;
向下轉換:
整型,字符型,浮點型的數據在混合運算中相互轉換,轉換時遵循如下原則:
容量小的類型可自動轉換爲容量大的數據類型;
byte,short,char → int → long → float → double
byte,short,char之間不會相互轉換,他們在計算時首先會轉換爲int類型。
boolean 類型是不能夠轉換爲其餘基本數據類型。
Eg:
long l = 123L;
int i = (int) l;//必須強轉
double d = 3.14;
float f = (float) d;
個人總結:類型轉化
小轉大,自動!自動類型轉換(也叫隱式類型轉換)
大轉小,強轉!強制類型轉換(也叫顯式類型轉換)
運算符是一種特殊符號,用以表示數據的運算、賦值和比較等共分如下幾種:
算術運算符(+ 、— 、* 、/ 、%)
賦值運算符(= 、+=、-=、*=、/=,、%=)
關係運算符(>、>=、<、<=、!=)
條件運算符(&&、||、!&、|、^)
位運算符(&、|、^、~、>>、<<、<<<、>>>)
個人總結:
邏輯運算符用於鏈接布爾型表達式,在Java中不能夠寫成3<x<6,應該寫成x>3 & x<6 。
「&」和「&&」的區別:單與時,左邊不管真假,右邊都進行運算;雙與時,若是左邊爲真,右邊參與運算,若是左邊爲假,那麼右邊不參與運算。
「|」和「||」的區別同理,雙或時,左邊爲真,右邊不參與運算。
「 ^ 」與「|」不一樣之處是:當左右都爲true時,"^"結果爲false。
是由數字、運算符、數字分組符號(括號)等以能求得數值的有意義排列的序列;
a + b
3.14 + a
(x + y) * z + 100
boolean b= i < 10 && (i%10 != 0)
表達式的類型和值:
對錶達式中操做數進行運算獲得的結果是表達式的值。
表達式值的數據類型即爲表達式的類型。
表達式的運算順序
應按照運算符的優先級從高到低的順序進行;
優先級相同的運算符按照事先約定的結合方向進行;
「三目運算符」,語法格式:
x ? y : z;
其中x爲boolean類型表達式,先計算x的值,若爲true,則整個三目運算符的結果是表達式y的值,不然就是z的值。
package reviewDemo;
public class Demo2 {
public static void main(String[] args) {
String s = "lz";
s = (s == "lz" ? "正確" : "錯誤");
System.out.println(s);
}
}
輸出:正確
順序結構
分支結構(條件結構)
循環結構
控制循環結構
順序結構:
若是代碼裏沒有流程控制,程序是至上而下一行一行執行的,一條語句執行完以後繼續執行下一條語句,直到程序的最後。
if語句:
基本語法:if(表達式){方法體}else if(表達式){方法體}else(方法體)
幾種形式:
三種格式:
if(條件表達式){執行語句;}
if(條件表達式){執行語句;}else{執行語句;}
if(條件表達式){執行語句;}else if (條件表達式){執行語句;}……else{執行語句;}
public class If3
{
public static void main(String args[])
{
int i = 3;
if (i > 5)
{
System.out.println("變量i大於5");
}
else if (i > 4)
{
System.out.println("變量i小於4");
}
else
{
System.out.println("其餘");
}
}
}
switch控制語句
格式:
switch(表達式)
{
case 表達式可能的結果值1:
執行語句;
break;
case 表達式可能的結果值2:
執行語句;
break;
...
default:
執行語句;
break;//最後這個通常不寫
}
備註:
case之間與default沒有順序。先執行第一個case,都沒有匹配的case值執行default。
結束switch語句的兩種狀況:遇到break,switch語句執行結束。
若是匹配的case或者default沒有對應的break,那麼程序會從第一次匹配的case語句開始繼續向下執行,運行能夠執行的語句,直到遇到break或者switch結束爲止。
class switch2
{
public static void main(String[] args)
{
int a = 7,b = 5;
switch(a-b)
{
case 3://表達式可能的值;
{
System.out.println("33!");
}
break;
case 4:
{
System.out.println("44!");
}
break;
default://都沒有執行則 執行該語句!
System.out.println("其它的");
}
}
}
注意:switch語句只能使用byte、char、short、int四種基本類型以及它們的包裝類和枚舉
用於處理須要重複執行的操做;
根據判斷條件的成立與否,決定程序段落的執行次數,而這個程序段落咱們稱爲循環體;
while:事先不須要知道循環執行多少次;
do while:同上,只是至少要執行一次(先作,後判斷);
for:須要知道循環次數;
循環結構(while & do while)
while語句
格式:
while(條件表達式值爲true)
{
執行語句;
}
do while語句
格式:
do
{
執行語句;
}
while(條件表達式值爲true);
個人總結:do while特色是不管條件是否知足,循環體至少被執行一次。
循環裏的條件表達式不能直接寫false或直接寫結果是false的表達式,不過可使用變量來傳遞false值;
循環結構(for)
格式:
for(初始化表達式(1);循環條件表達式(2);循環後的操做表達式(3))
{
執行語句;(4)
}
執行順序:(1) → (2) → (4) → (3) → (2) → (4) → (3)
備註:
1, for裏面的3個表達式運行的順序,初始化表達式只讀一次,判斷循環條件,爲真就執行循環體,而後再執行循環後的操做表達式,接着繼續判斷循環條件,重複找個過程,直到條件不知足爲止。
2, while與for能夠互換,區別在於for爲了循環而定義的變量在for循環結束就在內存中釋放。而while循環使用的變量在循環結束後還能夠繼續使用。
3, 最簡單無限循環格式:while(true) , for(;;),無限循環存在的緣由是並不知道循環多少次,而是根據某些條件,來控制循環。
Eg:
用三種循環控制求出100之內前5個3的倍數的數字;
class while
{
public static void main(String[] args)
{
int i = 1,k = 0;
while(i<=100)
{
if(i%3==0)
{
if(k<5)
System.out.println(i);
k++;
}
i++;
}
}
}
class dowhile
{
public static void main(String[] args)
{
int i = 1,k = 0;
do{
if(i%3==0)
{
if(k<5)
System.out.println(i);
k++;
}
i++;
}
while(i<=100);
}
}
class for
{
public static void main(String[] args)
{
int i = 1,k = 0;
for(;i<100;i++)
{
if(i%3==0&&k<5)
{
System.out.println(i);
k++;
}
}
}
}
嵌套循環:循環裏套循環
假設外循環的循環次數是m次,內循環的循環次數是n次,那麼內層循環的循環次數須要 m * n次。
Eg:利用for循環語句的嵌套打印出乘法口訣表
class break1
{
public static void main(String[] args)
{
for(int i=1;i<=10;i++)//定義i與j的值必須在for循環裏面,不然每次跳出循環從新執行就沒法取值
{
for(int j=1;j<=10;j++)
{
if(j<=i)
System.out.print(j+"*"+i+"="+i*j+" ");//小注意:print()括號裏面
必須傳遞參數,println()無限制!
}
System.out.println();
}
}
}
流程控制
break語句、 continue語句;
break:終止該層循環;
continue:跳過該層循環
注:
①:若這兩個語句離開應用範圍,存在是沒有意義的。
②:這個兩個語句後面都不能有語句,由於執行不到。
③:continue語句是跳過本次循環,繼續下次循環。
④:標籤的出現,可讓這兩個語句做用於指定的循環。
Eg:
package reviewDemo;
public class Demo2 {
public static void main(String[] args) {
int i = 1;
for (; i < 10; i++) {
System.out.println(i);
if(i == 8){
break;//流程控制,不會徹底執行!
}
}
}
}