併發程式設計——程序應用(multiprocessing模組介紹,Process類介紹),Process物件的join方法
資料型別:
整數
byte
、short
、int
、long
四種基本資料型別表示整數,需要注意的是long
型別,使用long
修飾的變數需要在數值後面加上 L 或者 l,比如long num = 1L;
,一般使用大寫L
,為了避免小寫l
與數值1
混淆。
浮點數
float
和double
型別表示浮點數,即可以表示小數部分。需要注意的是float
型別的數值後面需要加上F
或者f
,否則會被當成double
型別處理。double
型別的數值可以加上D
或d
,也可以不加。
char 型別
char 型別用於表示單個字元。需要將字元用單引號括起來char a = 'a'
,char 可以和整數互相轉換,如果字元a
也可以寫成char a = 97
char a = '\u0061'
。
boolean 型別
boolean
型別(布林型別)用於表示真值true
或者假值false
,Java 中布林值不能和整數型別或者其它型別互相轉換。
String
String s0 = "abc"; String s1 = new String("abd");
1.字串識別符號.length();
返回一個int
型別的整數(字串中字元數,中文字元也是一個字元)。
2.equals()
方法,該方法的作用是判斷兩個字串物件的內容是否相同。如果相同則返回true
,否則返回false
。
equalsIgnoreCase()
意義同上 忽略大小寫
使用"=="
比較的是兩個物件在記憶體中儲存的地址是否一樣。
3.字串連線有兩種方法:
- 使用
+
,比如String s = "Hello " + "World!"
。 - 使用
String
類的concat()
方法
4.charAt()
方法的作用是按照索引值(規定字串中第一個字元的索引值是 0,第二個字元的索引值是 1,依次類推),獲得字串中的指定字元。
字串常用提取方法
方法 | 返回值 | 功能描述 |
---|---|---|
indexOf(char ch) | int | 搜尋字元 ch 第一次出現的索引 |
indexOf(String value) | int | 搜尋字串 value 第一次出現的索引 |
lastIndexOf(char ch) | int | 搜尋字元 ch 最後一次出現的索引 |
lastIndexOf(String value) | int | 搜尋字串 value 最後一次出現的索引 |
substring(int index) | String | 提取從位置索引開始到結束的字串 |
substring(int beginindex, int endindex) | String | 提取 beginindex 和 endindex 之間的字串部分 |
trim() | String | 返回一個前後不含任何空格的呼叫字串的副本 |
位運算子
位運算子 | 名稱 | 描述 | 舉例 |
---|---|---|---|
& | 按位與 | 如果相對應位都是 1,則結果為 1,否則為 0 | (a&b),得到 12,即 0000 1100 |
丨 | 按位或 | 如果相對應位都是 0,則結果為 0,否則為 1 | ( a 丨 b )得到 61,即 0011 1101 |
^ | 按位異或 | 如果相對應位值相同,則結果為 0,否則為 1 | (a^b)得到 49,即 0011 0001 |
~ | 按位補 | 翻轉運算元的每一位,即 0 變成 1,1 變成 0 | (〜a)得到 -61,即 1100 0011 |
<< | 按位左移 | 左運算元按位左移右運算元指定的位數 | a<<2 得到 240,即 1111 0000 |
>> | 按位右移 | 左運算元按位右移右運算元指定的位數 | a>>2 得到 15 即 1111 |
>>> | 按位右移補零 | 左運算元的值按右運算元指定的位數右移,移動得到的空位以零填充 | a>>>2 得到 15 即 0000 1111 |
邏輯運算子
邏輯運算子 | 名稱 | 描述 | 型別 | 舉例 |
---|---|---|---|---|
&& 或 & | 與 | 當且僅當兩個運算元都為真,條件才為真 | 雙目運算子 | (a && b) 或 (a & b) 為假 |
|| 或 | | 或 | 兩個運算元任何一個為真,條件為真 | 雙目運算子 | (a || b) 或 (a | b) 為真 |
! | 非 | 用來反轉運算元的邏輯狀態。如果條件為真,則邏輯非運算子將得到假 | 單目運算子 | (!a)為假 |
^ | 異或 | 如果兩個運算元邏輯相同,則結果為假,否則為真 | 雙目運算子 | (a ^ b) 為真 |
比較運算子
比較運算子 | 名稱 | 描述 | 舉例 |
---|---|---|---|
== | 等於 | 判斷兩個運算元的值是否相等,如果相等則條件為真 | (a == b) 為 false |
!= | 不等於 | 判斷兩個運算元的值是否相等,如果值不相等則條件為真 | (a != b) 為 true |
> | 大於 | 判斷左運算元的值是否大於右運算元的值,如果是那麼條件為真 | (a > b) 為 false |
< | 小於 | 判斷左運算元的值是否小於右運算元的值,如果是那麼條件為真 | (a < b) 為 true |
>= | 大於等於 | 判斷左運算元的值是否大於或等於右運算元的值,如果是那麼條件為真 | (a >= b) 為 false |
<= | 小於等於 | 判斷左運算元的值是否小於或等於右運算元的值,如果是那麼條件為真 | (a <= b) 為 true |
break,continue
break
關鍵字經常用在條件和迴圈語句中,用來跳出迴圈語句。
continue
關鍵字的作用是跳過迴圈體中剩餘的語句執行下一次迴圈。
陣列:
使用陣列前要宣告陣列。資料型別[ ] 陣列名;
public class JudgePrime { public static void main(String[] args){ int [] ages = {12, 18, 9, 33, 45, 60}; int i = 1; for(int age:ages){ System.out.println("陣列中第"+i+"個元素是"+age); i++; } } }
二維陣列:
資料型別 [][] 陣列名 = new 資料型別[行的個數][列的個數]; //或者 資料型別 [][] 陣列名; 陣列名 = new 資料型別[行的個數][列的個數]; //也可以 資料型別 [][] 陣列名 = { {第一行值1,第一行值2,...} {第二行值1,第二行值2,...} ... } //二維陣列的賦值和訪問,跟一維陣列類似,可以通過下標來逐個賦值和訪問,注意索引從 0 開始 陣列名[行的索引][列的索引] = 值;
例子:計算平均成績:
public class AverageScore { public static void main(String[] args) { int[] data = {61, 57, 95, 85, 75, 65, 44, 66, 90, 32}; int sum = 0; for (int i = 0; i < data.length; i++) { sum += data[i]; } System.out.println("平均成績:" + sum / data.length); } }
迴圈讀取資料的方法
迴圈讀取String資料,當輸入exit時退出迴圈
while (!in.hasNext("exit")) {
System.out.println(in.nextLine());
}
//關閉輸入
in.close();
另一種方法
if ((data[i] = in.nextLine()).equals("end")) {
break;
}
例子:
- 獲取使用者的輸入資訊(字串)。
- 當用戶輸入 end 時,結束輸入並列印使用者之前輸入的所有資訊(輸入的資訊數量不超過 100 個)。
import java.util.Scanner; public class InputTest { public static void main(String[] args) { String[] data = new String[100]; Scanner in = new Scanner(System.in); for (int i = 0; i < 100; i++) { if ((data[i] = in.nextLine()).equals("end")) { break; } } for (String a : data) { if (a.equals("end")) { break; } System.out.println(a); } } }
建立物件的語法如下:
類名 物件名 = new 類名();
public class People { double height; int age; int sex; void cry(){ System.out.println("wozaiku"); } void laugh(){ System.out.println("wozaixiao"); } void printBaseMes(){ System.out.println("wodeshengaoshi"+height+"cm"); System.out.println("wodenianlingshi"+age+"sui"); if(this.sex==0) System.out.println("woshinanxing"); else System.out.println("woshinvxing"); } }
public class NewObject { public static void main(String[] args) { People LiLei = new People(); //建立一個People物件LiLei LiLei.height =170; LiLei.age = 20; LiLei.sex = 1; LiLei.printBaseMes(); } }
成員變數和區域性變數:
成員變數就是指的物件的屬性,是在類中定義,來描述物件的特性。
區域性變數,它是由類的方法定義,在方法中臨時儲存資料。
關鍵字:
final
關鍵字可以修飾類、方法、屬性和變數
final
修飾類,則該類不允許被繼承,為最終類final
修飾方法,則該方法不允許被覆蓋(重寫)final
修飾屬性:則該類的屬性不會進行隱式的初始化(類的初始化屬性必須有值)或在構造方法中賦值(但只能選其一)- final 修飾變數,則該變數的值只能賦一次值,即常量
private,protected,public
private
修飾的屬性或者方法,只能在當前類中訪問或者使用。如果想在主函式中使用,只能通過getter
和setter
方法進行呼叫預設
是什麼修飾符都不加,預設在當前類中和同一包下都可以訪問和使用。protected
修飾的屬性或者方法,對同一包內的類和所有子類可見。public
修飾的屬性或者方法,對所有類可見
Java中的類:
陣列:import java.util.Arrays;
方法 | 描述 |
---|---|
<T> List<T> asList(T... a) | 返回由指定陣列構造的 List |
void sort(Object[] a) | 對陣列進行排序 |
void fill(Object[] a, Object val) | 為陣列的所有元素都賦上相同的值 |
boolean equals(Object[] a, Object[] a2) | 檢查兩個陣列是否相等 |
int binarySearch(Object[] a, Object key) | 對排序後的陣列使用二分法查詢資料 |
java資料型別中的坑:string為什麼不是八種資料型別的一個:那八種資料型別是基本型別,而string是引用資料型別。
基本型別僅表示簡單的資料型別,引用型別可以表示複雜的資料型別,還可以操作這種資料型別的行為
java虛擬機器處理基礎型別與引用型別的方式是不一樣的,對於基本型別,java虛擬機器會為其分配資料型別實際佔用的記憶體空間,而對於引用型別變數,他僅僅是一個指向堆區中某個例項的指標。
例子:
- 使用 Arrays 將陣列 [6, 17, 92, 32, 58, 22, 84, 66, 36, 33] 進行排序。
- 找出排序後 33 所在的位置。
import java.util.Arrays; public class ArraysTest { public static void main(String[] args) { int[] arr = {6, 17, 92, 32, 58, 22, 84, 66, 36, 33}; Arrays.sort(arr); System.out.println(Arrays.binarySearch(arr, 33)); } }
StringBuilder :
構造方法 | 說明 |
---|---|
StringBuilder() | 構造一個其中不帶字元的 StringBuilder,其初始容量為 16 個字元 |
StringBuilder(CharSequence seq) | 構造一個 StringBuilder,它包含與指定的 CharSequence 相同的字元 |
StringBuilder(int capacity) | 構造一個具有指定初始容量的 StringBuilder |
StringBuilder(String str) | 並將其內容初始化為指定的字串內容 |
方法 | 返回值 | 功能描述 |
---|---|---|
insert(int offsetm,Object obj) | StringBuilder | 在 offsetm 的位置插入字串 obj |
append(Object obj) | StringBuilder | 在字串末尾追加字串 obj |
length() | int | 確定 StringBuilder 物件的長度 |
setCharAt(int index,char ch) | void | 使用 ch 指定的新值設定 index 指定的位置上的字元 |
toString() | String | 轉換為字串形式 |
reverse() | StringBuilder | 反轉字串 |
delete(int start, int end) | StringBuilder | 刪除呼叫物件中從 start 位置開始直到 end 指定的索引(end-1)位置的字元序列 |
replace(int start, int end, String str) | StringBuilder | 使用一組字元替換另一組字元。將用替換字串從 start 指定的位置開始替換,直到 end 指定的位置結束 |
構造方法 | 說明 |
---|---|
GregorianCalendar() | 建立的物件中的相關值被設定成指定時區,預設地點的當前時間,即程式執行時所處的時區、地點的當前時間 |
GregorianCalendar(TimeZone zone) | 建立的物件中的相關值被設定成指定時區 zone,預設地點的當前時間 |
GregorianCalendar(Locale aLocale) | 建立的物件中的相關值被設定成預設時區,指定地點 aLocale 的當前時間 |
GregorianCalendar(TimeZone zone,Locale aLocale) | year - 建立的物件中的相關值被設定成指定時區,指定地點的當前時間 |
TimeZone 類
//太平洋時區的 ID 為 PST TimeZone tz0 = TimeZone.getTimeZone("PST") //getDefault()可以獲取主機所處時區的物件 TimeZone tz1 = TimeZone.getDefault()
//呼叫Locale類的構造方法 Locale l0 = new Locale(String language) Locale l1 = new Locale(String language, String country) Locale l2 = new Locale(String languge, String country, String variant) //呼叫Locale類中定義的常量 Locale l1 = Locale.CHINA
Date:
構造方法 | 說明 |
---|---|
Date() | 構造一個 Date 物件並對其進行初始化以反映當前時間 |
Date(long date) | 構造一個 Date 物件,並根據相對於 GMT 1970 年 1 月 1 日 00:00:00 的毫秒數對其進行初始化 |
Scanner:
import java.util.Scanner;
Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt();