java基礎總結day1

---------------------- android培訓java培訓、期待與您交流! ----------------------

學習java有一段時間了,但之前一直沒總結,學到後面忘前面的,現在開始每天一些總結,強化記憶,便於複習

 

一:什麼是JRE,JDK?
1.JRE(Java Runtime Environment Java運行環境)
  包括Java虛擬機(JVM Java Virtual Machine)和Java程序所需的核心類庫等
  如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可。
 2.JDK(Java Development Kit Java 開發工具包)
   JDK 是提供給Java開發人員使用的,其中包含了Java的開發工具,也包含了JRE。所以安裝了JDK,就不用再單獨安裝JRE了
 其中的開發工具:編譯工具(javac.exe)運行(java.exe)打包工具(jar.exe)等

 總結:JDK包含JRE ,JRE又包含JVM 即JDK(JRE(JVM))。

二:環境變量Path和classpath的作用?
   簡單說:path是OS用的,classpath是java用的
1:path:path是系統用來指定可執行文件的完整路徑,即使不在Path中設置jdk的路徑也可以執行java文件,但
必須把完整的路徑寫出來,如C:\Program Files\Java\jdk1.6.0_10\bin\javac TheClass.java。path使用來搜索
執行的可執行文件的路徑的,如果可執行文件不在當前目錄下,那就會依次搜索path中設置的路徑,而java中的各種
操作命令是在其安裝路徑中的bin目錄下,所以在path中設置了JDK的安裝目錄後就不用再把java文件的完整路徑寫出來
了,它會自動去path中設置的路徑去找相應的命令。

2.classpath的作用:classpath是java執行時所需要的環境變量,java命令根據classpath所指定的路徑找到所需要的類(.class)
文件。
就是指定你在程序中所使用的類(.class)文件所在的位置,就如在引入一個類時:import javax.swing.JTable這句話是告訴編譯器
要引入javax.swing這個包下的JTable類,而classpath就是告訴編譯器該到哪裏去找到這個類(前提是你在classpath中設置了這個類的路徑)
;如果你想要在編譯當前目錄下找,就加上“.”,如:.;c:\Program Files\java\jdk\這樣編譯器就會到當前目錄和c:\Program Files\java\jdk
去找javax.swing.JTable這個類;
注意:java5.0以後,如果沒有設置classpath環境變量,java解釋器將會在當前路徑下搜索java類,但如果設置了classpath環境變量,一定不要忘記
在classpath 環境變量中增加“.”,強制java解釋器在當前路徑下搜索java類。還有大多數人都是用Eclipse寫程序,不設置classpath也沒關係,因爲
Eclipse有相關的配置。


環境變量設置:
系統變量:
JAVA_HOME:c:\Program Files\java\
path:%JAVA_HOME%\bin;
classpath:.;%JAVA_HOME%\lib;d:\daima\0619\class
注意:classpath 路徑前面一定要加“.”代表現在當前路徑下查找,如果沒有再到classpath變量中的路徑查找
      classpath 路徑中儘量不要使用漢字或空格,容易出錯,且環境變量最後不要加“;”結束
也可以直接在dos控制檯中修改設置,,且只對當前控制檯有效,如需重複,可以輸入start在開啓一個相同設置的dos控制檯

查看path和classpath環境變量
set path
set classpath
清空path和classpath環境變量
set path=
set classpath=
修改path和classpath
set path=haha;%path%
set path=%path%;hehe
start //新開啓一個保存當前設置的dos控制檯
set classpath=%classpath%;hehe //這裏只能加到後面,應爲classpath變量的第一個路徑必須是“.”
當然也可以不設置,默認就爲當前路徑,一旦修改了classpath 必須設置第一個路徑是“.”


三:java中標識符的命名規範:
1.包名:多個單詞組成的字母都小寫,如xxxyyyzzz
2.類和接口名:多個單詞組成時,所有單詞的首字母都大寫,如XxxYyyZzz
3.變量名和函數名:多個單詞組成時,第一個單詞的首字母小寫,第二個單詞開始每個單詞的首字母大寫
  如xxxYyyZzz
4.常量名:所有字母都大寫,多個單詞時每個單詞之間用“_”連接,如XXX_YYY_ZZZ

四:Java基本數據類型有哪些?
1.整數類型:
     byte  1個字節 8位   8*1
     short 2個字節 16位  8*2
     int  4個字節 32位  8*3
     long  8個字節 64位  8*4

2.字符類型:
           char  2個字節  16位

3.浮點類型:
     float 4個字節  32位
     double 8個字節  64位
4.布爾類型:
     boolean 1位

Java中的基本類型只有這八種,分爲兩類:數值類型和boolean類型,字符串不是基本類型數據,
字符串類型是一個類,也就是一個引用數據類型。
整數類型默認是int類型,小數類型默認是double類型


五:Java中的基本數據類型轉換?
1.自動類型轉換:
  遵循以下規則:
         char--->
                                int-->long-->float-->double
  byte-->short-->

  例:
 String str=5;// 編譯失敗,因爲5是一個整數,基本類型,不能直接賦給一個字符串,Java是強類型,必須先定義後使用
  byte b=5;  //賦值之前會先進行判斷如果常量“5”在byte範圍內,賦值成功,在內存中佔8位,如果超出範圍,損失精度,編譯失敗
       b=b+3;  //這裏byte類型和一個int類型的進行運算,b會自動提升成int類型,運算完成後佔32位,在賦給byte類型的b,超出範圍,損失精度,故編譯失敗
    b+=3  //編譯成功,底層有自動轉換機制,相當於b=(byte)(b+3),最後賦給b的還是byte類型
 float f=5; //結果會輸出5.0,int類型中提升成了float類型
 float f=5.0; //容易損失精度,編譯失敗,5.0默認是double類型,不能直接賦給float類型,要加f或F,float f=5.0f;  
 char c='a'+1;  //輸出結果爲b,相當於c=(char)('a'+1);與1運算自動提升成int類型98,最後在強轉成char類型輸出
      c=c+0;  //損失精度,編譯失敗,無法將一個運算結果爲int類型的值賦給一個char類型的變量

 任何基本類型的值和字符串值進行連接運算時,基本類型都將自動轉換成字符串類型如果希望基本類型轉換成對應的字符串時,可一個把基本類型值和一個空字符串進行連接
  例:
     String str=3.5f+"";  //輸出結果爲3.5爲字符串類型
  String str1=3+4.5+"Hello";  //輸出結果爲7.5Hello,先執行3+4的加法運算,從左到右
  String str2="Hello"+3+4.5; //結果爲Hello34.5,先執行Hello+3的運算,得到一個Hello3的字符串
  String str2="Hello"+(3+4.5); //結果爲Hello7.5,()優先級高,先運算
  String str3=true+"Hello"+false; //結果爲trueHellofalse
  String str3=true+false+"Hello"; //編譯失敗,boolean類型不能進行算術運算


2:強制類型轉換
 
   強制類型轉換的運算符是“()”,即 (targetType目標類型)value
   強制類型轉換類似於吧一個大瓶子裏的水倒入一個小瓶子,如果大瓶子裏的水不多還好,如果大瓶子裏的水很多,將會引起溢出,造成數據丟失

   int iValue=233;
   byte bValue=(byte)iValue;  //結果輸出爲-23
   double dValue=3.98;
   int tol=(int)dValue; //輸出結果爲3;
 


六:網頁上臨時生成的驗證字符串?

思路:先隨機生成一個指定範圍內的int類型數字(如果希望生成小寫字母,就在97~122之間),然後在將
      其強制轉換成char類型,在將多次生成的字符連綴起來即可
 public class RandomStr
 {
  public static void main(String[] args)
  {
   String result="";
   for (int i=0;i<4; i++)
   {
    int iValue=(int)(Math.random()*26+'A'); //生成一個0~26的僞隨機數,包括0,不包括26
    result=result+(char)iValue;
   }
   System.out.println(result);
  
  }
 
 
 }

七:最有效率的計算出2*8等於幾?
    2<<3
 左移n位就相當於乘以2的n次方,右移n位則是除以2的n次方。需要注意的是左移時,左邊捨棄的位中的數字通常是無效的,但右移時右邊捨棄
 的位常常是有效的,移位運算不會改變操作數本身,只是得到了一個新的運算結果。

 必須指出的是,>>,>>>,<<<移位運算符並不適合所有的數值類型,他們只適合對byte、short、char、int、long等整數類型進行運算

 對於int類型的整數移位 a>>b,當b>32時,系統會先用b對32求餘數(因爲int類型只有32位),得到的結果纔是真正移位的位數,例如a>>33和a>>1
 的結果完全一樣,而a>>32的結果和a相同

 對於long類型的整數移位a>>b,當b>64時,總是先用b對64取餘(因爲long類型是64位),得到結果纔是真正移位的位數。

八:對兩個整數類型的變量進行互換,不需要第三方變量?
 int a=3,b=5; 
  a=a+b;  //如果a和b足夠大,結果超出了int範圍,容易損失精度,不推薦
  b=a-b; //(a+b)-b
  a=a-b; //(a+b)-a
 System.out.println("a="+a+",b="+b);
 
 //技巧型
 int a=3,b=5;
  a=a^b;
  b=a^b; //a^b^b
  a=a^b; //a^b^a
 System.out.println("a="+a+",b="+b);

 //開發常用定義第三方變量
 int temp=a;
  a=b;
  b=temp;
 System.out.println("a="+a+",b="+b);

 

結合java視頻和書中內容,寫的總結,便於複習基礎知識。

 

---------------------- android培訓java培訓、期待與您交流! ----------------------詳細請查看:http://edu.csdn.net/heima
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章