今天開始學習Java,看的是[畢向東_Java基礎視頻教程].因為沒有書,將筆記寫寫在博客上可以備忘和記錄學習里程。同時希望通過寫博客的形式可以讓自己學習Java更有動力。
01day
1.Java跨平台性
Java的跨平台性的主要原因是因為java虛擬機(JVM)的存在。
2.JRE和JDK
JRE是Java運行環境,全拼是(Java Runtime Environment),JRE包括Java虛擬機和運行Java程序所需要的核心庫。想要運行一個java程序,在計算機上安裝JRE就可以了。
JDK是Java開發工具包,全拼是(Java Development Kit),JDK是提供給Java開發人員使用的。其中包括了開發Java程序的所用工具,還包括JRE。
3.doc系統命令
cd 進入路徑 cd..返回上層目錄 cd\ 返回盤符
dir 列出當前目錄 md 創建文件夾 kd 刪除文件夾
4.JDK環境變量配置
//JDK安裝路徑 JAVA_HOME C:\Java\jdk1.7.0_51 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
5.hello world
class Demo
{
static void main(String [] args) { System.out.println("Hello World"); } }
在命令行中通過javac編譯后,然后 java Demo.class 就可以在doc控制台上打印一個Hello Wrld 了。
02day
1.Java關鍵字
Java關鍵字是被Java語言賦予特殊含義的單詞。
2.標識符
標識符就是在程序中自定義的名稱,這些名稱由字母、數字和符號組成。標識符需要符合兩個規則: 1.數字不可以在開頭 2.不可以使用關鍵字
在起名字時,為了提高代碼的可閱讀性,名字要盡量有意義。
3.代碼注釋
// 注釋一行
/*
注釋多行
*/
4.常量和變量
常量就是不能改變的數值。在Java中常量包括整數常量、小數常量、布爾型常量、字符串常量、null常量。
變量:就是將不確定的數據進行存儲,也就是在內存中開辟一個空間存儲數據。
變量的定義:
數據類型 變量名 = 初始化值; eg. int i = 0;
什么時候定義變量? 當數據不確定,需要對數據進行存儲的時候就定義一個變量用來完成存儲。
在Java中數據類型包括:基本數據類型(byte、short、int、long、float、double、char、boolean)和引用數據類型(class、interface、[](數組))
int x=4;
byte b =2 //-128~127
short s = 30000; //3W+
long l = 4l; float f = 2.3f; double d = 24.46; char ch = '4'; boolean bo = true;
5.類型轉換
class D2Byte
{
public static void main(String[] args) { byte b = 4; //b = b + 5; b += 5; System.out.println(b); //b= b + 5; 編譯不通過,這里是先經行加法然后賦值,相加以后會默認轉化為int型。賦值的時候int型不能給byte型賦值。 //b += 5; 編譯通過,這里+=運算符會默認進行強制轉換。 } }
6.字符串拼接
class StringDemo
{
public static void main(String[] args) { string a = "LiMing"; int b = 23; System.out.println("hello, "+a+" you age is"+b+"."); } }
字符串數據和任何數據使用+都是相連接,最終都會變成字符串。上面的程序運行后會打印出: hello, LiMing you age is 23.
7.轉義字符:(通過\ 來轉變后面字符或者符號的含義)。
\n :換行。
\b : 退格。
\r :按下回車鍵。
\t : 制表符。
8.賦值運算符
+= -= *= /= %=
9.邏輯運算符
邏輯運算符用於連接Boolean類型的表達式
& 與:&可以看成是數字0,在判斷的時候只要出現0就是false
| 或:|可以看成是數字1,在判斷的時候只要出現1就是true
^ 異或:總結起來就是,同假異真。
! 非:非就是取反,取反表達式后假就是真,真就是假
&& 邏輯與:判定跟&差不多。區別就是 當使用&&的時候,左邊出現false后立即得出判斷結果(邏輯短路), &&右邊的表達式不會進行判斷而使用 & 兩邊的表達式都參與運算。
|| 邏輯或:判定跟|差不多。 區別就是 當使用||的時候,左邊出現true后立即得出判斷結果(邏輯短路), ||右邊的表達式不會進行判斷而使用 | 兩邊的表達式都參與運算。
10.位運算符(位運算是直接對二進制數就行運算)
<<:左移 eg. 3<<2 = 12 --> 3*2*2 =12 左移就是乘以2的移動位數次冪
3的二進制表現形式:0000-0000-0000-0011 -->左移2位補位后就是00-0000-0000-0011--> 0000-0000-0000-1100=12
>>:右移 eg. 3>>1 =1 --> 3/2 = 1 右移就是除以2的移動位數次冪
3的二進制表現形式:0000-0000-0000-0011 -->右移1位補位后就是00000-0000-0000-001--> 0000-0000-0000-0001=1
>>>:無符號右移 eg. 3>>>1 = 1 --> 3/2 = 1
>>:右移后,最高位補位由原來的數據的最高位而定。如果最高位位0,則右移后用0補位,如果最高位為1,則右移后用1補位
>>>:無論最高位是什么,右移后用0補位
&與運算 eg. 6 & 3 = 2
0000-0000-0000-0110 & 0000-0000-0000-0011 ----------------------- 0000-0000-0000-0010 = 2
| 或運算 eg. 6 | 3 = 7
0000-0000-0000-0110 | 0000-0000-0000-0011 ---------------------------- 0000-0000-0000-0111 = 7
^異或運算 eg. 6 ^ 3 = 5
0000-0000-0000-0110 ^ 0000-0000-0000-0011 ---------------------------- 0000-0000-0000-0101 = 5
^異或的應用: 7^4^4=7 一個數異或同一個數兩次還是那個數。
應用1:用於加密
應用2: 不借助第三方兩個變量進行互
class D2nTom
{
public static void main(String[] args) { /* 不借助第三方兩個變量進行互換 */ int a = 10 ,b =50; System.out.println("不借助第三方兩個變量進行互換前: a= " +a +", b= "+b); //方法一 a= a+b; b= a-b; a= a-b; System.out.println("不借助第三方兩個變量進行互換后: a= " +a +", b= "+b); System.out.println("--------------------------------------------------"); /* 方法二 */ System.out.println("不借助第三方兩個變量進行互換前: a= " +a +", b= "+b); a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("不借助第三方兩個變量進行互換后: a= " +a +", b= "+b); } }
~反碼 eg. ~6 = -7
~ 0000-0000-0000-0110---->所有位取反
-----------------------------
1111-1111-1111-1001 ---> 先減一再取反的出整數 - 0000-0000-0000-0001 --->減一
---------------------------- 1111-1111-1111-1000 --->取反 ---------------------------- 1000-0000-0000-0111 =-7
10.條件運算符
(條件表達式)? 表達式1:表達式2
如果條件表達式的結果為true則執行表達式1的內容,如果條件表達式的結果為false則執行表達式2的內容。
int a=10,b;
b=(a>8)? 100:200; /*三目運算符: 好處:可以簡化 if else 代碼 弊端: 因為是運算時,所以運算完必須由一個結果。 */
11.判斷結構
//if語句:有三種形式
1.if(條件表達式)
{
執行語句;
}
2.if(條件表達式) { 執行語句; } else { 執行語句; } 3if(條件表達式) { 執行語句; } else if(條件表達式) { 執行語句; } ... ... ... else { 執行語句; }
12.選擇結構-switch語句
switch(表達式)
{
case 取值1: 執行語句; break; case 取值2: 執行語句; break; case 取值3: 執行語句; break; ... ... ... case 取值n: 執行語句; break; default: 執行語句; break; } /* switch的特點 1.switch語句選擇的類型只有四種: byte,short,int,char. 2.case與default之間沒有順序。先執行第一個case,直到沒有匹配的case后執行default。 3.結束switch語句的兩種情況,遇到break或執行到switch語句結束。 4.如果匹配的case或者default沒有對應的break,那么程序會繼續向下執行。運行可以執行的語句,直到遇到break或者說switch結尾后結束。
if和switch語句功能相似,具體情況怎么選擇呢?
如果判斷的具體數值不多,而且符合 byte short int char 這四種類型。雖然兩個語句都可以使用,建議使用switch語句,因為效果稍高。
其他情況,對區間判斷,結果為boolean類型判斷,則使用if,if的范圍更廣泛。
*/
