百萬資料 mysql count(*)優化
阿新 • • 發佈:2022-05-15
狂神說Java
java預科篇
java三大版本:
- javaSE:標準版
- javaME
- javaEE:伺服器開發
JDK&JVM&JRE
- JDK:java開發者工具
- JVM:java虛擬機器
- JRE:java執行時環境
解釋型和編譯型語言:
- 解釋型:我們可以理解為翻譯(可以進行及時的翻譯)
- 編譯型:可以理解為出版社(只在第一次翻譯,後續更新,需要重新買書)
java屬於先編譯再解釋語言,先編譯產生了.class
檔案,後續再進行解釋
java註釋
-
單行註釋
//
-
多行註釋
/**/
-
javaDOC (一般用不到)
/** * @author.. */
java基礎篇
識別符號
- 關鍵字
- 識別符號(字母,數字,下劃線,$),數字不打頭
資料型別(8個)
-
基本資料型別
-
整數
byte
-
int
(常用) -
long
(long a = 10000L
,後面新增L
)
-
浮點數
-
float
(float b = 1.22f
,後面新增f
) -
double
(常用)
-
-
字元
char
,用單引號 -
布林值
true
false
-
-
引用資料型別
- 類
- 物件
- 介面
補充
-
進位制
-
二進位制
0b開頭
-
八進位制
0開頭
-
十六進位制
0x開頭
//十進位制 int a = 10; //二進位制 int b = 0b10; //八進位制 int c = 010; //十六進位制 int d = 0x10;
-
-
字元
-
字元其實也是數字,她們遵循unicode碼
char c = 'a'; System.out.printin((int)c)//得出的結果是一個數字
-
轉義字元
\t \n
-
-
String
-
String是一個類
String a = new String("hello world"); String b = new String("hello world"); //這邊a和b是不一樣的,主要是因為他這個是應用型別,所以記憶體地址發生了改變 String sa = "hello world"; String sb = "hello world"; //這邊sa和sb是一樣的
-
-
boolean
- 不可以對布林值進行強制型別轉換
-
型別轉換
- 高對低需要強制型別轉換
- 低對高不用轉換
變數常量
-
變數
-
區域性變數:就是在花括號裡,必須宣告賦值
-
例項變數:在類裡面,不在方法裡面
- 例項變數從屬於物件,如果不進行初始化,型別為預設值
- 數值預設值:0/0.000
- 布林值預設值:false
- 除了基本資料型別:其他預設值都為null
-
類變數
變數型別 變數名字 = new 變數型別
Scanner scanner = new Scanner(System.in)
-
-
常量
final
補充
- 所有變數,方法類名等都需要見名知意
- 類:大駝峰
- 區域性變數,方法名:小駝峰
- 常量:大寫字母+_
MAX_VALUE
操作符
-
+ - * / %
-
++ --
int num1 = 1; // ++在後面,那麼就是先賦值在++ // int num2 = num1++; // 上面的這行程式碼類似於 int num2 = num1; num1 = num1+1; // ++在前面,那麼我們就是先加一,再賦值給別人 // int num3 = ++num1; // 上面的程式碼就等同於 num1 = num1+1; int num3 = num1; System.out.println("num1:"+num1); System.out.println("num2:"+num2); System.out.println("num3:"+num3);
-
Math.pow(n,m)
-
>,<.!=
-
&&,||,!
-
<<,>>
// >> << // << 左移,就相當於*2 // << 右移,就相當於/2 // 這個就相當於2*8(2的3次方) System.out.println(2<<3);//16 // 2*(2的四次方) System.out.println(2<<4);//32
補充:
- 字串的連線
+
,和算術運算子+
// 字串連線符
// 注意位置
int numa = 10;
int numb = 20;
System.out.println(numa+numb);
// 下面兩個不要同的原因時,因為字串拼接
// 第一個,一開始就是字串,所以裡面所有的加號(+),就都是用於字串的拼接
System.out.println(""+numa+numb);//1020
// 第二個,開始時,加號,從左往右,所以我們預設是進行數值累加,後面知道時字串,所以直接字串拼接
// 所以,第一個時加法,第二個時字串拼接
System.out.println(numa+numb+"");//30
-
包機制
我們可以簡單地將包理解為資料夾
java流程控制
scanner用於使用者的互動
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()){
// 使用next方式進行接受
// String str = scanner.next();
String str2 = scanner.nextLine();
// System.out.println("獲取到輸入:"+str);
System.out.println("獲取到輸入:"+str2);
}
-
我們一般用
scanner.hasNextLine()
,判斷使用者有沒有進行輸入 -
我們一般用
scanner.nextLine()
,獲取使用者的輸入- 我們一般不使用
scanner.next()
- 因為當中間有空格出現時,我們會自動捨棄掉空格後面的東西,獲取空格之前的東西
- 我們一般不使用
-
我們也可以對型別進行限制
-
識別
int
整數scanner.nextInt()
-
識別
double
小數scanner.nextDouble()
// 請輸入整數 System.out.println("請輸入整數"); // 如果下面的是整數 if(scanner.hasNextInt()){ // 獲取搭配使用者的輸入 a = scanner.nextInt(); System.out.println("你輸入的是整數"+a); }else{ System.out.println(("你輸入的不是整數")); } // 請輸入小數 System.out.println("請輸入小數"); if(scanner.hasNextDouble()){ // 獲取使用者輸入 b = scanner.nextDouble(); System.out.println("你輸入的是小數"+b); }else{ System.out.println("你輸入的不是小數"); }
-
-
每次用完
scanner
都需要關閉scanner.close()
,為了節省空間。