Java特性與優勢:
簡單性、面向對象、可移植性
高性能、分布式、動態性
多線程、安全性、健壯性
“三高”
高迸發、高可用、高性能
JDk、JRE、JVM:
JDK:(Java Development Tookit):Java開發工具包,是整個java核心,包含了java運行環境(JRE, java runtime environment),以及java工具和java基礎類庫
JVM:(Java Virtual Mechinal):Java虛擬機,是JRE的一部分,是一個虛擬出來的計算機,是通過實際計算機上仿真模擬各種計算機功能來實現的,JVM有自己完善的硬件架構,如處理器,堆棧,寄存器等,還具有相應的指令系統。JVM的主要功能是解釋自己的指令集(即字節碼),並映射到本地的CPU的指令集或os系統調用,JAVA原始跨平台使用的,其實就是不同的操作系統使用不同的JVM映射規則,讓其與操作系統無關,完成了跨平台行。JVM對上層的Java原文件不關心,他關注的只是由源文件生成的類文件(class file),類文件組成包括JVM指令集,富豪以及一些不住信息
JRE::JAVA運行環境
在window下的第一個JAVA程序
-
1、新建一個文件夾,存放代碼
-
2、新建一個JAVA文件
- 文件后綴名為.java
- Hello.java
- [注意點]系統可能沒有顯示文件后綴名,我們需要手動打開
-
3、編寫代碼(Hello World)
public class Hello{ public static void main(String[] args){ System.out.print("hello world!"); } }
-
4、編譯javac java文件,會生成一個class文件
-
5、運行class文件, Java class文件
常見問題
- 每個單詞的大小不能出現問題,JAVA大小寫敏感
- 盡量使用英文;
- 文件名和類名必須保證一致
- 符號使用了中文
JAVA運行機制
編譯型
解釋型
運行機制
源程序 -> JAVA編譯器 -> 字節碼(*.class文件)-> 類裝載器 -> 字節碼校驗器 -> 解釋器 -> 操作系統
可以用中文命名
數據變量
強類型語言
所有變量都必須先定以后才能使用 (安全性高、速度慢)
弱類型語言
(與強類型相反)
數據類型分為:
1、 基本類型
整數類型
byte占一個字節范圍
shot占兩個字節范圍
int占四個字節范圍
long占八個字節范圍(在數字后面加L)
浮點類型
float占四個字節(Lfloat類型要在數字后面加個F)
double占八個字節
字符類型
char占兩個字節
(String)不是關鍵字,是類
boolean類型
占1位 只有 true和flase
2、引用類型
類、接口、數組
位(bit):是計算機餓你不數據存儲的最小單位,
字節(byte):是計算機中數據處理的基本單位,習慣上大寫B來表示
1B(byte,字節)=8bit(位)
字符:是指計算機中呢使用的字母,數字,字和符號
銀行等需要用 BigDecimal類
所有的字符本質還是數字
編碼 Unicode 2字節 極限:65536
//轉義字符
類型轉換
由低到高
byte,short,char -> int -> long -> float -> double
運算中,不同類型的數據先轉化為同一類型,然后進行運算
強制類型轉換 (類型)變量名 高——低
自動類型轉換 低——高
注意點:
- 不能對布爾值進行轉換
- 不能把對象類型轉換為不相干的類型
- 再把高容量轉換到底容量的時候,強制轉換
- 轉換的時候可能存在內存溢出,或者精度問題
JDK7新特性,數字之間可以用下划線分割
在編程過程中 用大寫L來表示
變量
變量就是可以變化的量
JAVA是一種強類型的語言,每個變量都必須聲明其類型
JAVA變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域
注意事項:
- 每個變量都有類型,類型可以是基本類型,也可以是引用類型
- 變量名必須是合法的標識符
- 變量聲明是一條完整的語句,因此每一個聲明都必須一分號結束
作用域
- 類變量(static)
- 實例變量(從屬對象)如果不自行初始化,輸出這個類型的默認值、布爾值;默認是false、除了基本類型,其余的默認值都是null
- 局部變量(必須聲明和初始化值)
常量
- 常量(Constant):初始化(initialize)后不能再改變值!不會變動的值
- 所謂敞亮可以理解成一種特殊的變量,他的值被設定后,在程序運行過程中不允許被改變
- 常量名一般使用大寫字符
- 修飾符不存在先后順序
變量的命名規范
- 所有變量、方法、類名:見名知意
- 類成員變量:首字母小寫和駝峰原則:monthSalary除了第一個單詞以外,后面的單詞首字母大寫(eg:lastName)
- 局部變量:首字母小寫和駝峰原則
- 常量:大寫字母和下划線:MAX——VALUE
- 類名:首字母大寫和駝峰原則:Man,GoodMan
- 方法名:首字母小寫和駝峰原則:run(),runNow()
運算符
- 算術運算符 +、-、*、/、%(模=取余)、++、--
- 賦值運算符 =
- 關系運算符 >,<,>=,<=,==,!=instanceof
- 邏輯運算符 &&、||、!(短路運算)
- 位運算符 &(有0即0),|(有1即1),^(同0異1),~(取反),(左移)>>,(右移)<<,>>>(只和二進制有關 )
- 條件運算符 ?:
- 加法=二元運算符
- Ctrl + D :復制當前行到下一行
- a++ 執行完這行代碼后,先給b賦值,再自增(省略了a = a+1)
- ++a 執行玩這行代碼錢,先自增,再給b賦值
- 字符串連接符 +兩邊有String類型數據就為連接符(如果String類型在最后則不會影響結果)
優先級()
- ()
- ! ++ --
- */ %
- +-
- < <= > >=
- == !=
- &&
- ||
總結:算術 > 關系 > 邏輯
包機制
-
為了更好的地組織類,Java提供了包機制,用於區別類名的命名空間
-
包語句的語法格式為:
Pack pkg1[.pkg2[.pk3...]];
-
一般利用公司域名倒置作為包名:com.baidu.www
-
為了能夠使用某一個包的成員,我們需要在Java程序中明確導入該包,使用"import"語句可完成此功能
-
*(通配符)
JavaDoc
javadoc命令是用來生成自己API文檔的
參數信息
- @author 作者名
- @version 版本名
- @since 指明需要最早使用的jdk版本
- @param 參數名
- @throws 異常拋出情況
用戶交互
-
Java.util.Scanner是Java5的新特性,我們可以通過Scanner類來獲取用戶的輸
- Scanner s = new Scanner(System.in);
-
通過Scanner類的next()與nextLine()方法獲取輸入的字符串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否有輸入的數據
-
next()
- 一定要讀渠道有效字符后才可以結束輸入
- 對輸入有效字符之前遇到的空白,next()方法會自動將其去掉
- 只有輸入有效字符后才將其后面輸入的空白空白作為分隔符或者結束符
- next()不能得到帶有空格的字符串
-
nextLine()
- 以Enter為結束符也就是說nextLine()方法返回的是輸入回車之前的所有字符
- 可以獲得空白