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