java文法一

來源:互聯網
上載者:User


1.常量--常量表示不能改變的的數值
Java中常量的分類:
1,整數常量。所有整數
2,小數常量。所有小數
3,布爾型常量。較為特有,只有兩個數值。true false。
4,字元常量。將一個數字字母或者符號用單引號( ' ' )標識。
5,字串常量。將一個或者多個字元用雙引號(" ")標識。
6,null常量。只有一個數值就是:null.
對於整數:java有三種表現形式。

  • 十進位:0-9 ,滿10進1.
  • 八進位:0-7 ,滿8進1. 用0開頭表示。
  • 十六進位:0-9,A-F,滿16進1. 用0x開頭表示。

對於整數:java有三種表現形式。

  • 十進位:0-9 ,滿10進1.
  • 八進位:0-7 ,滿8進1. 用0開頭表示。
  • 十六進位:0-9,A-F,滿16進1. 用0x開頭表示。

進位的基本轉換
十進位二進位 互轉

十進位轉成二進位:

除以2取餘數  如 :6/2 商3餘0    3/2商1餘1   1/2 商0餘1    6的二進位是 110

二進位轉成十進位
乘以2的冪數  如   1001    1*2^3+2*2^0=9
十進位 八進位 互轉
十進位 十六進位 互轉
負數的二進位表現形式(反碼)
對應的正數二進位取反加1
比如: -6
6      00000000 00000000 00000000 00000110
  取反 11111111 11111111 11111111 11111001
  +1                                     1
 --------------------------------------------------------------------------------
       11111111 11111111 11111111 11111010
十進位-》十六進位   方法 :方法先將十進位轉換成二進位  再將二進位轉換成(四個位代表一個位)十六進位
比如: 90 ----> 0101 1010 ---->0x5A
2.變數
變數的概念:

  • 記憶體中的一個儲存地區
  • 該地區有自己的名稱(變數名)和類型(資料類型)
  • 該地區的資料可以在同一類型範圍內不斷變化

為什麼要定義變數:
用來不斷的存放同一類型的常量,並可以重複使用
使用變數注意:

  • 變數的作用範圍(一對{}之間有效)
  • 初始化值

定義變數的格式:資料類型 變數名
 
= 初始化值;

註:格式是固定的,記住格式,以不變應萬變。理解:變數就如同數學中的未知數。

資料類型

基礎資料型別 (Elementary Data Type)
   數值型
       字元型(char)
       布爾型(boolean)
       整數類型(byte, short, int, long)
       浮點類型(float, double)
引用資料類型
    類(class)
    介面(interface)
    數組( [ ] )
整數預設:int    小數預設:double
Java語言是強型別語言,對於每一種資料都定義了明確的具體資料類型,在記憶體總分配了不同大小的記憶體空間
3.類型轉換
自動類型轉換(也叫隱式類型轉換)
強制類型轉換(也叫顯式類型轉換)
類型轉換的原理
什麼時候要用強制類型轉換?
運算式的資料類型自動提升

  • 所有的byte型、short型和char的值將被提升到int型。
  • 如果一個運算元是long型,計算結果就是long型;
  • 如果一個運算元是float型,計算結果就是float型;
  • 如果一個運算元是double型,計算結果就是double型。

分析:
System.out.println(‘a’)與System.out.println(’a’+1) 的區別。

System.out.println('a');//輸出 a

System.out.println('a'+1);//'a'進行型別提升 結果是97+1=98
自動型別提升
byte b = 3;
int x = 4;
x = x + b;//b會自動提升為int類型進行運算。
強制類型轉換
byte b = 3;
b = b + 4;//報錯
b = (byte)b+4;//強制類型轉換,強制將b+4的結果轉換為byte類型,再賦
值給b。
思考:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是編譯失敗的呢?為什麼呢?
short s=3;
s=s+2;  //編譯失敗   s+2結果是整型,無法用short接收
s+=2   //編譯通過, +=兩邊的數運算後 兩邊會自動進行型別提升
算術運算子的注意問題:如果對負數模數,可以把模數負號忽略不記,如:5%-2=1。但被模數是負數就另當別論。
對於除號“/”,它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而捨棄小數部分。

例如:int x=3510;x=x/1000*1000; x的結果是 0

“+”除字串相加功能外,還能把非字串轉換成字串 ,

例如:System.out.println("5+5="+5+5);//列印結果是?
  System.out.println("5+5="+5+5);//輸出: 5+5=55
賦值運算子
符號:
= , +=, -=, *=, /=, %=
樣本:
int a,b,c;  a=b=c =3;
int a = 3;   a+=5;等同運算a=a+5;
比較子
4>=3   true(大於或者等於其中一個滿足就true)
 注1:比較子的結果都是boolean型,也就是要麼是true,要麼是false。
 注2:比較子“==”不能誤寫成“=” 。
邏輯運算子
邏輯運算子用於串連布爾型運算式,在Java中不可以
寫成3<x<6,應該寫成x>3 & x<6 。
“&”和“&&”的區別:

  • 單&時,左邊無論真假,右邊都進行運算;
  • 雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算。

“|”和“||”的區別同理,雙或時,左邊為真,右邊不參與運算。
異或( ^ )與或( | )的不同之處是:當左右都為true時,結果為false。
位元運算符

  • << 空位補0,被移除的高位丟棄,空缺位補0。
  • >>被移位的二進位最高位是0,右移後,空缺位補0;最高位是1,空缺位補1。
  • >>> 被移位二進位最高位無論是0或者是1,空缺位都用0補。
  • & 二進位位進行&運算,只有1&1時結果是1,否則是0;
  • | 二進位位進行 | 運算,只有0 | 0時結果是0,否則是1;
  • ^任何相同二進位位進行 ^ 運算,結果是0;1^1=0 , 0^0=0不相同二進位位 ^ 運算結果是1。1^0=1 , 0^1=1
  • << 空位補0,被移除的高位丟棄,空缺位補0。
  • >>被移位的二進位最高位是0,右移後,空缺位補0;最高位是1,空缺位補1。
  • >>> 被移位二進位最高位無論是0或者是1,空缺位都用0補。
  • & 二進位位進行&運算,只有1&1時結果是1,否則是0;
  • | 二進位位進行 | 運算,只有0 | 0時結果是0,否則是1;
  • ^任何相同二進位位進行 ^ 運算,結果是0;1^1=0 , 0^0=0不相同二進位位 ^ 運算結果是1。1^0=1 , 0^1=1
  • 左移:<<   高位向左移動,低位用0補齊。實際上是被移數乘以2的移動位元次冪
  • 右移:>>   低位向右移動,高位如果移動的數是負數用1補齊  正數用0補齊,實際上是被移動數除以2的移動位元次冪

2<<3  =  2* 2^3=2*8=16      6>>2 = 6/2^2=6/4=1
一個數異或一個數兩次 等於原數
比如  7^4^4  =7  (可以用來加密解密)
不設定第三變數 交換兩個變數
n=n^m;
m=n^m;    //n^m=(n^m)^m=n
n=n^m;    //n^m=(n^m)^n=m
三元運算子
格式

  • (條件運算式)?運算式1:運算式2;
  • 如果條件為true,運算後的結果是運算式1;
  • 如果條件為false,運算後的結果是運算式2;

樣本:
擷取兩個數中大數。
int x=3,y=4,z;
z = (x>y)?x:y;//z變數儲存的就是兩個數的大數。
public class Test{
public static void main(String[] args)
{
   char x='Y';
   int i=1;
   System.out.println(true? x:i);
   System.out.println(false ? 1:x);
}
} 這個輸出為什麼是89和Y,不是Y和Y呢?
分析:
(1)如果運算式1和運算式2具有相同的類型,那麼整個條件運算子結果的類型就是這個類型。

(2)如果一個運算式的類型是T,T是byte或short或char,另一個運算式的類型是int類型的常量運算式,

而且這個常量運算式的值是可以用類型T表示的(也就是說,常量運算式的值是在類型T的取值範圍之內),

那麼整個條件運算子結果的類型就是T。

(3)除以上情況外,如果運算式1和運算式2的類型不同,那麼將進行型別提升,整個條件運算子結果的類型就是提升後的類型。

System.out.println(true?x:0); / /運算式1是char類型,運算式2是int類型的常量運算式,

而且這個常量運算式的值0可以用char類型來表示,因此整個條件運算子結果的類型就應當是char類型,所以輸出的結果就是'A'。

System.out.println(true?x:1111111110); 。運算式1是char類型,運算式2是int類型的常量運算式,

但是這個常量運算式的值已經超出了char類型的取值範圍,因此要進行型別提升,把char型別提升為int類型,

整個條件運算子結果的類型就是int類型了,所以輸出的結果是65(字元A的ASCII碼)。

System.out.println(false?i:x); / /運算式1是int類型的變數,運算式2是char類型的變數,

有常量運算式。因此要進行型別提升,把char型別提升為int類型,整個條件運算子結果的類型就是int類型。所以輸出結果就是65。

程式流程式控制制
(1)判斷語句if
1.  if(條件運算式)
{
執行語句;
}
2.  if(條件運算式)
{
執行語句;
}
else
{
執行語句;
}
3.  if(條件運算式)
{
執行語句;
}
else if (條件運算式)
{
執行語句;
}
……
else
{
執行語句;
}
if語句特點:
a,每一種格式都是單條語句。
b,第二種格式與三元運算子的區別:三元運算子運算
完要有值出現。好處是:可以寫在其他運算式中。
c,條件運算式無論寫成什麼樣子,只看最終的結構是
否是true 或者 false;
(2)選擇語句 switch
 switch語句 格式:
switch(運算式)
{
case 取值1:
執行語句;
break;
case 取值2:
執行語句;
break;
…...
default:
執行語句;
break;
}
switch語句特點:
a,switch語句選擇的類型只有四種:byte,short,int , char。
b,case之間與default沒有順序。先執行第一個case,沒有匹配的case執行default。
c,結束switch語句的兩種情況:遇到break,執行到switch語句結束。
d,如果匹配的case或者default沒有對應的break,那麼程式會繼續向下執行,運行可以執行的語句,直到遇到break或者switch結尾結束。
************
switch()語句裡面接收四種型別參數 byte  short  char int   JDK5.0支援枚舉   JDK7.0支援字串
int c=5;
switch (c)
{
default:
System.out.println("default");
break;
case 1:
System.out.println("11111111");
break;
case 2:
System.out.println("2222222");
break;
case 3:
System.out.println("3333333");
case 4:
System.out.println("4444444");
break;
case 5:
System.out.println("5555555");

}  //不會執行 default 因為執行完case 5後碰到大括弧了
int c=6;
switch (c)
{
default:
System.out.println("default");
case 1:
System.out.println("11111111");
case 2:
System.out.println("2222222");
break;
case 3:
System.out.println("3333333");
case 4:
System.out.println("4444444");
break;
case 5:
System.out.println("5555555");
break;
}//先每個判斷一次,沒有合格,會執行 default 接著case 1  case 2遇到break才停止
(3)迴圈結構
代表語句:while , do while , for
do while特點是條件無論是否滿足,
迴圈體至少被執行一次。
其他流程式控制制語句:
break(跳出),
continue(繼續)
break語句:應用範圍:選擇結構和迴圈結構。
continue語句:應用於迴圈結構。
註:
a,這兩個語句離開應用範圍,存在是沒有意義的。
b,這個兩個語句單獨存在下面都不可以有語句,因為執行不到。
c,continue語句是結束本次迴圈繼續下次迴圈。
d,標號的出現,可以讓這兩個語句作用於指定的範圍。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.