日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础知识总结(一)

發布時間:2025/3/15 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础知识总结(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《Java基礎知識總結》系列是對自己學習Java歷程中知識的一個總結,也是為自己找工作前知識的回顧,為找工作奠定基礎。

?

  1、Identifiers:標識符

   ①Names?of?class,method?and?variable:用于類名、方法名、變量名

  ②Begin?with?character,"_"?or?"$":標識符不能以數字開頭

  ③Case?sensitive:大小寫敏感(區分大小寫)

  ④No?length?limitation:長度無限制

  ⑤標識符不能是Java關鍵字,漢字也可以做標識符,但是不建議使用(使用漢字涉及到編碼問題,跨平臺時回出現問題)。

  ⑥StringJava的一個類,類名是標識符,所以String可以做標識符。

  ⑦There?is?no?sizeof?operator.Java中沒有sizeof運算符,所以sizeof可以作為標識符

  ⑧關鍵字、保留字(const、goto、true、false、null)不能用作標識符。

1 public class Identifiers { 2 public static void main(String[] args) { 3 String $abc="abc1"; 4 String _abc="abc2"; 5 //編譯錯誤,標識符不能以數字開頭 6 //String 8abc="abc3"; 7 String 中國="China"; 8 String String="wanghao"; 9 int Integer=22; 10 //Java中沒有sizeof運算符,所以sizeof可以作為標識符 11 String sizeof="sizeof"; 12 System.out.println(String);//wanghao 13 System.out.println(Integer);//22 14 } 15 }

?

  2、Keywords關鍵字

  The?goto?and?const?keyword?are?not?used?in?the?Java?programming.

  const?保留關鍵字(留兒不用)。const是從C++繼承而來的,但是Java并不使用const這個關鍵字,由于JVM是由C++編寫的,因此,雖然Java并不使用const這個關鍵字,但卻要保留下來。和const一樣goto也是保留關鍵字!

  關鍵字全部用小寫表示(53個)

  Strictly?speaking,the?literals?true,false,and?null?are?not?keywords?but?literals;however,the?distinction?is?academic.

true,false,and?null是保留字但不是關鍵字,只是3個值,不能用來做關鍵字。

  

?  3、Primitive data types:基本數據類型

  Java強數據類型只能先聲明后使用。

  boolean????Boolean?literals?indicating?true?or?false

  char???????Stores?one?16-bit?unicode?character

    char?同時具備字符和整數的特征。 

  byte???????8-bit?integer

  short??????16-bit?integer

  int????????32-bit?integer

  long???????64-bit?integer

    Integer?Data?Types-byte,short,int?and?long

  float???????32-bit?floating-point?number

  double?????64-bit?floating-point?number

  在范圍內的常數可以自動轉換類型,但是變量就不一定了。

  小————》大??自動轉換

  大————》小??強制類型轉化

  Byte相當于截取了最后8位,前面的全部舍去

1 public class Demo { 2 public static void main(String[] args) { 3 int i1 = 5; //語句1 Right 4 5 byte b1=5; //語句2 Right 6 byte b2=3; //語句3 Right 7 //byte b3=128; //語句4 Wrong 128超出了byte的范圍 8 byte b3=(byte)128; //語句5 Right 9 //byte的取值范圍:(-128,127) 10 byte b4=127; 11 byte b5=-128; 12 //byte b6=-129; //-129超出了byte的范圍 13 14 long l1=5; //語句6 Right 15 long l2=5L; //語句7 Right 16 //b1=i1; //語句8 Wrong i1不能轉換成b1 17 b1=(byte)i1; //語句9 18 l1=i1; //語句10 Right 19 //i1=123L; //語句11 Wrong 20 i1=(int)123L; //語句12 21 22 //b1=b1+b2; //語句13 Wrong b1+b2變成int 23 b1=(byte)(b1+b2); //語句14 24 } 25 }

  程序分析:

  整形數據默(byte,short,int?and?long)認類型是int型,因此語句1正確

  ?占用位數小的類型(簡稱“小類型”)向占用位數多的類型(簡稱“大類型”)可以自動轉換,相反,大類型到小類型則要通過強制類型轉換。

?    ?如:語句6是由int---->long(自動轉換)

    語句11是由long---->int(不能進行轉換,提示“可能損失精度”的錯誤),必須通過強制類型轉換,改正后為語句12

  ?語句2和語句3是由int---->byte(自動轉換),這又是怎么回事呢?

    int可自動轉換為byte和short而無需強制類型轉換,這是因為byte和short表示的范圍較小,所有小于int的整型運算,先轉換為int類型,再參與運算。例如:1520都在byte范圍內但是15*20卻超出了byte的表示范圍,則要存放在int類型變量里面。

   既然int可以自動轉換為byte和short而不需強制類型轉換,那么為什么語句8會出錯,需要改成語句9這樣的強制類型轉換呢?

    語句8表面上是int---->byte但是i1是一個int型的變量,它表示(-65535----65535)范圍的整數,不能確定它的值,因此需要強制類型轉換。語句4中128超出了byte的表示范圍,因此不能賦值給byte變量b3需要進行強制類型轉換,如語句5。

   強制類型轉換的實質是什么呢?

    例如語句5執行的結果是:-128,這是為什么呢?

      這正是強制類型轉換后的結果。int類型是32-bit128的二進制表示形式為:00000000,00000000,00000000,10000000Byte類型是8-bit,要把int類型強制轉換成byte類型,則只截取其后8-bit,把前24-bit去除掉。因此byte?b3=(byte)128;執行后的結果的二進制表示形式為:10000000,對應的整數即為-128

  ?所有小于Int的整型運算,先轉成int?再運算,因此語句13出現錯誤,需要進行強制類型轉換,如語句14

1 public class Float { 2 public static void main(String[] args) { 3 double d1=123.0; 4 double d2=123.0F; 5 //編譯錯誤 Default data type is double 6 //float f1=123.0; 7 //需要強制類型轉換 8 float f1=(float)123.0; 9 10 //int和long可以自動轉換為float和double 11 float f2=123; 12 float f3=123L; 13 double d3=123; 14 double d4=123L; 15 } 16 }

  Float?Point?Data?Type-float?and?double

   Default?data?type?is?double

   A?float?data?is?32-bit?long

   A?double?data?is?64-bit?long

   A?float?data?ends?with?'f'?or?'F'

   A?double?data?can?end?with?'d'?or?'D'

     在計算機領域對于floatdouble只能表示他們的近似值。因為小數可以無限,但是計算機表示的精度是有限的。

  intlong可以自動轉換為floatdouble

?

  Java變量類型:

  ① 基本類型:boolean,byte,char,shot,int,long,float,double

  ② 引用類型:所有類、接口、數組、枚舉、標注

  

  Recommended?Naming?Rules

  ① Class?names?begin?with?uppercase?character

  ② Interface?names?begin?with?uppercase?character

  ③ Method?names?begin?with?lowercase?character

  ④ Variable?names?begin?with?lowercase?character

  ⑤ Constant?variable?names?are?in?uppercase?character,不同單詞間用“_ 隔開,例如:USER_NAME

  ⑥ Package?names?are?in?lowercase?character

  規范我們可以違背,但是我們提倡遵守,養成一種良好的習慣!

?

  4、Operators  

  Assignment?operators

  =???+=???-=???%=???*=???/=????<<=?????>>=?????>>>=??? &=????^=??????|=

1 public class ByteDemo { 2 public static void main(String[] args) { 3 byte b1=2; 4 byte b2=3; 5 b1=(byte)(b1+b2); // 語句1 加法,轉int 6 b1+=b2; //語句2 賦值,不轉int 7 } 8 }

  b1+=b2;是否和語句b1=b1+b2完全等價?

    答案是否定的,上面程序中的語句1和語句2給出了證明。語句1中byte類型參數與運算時要先轉換為int型,因此要進行強制類型轉換。而語句2中,自動進行類型轉換。(我的理解:我們可以把“b11+=b2;”看做是對“b1=(byte)(b1+b2);”的優化!)

  Comparison?operators

  >????>=?????<?????<=?????instanceof

  Equality?operators

  =?=????????!=

  Arithmetic?operators

  +???????-???????*???????/????????%

  Shift?operators

  >>???<<????>>>

  Bitwise?operators

  &?????|??????^(按位異或)???~(按位取反)

  Logic?operators

  &&??(邏輯與)?&??????||??(邏輯或)??|??????!(邏輯非)

  &&&都是邏輯與,它們之間的區別:&&是短路邏輯與,有短路的效果,效率更高。

  |||都是邏輯或,它們之間的區別:||是短路邏輯或,有短路的效果,效率更高。

  Conditional??operators

  ??:

  Other?operators

  ++????--

1 public class Test5 { 2 public static void main(String [] args){ 3 int i=2; 4 System.out.println(i++); //2 5 System.out.println(i); //3 6 int a=i++ + ++i; //3+5=8 7 System.out.println(a); 8 System.out.println(i); //5 9 for(int j=0;j<1000;j++){ 10 i=i++; 11 } 12 System.out.println(i); //5 13 } 14 }

  程序分析:

  為什么經過1000次循環后,i=i++;的結果仍然是5?

  (老師講解)++的運算符優先級高于=(賦值)運算符,i++的運算結果為5,進入寄存器,這時寄存器中存放的值為5。然后i的值變為6,繼續執行賦值語句,賦值時,把寄存器中的值賦5值給i,因此i的值是5和6之間來回切換的!

  (我的理解)++的運算符優先級高于=(賦值)運算符,因此這個表達式的執行順序如下:①運算i++這個表達式的結果為5?---->?i的值自加1(i++先參與運算,再自加1),即i的值變為6---->?③將i++這個表達式的值,即第①部的結果賦值給變量i("="表達式是將右邊表達式的值賦值與左邊的變量,因此是將5賦于i,而不是將6賦于i)。整個循環過程i的值在56之間來回切換。

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/gw811/archive/2012/09/09/2677453.html

總結

以上是生活随笔為你收集整理的Java基础知识总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。