搜索oracle,進入網站,à Downloads –> JavaSEI à 選第一個下載(其實java 8u111和8u112的區別就是在8u111的基礎上優化了一下,升了下級,實際使用沒什麼區別的)
其次注意一下選32位還是64位,是Liunx系統還是Windows系統,其中X86指的是32位
最後:在圖中選中第一個按鈕同意,如果不選默認是第二個不同意
顯示的一般都是最新的版本,如果要下載舊版本通過搜索可以找到
Java的環境變量有path環境變量和classpath環境變量。在編譯的過程中,我們無法同時運行JDK(Java的開發工具:java development kit)和你在記事本編寫好的java程序,所以設置path的環境變量實際就是安裝JDK的路徑,這樣,你在運行的時候就可以直接輸入你編程的程序路徑就好了,而不用輸入JDK的路徑
1.在記事本編寫完程序後忘了保存
2.寫完保存好代碼後,在cmd運行時輸入路徑要輸入正確的路徑
3.編譯字節碼文件:javac 文件名 回車
4.運行代碼: java 類名 注意這兒不是文件名
5.寫固定語句出錯,尤其是寫main函數寫錯的時候,運行時並不會報錯,因為那個還是函數,只是變成了普通函數了,一定要注意的一點
Java的源文件擴展名是.java, 字節碼文件擴展名是.class
對於初學者,多練、多問、自己主動去調試、復習和總結是自我感覺最好的學習方法
1、Java中的關鍵字是用來一些特殊用途的詞,在Java中關鍵字嚴格區分大小寫
2、標識符是用來在程序中定義變量、類、方法等的命名符號
<1、命名:使用駝峰命名法,第一個單詞的首字母大寫,其它的首字母小寫。而且變量名要見名知意。
<2、使用:
可以先聲明一個或多個變量,再賦值;
也可以在聲明一個變量的時候直接賦值
如:
int a1,a2,a3,a4; a1 = 10; int a= 10; char c = 'a'; short s= 10
注意:要先聲明後使用,先賦值才能輸出
<1、基本數據類型:常見的用int、char、boolean、byte等類型,存的是本身
<2、引用數據類型:String、class、數組等,存的是數據的空間地址
凡是short ,byte ,char 定義的變量,在做運算的時候數據類型都會自動轉換為int
兩個不同數據類型做運算,給過取決於大的數據類型。
目標類型和源文件類型要兼容 如int型就不能兼容char型和字符串型
如:
short s= 100; int i = s; // 自動類型轉換 int num1 = 10; float num2 =10.0f;//默認是double ,float就在數據後面加f
小數據轉換成大數據:目標類型要大於源類型 如int類型可以轉換成double類型,但是反過來就會出錯
大數據轉換成小數據:就像上述講的,自動類型轉換不能講int類型轉換成double類型,可以通過強制轉換,但是建議少用,因為可能會造成數據丟失。
long l = 100000L; // 長整型的需要在後面加一個L int a = (int)l; // 強制類型轉換 ,也是通過變量前面用小
整數常量的表現形 à進制的形式表示(二進制、八進制、十進制、十六進制)
在生活中:還有其他的進制,如星期(七進制 0-6)、時間(十二進制 (0-11))、二十四進制(0-23)
計算機使用二進制來讀取生活中的數據,計算機只能識別0和1,就像開關一樣只有兩種方式
十進制轉換成二進制:將這個數除於2取余,直到商為0,將余數從下至尚連接起來就是二進制的數
二進制轉換成十進制:從左至右將二進制的每一位乘以2 ^(n-1),然後相加,就是十進制
八進制和十進制以及十進制和十六進制的轉換是一樣的原理
二進制轉成八進制:
思路一:二進制à 十進制à 八進制
思路二:一個八進制相當於三個二進制,將二進制三位分割成一位
010 100 101 = 245
第二種思路比較簡單,也就是8421碼,是最常見的BCD編碼,將二進制換成十六進制,也是相同的原理:
一個十六進制相當於四個二進制,將二進制四位分割成一位
0000 1010 0101 = a5
十六進制的表示:1-9,10-15用A-F表示
short s1 = 10; short s2 = 20; short s3 = s1 + s2; // 報錯, s1和s2做運算時會自動變為int類型 //正確的寫法: int = s1 + s2; short s3 = (short)(s1 + s2); //常見錯誤題:
int a = 10; int b = a++; b =10 a =11 //++在後 先賦值後運算 int b1 = ++a; b1 =12 a =12 //++在前 先運算在賦值,減減一樣
常見錯誤題:
int a = 0; a+=10; // a = a + 10; short b = 10; short c = 5; b+=c; // b = b + c //沒有問題. 會轉成int時再自動強轉為short //b = b+c; //下面這種寫法是錯誤的。
關系型運算符 (比較運算符) : 結果只有一種是boolean類型, 要麼是true(對) ,要麼是false(錯)
如果判斷基本數據類型,比較的變量的兩個值。
如果是比較引用類型,比較的是引用的地址值
&& 和 &區別和聯系:
相同點 : 結果是一樣的
不同點 :如果用雙&號判斷,如果說條件一為false,不會判斷條
件二,但是單&號會繼續判斷
|| 和 |
相同點 : 結果一樣。
不同點 : 如果用||號判斷,如果說條件一為true,不會判斷條
件二,但是單|號會繼續判斷
它是對二進制位進行計算。
位運算符是可以對十進制的整數進行計算,計算方式:將十進制轉為二進制進行計算。
二進制由0和1組成,所以計算的結果要麼是0,要麼是1
int a = 6; int b = 3; System.out.println(a&b); // 2
/*原理: 1111-1111 1111-1111 1111-1111 1111-0110 6 & 1111-1111 1111-1111 1111-1111 1111-0011 2 1111-1111 1111-1111 1111-1111 1111-0010 =2 */
int a = 6; int b = 3; System.out.println(a|b); // 7 /* 1111-1111 1111-1111 1111-1111 1111-0110 6 | 1111-1111 1111-1111 1111-1111 1111-0011 2 1111-1111 1111-1111 1111-1111 1111-0111 =7 */
int a = 6; int b = 3; System.out.println(a^b); // 5 /* 1111-1111 1111-1111 1111-1111 1111-0110 6 ^ 1111-1111 1111-1111 1111-1111 1111-0011 2 1111-1111 1111-1111 1111-1111 1111-0101 =5 */
int a = 6; int b = 3; System.out.println(~a); // -7 /* ~ 1111-1111 1111-1111 1111-1111 1111-0110 6 1111-1111 1111-1111 1111-1111 1111-1001 =-7 */
如圖6取反為-7,-7取反同樣是6,所以個人得出結果是:正數取反變為負數再-1,負數取反變為正數也-1
負數的表現形式: 二進制位的最高位為1,那麼這個數就是一個負數。
/* 1111-1111 1111-1111 1111-1111 1111-1111 : -1 0000 0000 0000 0000 0000 0000 0000 0000 : 0 -2:1111-1111 1111-1111 1111-1111 1111-1110 -3:1111-1111 1111-1111 1111-1111 1111-1101 -4:1111-1111 1111-1111 1111-1111 1111-1100 -5:1111-1111 1111-1111 1111-1111 1111-1011 -6:1111-1111 1111-1111 1111-1111 1111-1010 -7:1111-1111 1111-1111 1111-1111 1111-1001 0000-0000 0000-0000 0000-0000 0000-0111 = 7 */
規律:正數取反變為負數-1
負數取反變為正數-1
作用:數據進行加密
如123456可以0-100 和a-z26字母組成,再加上&、|、^、~等位運算符的應用
如:24845845957512317580960 --- >123456
1 >> 右移
2 << 左移
3 >>> 無符號右移
右移: System.out.println(6>>1); // --->3 6/2 2*1 System.out.println(6>>2); // --->1 6/4 2*2 System.out.println(6>>3); // --->0 6/8 2*3 System.out.println(6>>4); System.out.println(9>>1); // --->4 9/2 2*1 System.out.println(9>>2); // --->2 9/4 2*2 System.out.println(9>>3); // --->1 9/8 2*3 System.out.println(9>>4);// --->0 9/16 System.out.println(-6>>1); // -6/2 -->-3 規律: 右移多少位,就用需要移動的數除以2的多少次方。
/* 左移 : System.out.println("-----這個是左移的結果----------"); System.out.println(6<<1); // --->12 6*2 2*1 System.out.println(6<<2); // --->24 6*4 2*2 System.out.println(6<<3); // --->48 6*8 2*2*2 System.out.println(6<<4); //---->96 6*16 2*2*2*2 System.out.println(-6<<2);//--->-24 規律: 左移多少位,就用這個數乘以2多少次方。 */
/* //>>>無符號的右移 System.out.println(6>>>1); //3 System.out.println(6>>>2); //1 System.out.println(-6>>>2); // 1073741822 原理:正數的無符號右移與普通右移原理相同 */
作用 : 提高運算速率。位運算是執行最快。
比如: 以最快的方式計算 2*8
2<<3 == 2*8 = 16
也叫三目運算符:
結構:
條件?條件成立執行的結果 :條件不成立執行結果 ;
class Demo1 { public static void main(String[] args) { int a = 10; int b = 9; int c = b++>=a ? a++ : b+a; //注意這兒的b++>=a 是先執行b>=a,然後再執行b++,因為++在後先賦值在運算,這兒會經常搞錯的。然後別忘了b++,再執行b+a,所以c值是20;而不是11 / 19 System.out.println(a); //10 System.out.println(b); //10 System.out.println(c); //20
//需求:Java中兩個值交換的三個方法: //1.借助中間量 int x = 10; int y = 20; int temp = x; x = y; y = temp; //2.數值加減 int x = 10; int y = 20; x = x + y; y = x - y; x = x - y; //3.位移運算交換 x = x^y; y = x^y; x = x^y; //System.out.println(y^x^x); //System.out.println(x^y^y);