程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java學習筆記(2),java學習筆記

Java學習筆記(2),java學習筆記

編輯:JAVA綜合教程

Java學習筆記(2),java學習筆記


有不足之處,請大家指出

一、 基礎知識

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);

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved