java基礎
Java的特性優勢
- 簡單性
- 物件導向
- 可移植性
- 高效能
- 分散式
- 動態性 【反射機制】
- 多執行緒
- 安全性 【異常機制】
- 健壯性
java三大版本
- write once 、run anywhere
- javaSE:標準版 【桌面程式、控制檯開發....】
- javaME:嵌入式開發【手機,小家電....】 用的人很少了
- javaEE:E企業級開發【web端,伺服器開發.....】
JDK JRE JVM
JVM ---》 JRE ---》 JVM
java程式執行機制
-
編譯型: 把程式全部翻譯成計算機可以執行的語言 compile 編譯器
-
解釋性: 邊執行邊解釋
-
程式執行機制:
-
源程式(.java)---》 java編譯器---》位元組碼(.class) ---》
類裝載器---》位元組碼檢驗器---》直譯器----》作業系統平臺
-
識別符號
- java識別符號大小寫敏感;
- java識別符號只能以字母 $ _ 開頭
資料型別
-
強型別語言
要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用
-
弱型別語言
浮點數
float f = 0.1f;
double d = 1/10;
System.out.println(f==d);//fasle
float d1 = 23232323231f;
float d2 = d1+1;
System.out.println(d1==d2);//true
- float 有限 離散 舍入誤差 大約 接近但不等於
- double
- 最好完全避免使用浮點數進行比較
- BigDecimal 類 數學用具類 大資料類 【用這個】
字元
char c1 ='a';
char c2 = '中';
System.out.println(c1);// a
System.out.println((int)c1);// 97 強制型別轉換
//所有的字元本質還是數字
//編碼 Unicode 有表:(97 = a 65 =A) 2位元組 0 - 65526
// U0000 UFFFF
char c3 = '\u0061'
System.out.println(c3);// a
//轉義字元
// \t 製表符
// \n 換行符
System.out.println("Hello\tworld");
System.out.println("Hello\nworld");
//看一個e.g.
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
型別轉換
-
由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
低 ---------------------到----------------------高
byte , short , char ---> int ---->long ---->float ---->double
-
強制型別轉換 高 賦值 到 低 [會有記憶體溢位 和 精度 問題]
-
自定型別轉換 低 賦值 到 高
int i = 128;
byte b = (int) i;//記憶體溢位 -128
double d = i;
//操作比較大的輸的時候。注意溢位問題
int money = 10_0000_0000;//JDK7 新特性 數字之間可以用下劃線分割
int years = 20;
int total = money * years; // -147483648,計算的時候溢位了
long total2 = money * years;//預設是int 轉換之前還是int 就有問題了
long total3 = money * ((long)years);//先把一個數轉化為long √
變數
變數作用域
- 類變數 必須有static
- 例項變數
- 區域性變數
常量
- 用final來定義 一般名大寫
運算子
- 算術運算子 : + - * / % ++ --
int e = 3;
int f = e++; //執行這行程式碼,先給f賦值,在自增
System.out.println(e);//4
int g = ++e;//執行這行程式碼,先自增,後給g賦值
int h = e++;//先賦值,在自增
System.out.println(e);//6
System.out.println(f);//3
System.out.println(g);//5
System.out.println(h);//5
// 字串連線符 +
int a = 10;
int b = 20;
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
- 賦值運算子 : =
- 關係運算子 : > < >= <= == != instanceof
- 邏輯運算子 : && || ! 與或非
[注:] &&: 有0 返回 || : 有 1 返回 --------- 短路機制
- 位運算子 : & | ^ ~ >> << >>>(瞭解)
System.out.println(2<<4);//<<左移乘2 >>右移除2
- 條件運算子 : ? :
- 擴充套件賦值運算子: += -= *= /=
JavaDos
/**
* @author shuang 作者
* @version 1.0 版本號
* @since 1.8 指明需要最早使用的JDK版本
* @param in 引數名
* @return 返回值情況
* @throws 異常丟擲情況
*/
public String test(String in){
return in;
}
>javadoc -encoding utf-8 -charset utf-8 Doc.java
1、在cmd中執行上面命令會生成線上文件 點選index.html 可檢視
2、也可以用IDEA生成javaDoc文件
Java流程控制
Scanner物件
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("第一次輸入資料:");//hei baby
// nextLine輸出回車之前的資料 以回車分割
String str = scanner.nextLine();
System.out.println(str);//hei baby
System.out.println("第二次輸入資料:");//hello world
// next輸出空格之前的資料 以空格分割
str = scanner.next();
System.out.println(str);//hello
scanner.close();
}
示例:
public static void main(String[] args) {
//輸入多個數字 求總和 平均值 每輸入一個數字回車,通過非法數字來結束輸入輸出執行結果
Scanner scanner = new Scanner(System.in);
double sum = 0;
int m = 0;
System.out.println("請輸出資料:");
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum+=x;
System.out.println("輸入了第【"+m+"】個資料 當前總和為:"+sum);
}
System.out.println(m+"個數總和:"+sum);
System.out.println(m+"個數平均值:"+(sum/m));
scanner.close();
}
結果:
請輸出資料:
36
輸入了第【1】個資料 當前總和為:36.0
42
輸入了第【2】個資料 當前總和為:78.0
7.6
輸入了第【3】個資料 當前總和為:85.6
a
3個數總和:85.6
3個數平均值:28.53333333333333
順序結構
- def:語句與語句之間是按從上到下的順序進行的,它是由若干依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。
選擇結構
- if單選擇結構
if(布林表示式){
// 布林表示式為true
}
- if雙選擇結構
if(布林表示式){
// 布林表示式為true
}else{
// 布林表示式為false
}
- if多選擇結構
if(布林表示式1){
// 布林表示式1為true
}else if(布林表示式2){
// 布林表示式2為true
}else if(布林表示式3){
// 布林表示式3為true
}else if(布林表示式4){
// 布林表示式4為true
}else{
// 以上布林表示式都不為true 執行程式碼
}
示例:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if (score == 100){
System.out.println("恭喜~~滿分~~");
}else if (score >= 90 && score < 100){
System.out.println("A級");
}else if (score >= 80 && score < 90){
System.out.println("B級");
}else if (score >= 70 && score < 80){
System.out.println("C級");
}else if (score >= 60 && score < 70){
System.out.println("D級");
}else if (score >= 0 && score < 60){
System.out.println("不及格");
}else {
System.out.println("成績不合法!!!");
}
scanner.close();
}
結果:
請輸入成績:
100
恭喜~~滿分~~
- switch多選擇結構
switch(expression){
case value:
//語句
break;//可選
case value:
//語句
break;//可選
case value:
//語句
break;//可選
default://可選
//語句
}
//注: case標籤 必須為 字串常量或字面量
//瞭解一下反編譯 java ---- 位元組碼 ---- 反編譯(IDEA) --- java
反編譯(IDEA)示例
檢視工程結構 projectStructure --- project ---project compiler output
可以找到.class檔案 --- 右鍵任意檔案 --- show in explorer(開啟目錄) ---
把.class檔案拷貝到此目錄下 --- IDEA把位元組碼反編譯為java
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package struct;
public class Demo03 {
public Demo03() {
}
public static void main(String[] args) {
char grade = 108;
switch(grade) {
case 65:
System.out.println("優秀");
break;
case 66:
System.out.println("良好");
break;
case 67:
System.out.println("及格");
break;
case 68:
System.out.println("很差");
break;
case 69:
System.out.println("掛科");
break;
default:
System.out.println("未知等級!");
}
}
}
迴圈結構
- while迴圈
while(布林表示式){
//布林表示式true
}
//注:大多數情況會讓迴圈停止下來,需要讓表示式失效方式來結束迴圈;
示例:
public static void main(String[] args) {
// 1-100 求和
int i = 0;
int sum = 0;
while (i<100){
i++;
sum = sum + i;
}
System.out.println(sum);//5050
}
- do while 迴圈
do whlile 和 while 相似,不同的是 do while 迴圈至少執行一次
do{
//程式碼語句
}while(布林表示式)
IDEA快捷鍵
- ctrl + D 複製當前行到下一行