# 1. 前言 最近有點時間,就隨便找點東西弄弄,倒也碰到了一些問題,在此記錄下 # 2. 環境 Python3.11.3 + selenium4.9.1 + opencv4.7 + PyAutoGUI0.9.54 + windows11 # 3. 開始 ## 3.1 賬號密碼輸入 ![image] ...
註釋不會被執行,是寫給看代碼的人看的。
單行註釋
多行註釋
文檔註釋
標識符
關鍵字
Java常見的關鍵字
考點
總結四個點:
-
首字母應該以字母、$、_開始;
-
開始後可以任意字元;
-
不可用關鍵字
-
大小寫敏感
數據類型
Java是一門強類型語言
強類型語言
比如Java、C++、C
變數定義嚴格,先定義才能使用。
弱類型語言
比如VB、JS、Python
Java的兩大類數據類型
基本類型
Java語言提供了八種基本類型:
-
四個整數型;
-
兩個浮點型;
-
一種字元型;
-
布爾
數值類型
整數類型
-
byte占1個位元組
-
-128(-2^7)
-
127(2^7-1)
-
-
short占2個位元組
-
-32768(-2^15)
-
32767(2^15 - 1)
-
-
int(整型)占4個位元組
-
-2,147,483,648(-2^31)
-
2,147,483,647(2^31 - 1)
-
-
long(長整型)占8個位元組。
-
-9,223,372,036,854,775,808(-2^63)
-
9,223,372,036,854,775,807(2^63 -1)
-
浮點數類型
-
float(單精度)占4個位元組
-
儲存大型浮點數可節省空間。
-
-
double(雙精度)占8個位元組
-
預設類型
-
字元類型
-
char(字元型)占2個位元組
-
String(字元串)他不是一個關鍵字,是一個類
布爾類型
-
boolean(布爾類型)
-
只能存儲true和false。
-
引用類型
除了基本類型之外的所有數據類型,都是引用類型。
類;介面;數組。(後續專欄講解)
拓展
整數進位
常規使用的基本數據類型為10進位:
而Java程式中,可以對變數賦值為各種進位。
//預設十進位,二進位為0b,八進位為0,十六進位為0x
public class binary {
public static void main(String[] args) {
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}
輸出結果為:
浮點數特性
由於浮點數具備以下特征:
-
有限性;
-
離散性;
-
舍入誤差;
-
大約;
-
接近但不等於。
所以我們在實際使用中,要儘量避免使用浮點數進行數值之間的比較。
案例1:兩個相同的數值進行比較得false
代碼如下:
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);
輸出結果得:
使用調試查詢變數數值:
兩個數值都相同,但輸出結果為false。
案例2:過長數值+1,依然等於原數值
代碼如下:
float d1=213213213213213213f;
float d2=d1+1;
System.out.println(d1==d2);
輸出結果為:
使用調試查詢變數數值:
可以看見,浮點數值一但過大,則會直接修改表示形式,就無法對比數值大小了。
解決方案(BigDecimal)
如果涉及浮點數比較大小,最好使用 數據類 BigDecimal 數學工具類。
字元拓展
字元
所有的字元,本身都是Unicode、ASCII碼
Unicode(0~65536,2^16)
代碼如下:
char a='a';
char A='A';
char B='B';
System.out.println("a="+(int)a);
System.out.println("A="+(int)A);
System.out.println("B="+(int)B);
運行結果如下:
轉義字元
除此之外,字元還具備轉義字元的含義,一般可用在如下場景:
-
需要插入一些關鍵性的文字;
-
需要插入一些空格、回車,等特別的字元。
代碼如下:
System.out.println("中間是空格轉義符→\t←");
輸出結果:
類型轉換
Java運算中,不同類型的數據先轉化為同一類型,然後再進行運算。
數據類型優先順序
強制類型轉換
代碼如下:
public class type_Convert {
public static void main(String[] args) {
int i=128;
byte b= (byte) i;//因為最大值是127,當128的時候就是補碼
System.out.println(i+"\n"+b);
}
}
輸出結果如下:
加個括弧的形式,就是強制轉換,從數據類型的高到低,就需要強制轉換。
反之,從低到高就採用自動轉換。
自動類型轉換
代碼如下:
int o=123;
double j=o;
擴展補充
-
不能對布爾類型進行轉換。
-
不能把對象類型轉換為不相干的類型。
-
在把高容量轉換到低容量的時候,強制轉換。
-
轉換的時候可能存在記憶體溢出和精度問題,轉換後會除去掉小數部分。
-
JDK7 的新特性,數字之間支持用下劃線分割。
int q=10_0000_0000;
System.out.println(q);
輸出結果:
1000000000
變數
定義:可變化的量
-
每個變數都必須聲明其類型;
-
是最基本的存儲單元,其要素包含變數名、變數類型和作用域。
變數定義:
int i = 1;
String i = 2;
//int、String 變數類型
// i 就是變數名稱
作用域
類變數:
-
從屬與類,可以直接使用類名調用的變數
-
作用範圍全局
public class action_Scope {
//類變數:從屬與類,可以直接使用類名調用的變數。
static double salasy;
public static void main(String[] args) {
//類變數的調用
action_Scope.salasy=200D;
System.out.println(action_Scope.salasy);
}
}
輸出結果:
200.0
實例變數
-
從屬與對象:如果不自行初始化,這個變數則自動唯預設值 0 0.0
-
布爾變數為true,除了基本類型,其他的引用類型都是null
-
-
作用範圍,new 實例。
public class action_Scope {
//實例變數:從屬與對象:如果不自行初始化,這個變數則自動唯預設值 0 0.0
//布爾變數為true,除了基本類型,其他的引用類型都是null
String name;
int age;
public static void main(String[] args) {
//實例變數的調用
action_Scope action_scope=new action_Scope();
System.out.println(action_scope.age);
}
}
輸出結果:
0
null
局部變數
-
作用範圍,方法內部
public class action_Scope {
public static void main(String[] args) {
//局部變數:必須聲明和初始化數值
int i = 10;
System.out.println(i);
}
}
輸出結果:
10
常量
一但定義了,就不會變化的量。
public class Demo1 {
//修飾符不區分先後順序。
final static double PI=3.14;
static final double π=3.14;
}
命名規範
-
所有變數、方法、類名:見名知意;
-
變數、方法:首字母小寫和駝峰原則:mounthSalary
-
除了第一個單詞,後面的單詞首字母大寫
-
-
常量:全大寫字母,多個單詞使用下劃線隔開。
-
MAX_VALUE
-
-
類名:首字母大寫,駝峰原則
運算符
-
自增、自減,也可以叫做一元運算符
-
a++和++a的區別在於,先執行再++和先++再執行
-
很多運算我們會使用Math工具類進行操作
短路運算
-
當與預算時,如果前者為假,就不會繼續向後執行代碼了
-
或運算時,如果前者為真,則不會繼續執行後面的代碼
位運算
位運算就是將變數與變數用二進位的形式進行 與或非 的計算,一般計算IP地址和子網掩碼可用使用位運算
面試題:2乘以8怎麼運算最快?
利用位運算符,可以根據變數的二進位數值進行移動
優點是運算效率極高(直接是底層機器語言)。
三元運算符
代碼:
int en= a<10?20:30;
System.out.println("三元運算符:"+en);
輸出:
三元運算符:30
字元串連接符
問:以下兩種代碼寫註方式,有什麼區別?
int a=10;
int b=20;
System.out.println(""+a+b);
System.out.println(a+b+"");
輸出:
1020
30
答:當一串運算語句中,出現String類型,之後的所有+號,都會被認為是字元串連接符。
優先順序
優先計算括弧。
包機制
包的本質就是一個文件夾。
包的結構必然是和網址相反的。
JavaDoc
用於生成API文檔,開發時極其有用。
可以通過doc命令行,在當下目錄,輸入代碼:
javadoc -encoding UTF-8 -charset UTF-8 [.java文件的路徑]
快速生成相關的Java文檔。
### 部分截圖取自,B站UP:遇見狂神說;菜鳥教程