目錄
1.數據類型
Java是一種強類型語言。這就意味着必須爲每一個變量聲明一種類型。在Java中,一共有8種基本類型,其中有4種整型(int、long、long long、byte)、2種浮點類型(float、double)、1種用於表示Unicode編碼的字符單元的字符類型(char)和一種用於表示真值的boolean類型。
數據類型 | 包裝類 | 存儲需求(byte) | 位數(bit) | 最小值 | 最大值 |
---|---|---|---|---|---|
byte | Byte | 1 byte | 8 bit | -128 | 127 |
char | Charactor | 2 byte | 16 bit | 0 | 65535 |
short int | Short int | 2 byte | 16 bit | -32768 | 32767 |
int | Integer | 4 byte | 32 bit | -2147483648 | 2147483647(>20億) |
long | Long | 4 byte | 32 bit | -2147483648 | 2147483647 |
float | Float | 4 byte | 32 bit | -3.4028347e+38 | 3.4028347e+38 |
double | Double | 8 byte | 64 bit | -1.79769e+308 | 1.76969e+308 |
注意:3.4028347e+38代表3.4028347*10的38次方,2的63次方=9 223 372 036 854 775 808
包裝類與基本數據類型的區別:
區別/類型 | 包裝類 | 基本數據類型 |
---|---|---|
對象調用 | 是對象,擁有方法和字段,對象的調用都是通過引用對象的地址 | 基本數據類型不一樣 |
傳遞方式 | 引用的傳遞 | 值的傳遞 |
聲明方式 | 需要new在堆內存中進行new來分配內存空間 | 不需要new關鍵字 |
存儲位置 | 把對象放在堆中,然後通過對象的引用來調用他們 | 直接將值保存在值棧中 |
初始值 | null | i0或false |
使用方式 | 在集合中使用 | 直接賦值使用 |
2.常見的數學函數
一般來說,如果我們在程序中調用的格式如:
import java.lang.Math;
int x;
x = -1;
System.out.println(Math.abs(x));///對x絕對值
如果們不想添加Math前綴的話,我們可以這樣:
import static java.lang.Math;
int x;
x = -1;
System.out.println(abs(x));///對x絕對值
3.常見的字符串函數
注意:圖中的指定字符哪裏int ch爲char ch!!!!
有些時候,需要由較短的字符串構建字符串,例如,按鍵或來自文件中的單詞。採用字符串連接的方式達到此目的效率比較低。每次連接字符串,都會構建一個新的String的對象,既耗時,又浪費空間。使用StringBuilder類就可以避免這個問題的發生。
public class Main{
public static void main(String [] args) {
StringBuilder builder = new StringBuilder();///構建一個空的字符串構建器
int len = builder.length();///返回構建起或緩衝器的代碼單元數量
char ch = 'a';
builder.append(ch);////追加一個代碼單元並返回this
String str = "bc";
builder.append(str);///追加一個字符串並返回this
//builder.setCharAt(int index,char ch);///將某個字符設置爲字符ch
///builder.insert(int offset,String str);///在offset位置插入一個字符串
///builder.insert(int offset,char ch);///在offset位置插入一個字符
///builder.delete(int startIndex,int endIndex);///刪除偏移量從startIndex到endIndex-1的代碼單元並返回this
///String toString();///返回一個與構建器或緩衝器內容相同的字符串
}
}
4.控制檯輸入與輸出
4.1 讀取輸入
要在控制檯進行輸入,首先需要構造一個Scanner對象:
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
Scanner類中常見的函數:
import java.util.Scanner;
public class Main{
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){///檢查輸入中是否還有其他元素,多行輸入時會用到
int x = sc.nextInt();///讀取輸入整數
///long x = sc.nextLong();///輸入長整型
///float x = sc.nextFloat();///
///double x = sc.nextDouble();///輸入浮點型
///String str = sc.nextLine();///輸入一行,包括空格
///String str = sc.next();///輸入單詞,不包含空格(以空格作爲分隔符)
///sc.hasNextInt()、sc.hasNextDouble()...(檢查是否還有此類型的元素)
}
sc.close();///關閉此掃描儀
}
}
4.2 格式化輸出
如果我們沒有什麼特殊的強制性要求的話,我們這樣輸出:
System.out.println();///沒有內容輸出,就是換行
int x = 1;
System.out.prinln(x);///輸出整型
char ch = 'a';
System.out.prinln(ch);///輸出字符
String str = "Hello";
System.out.prinln(str+" world");///輸出字符
System.out.prinln(x+str);///輸出字符加整型
如果我們在編程中需要有特殊性要求的話,比如我們希望顯示美元、美分等符號。上面的方法就無法滿足我們的需求了。JavaSE5.0沿用了C語言函數中的printf方法:
double x = 10000.0/3.0;
System.out.printf("%8.2f",x);///3333.33
☞ 格式說明符的語法如下:
注意:上面的格式符視自己需求增減
☞ 用於printf的轉換符:(以整數159爲例)
轉換符 | 類型 | 舉例 |
---|---|---|
d | 十進制整數 | 159 |
c | 字符 | H |
s | 字符串 | Hello |
b | 布爾 | true |
h | 散列碼 | 42628b2 |
% | 百分號 | % |
x | 十六進制整數 | 9f |
o | 八進制整數 | 237 |
f | 定點浮點數 | 15.9 |
e | 指數浮點數 | 1.59e+01 |
g | 通用浮點數 | |
a | 十六進制浮點數 | 0x1.fccdp3 |
n | 與平臺有關的行分割符 | - |
tx或Tx | 日期時間 | 已過時 |
☞ 用於printf的標誌:
標誌 | 目的 | 舉例 |
---|---|---|
+ | 打印正數符號(負數系統自動給) | +3333.33 |
空格 | 在數之前添加空格 | 3333.33 |
0 | 數字前面補0(系統默認右對齊,如要求12格式化寬度爲4的數,0012) | 03333.33 |
- | 左對齊 | 3333.33 |
( | 將負數括在括號內 | (3333.33) |
, | 添加分組分隔符 | 3,333.33 |
#(對於f格式) | 包含小數點 | 3,333. |
#(對於x或0格式) | 添加前綴0x或0 | 0xcafe |
$ | 給定被格式化的參數索引,如:%1$d將以十進制打印第一個參數 | 159 |
< | 格式化前面說明的數值。 | 如:5和6,%d%<d輸出55 |
☞ String.Format格式化用法:
(System.out.printf()==System.out.printf(String.format()))
///這兩種方式是等同的
5.(算術、邏輯、位、比較、三元)運算符
我的另外一篇博客,直達鏈接:徹底掌握幾種運算符的運用
6、數組的定義
一維數組聲明:nt arr[ ] 或int [ ] arr
public class Main{
public static void main(String [] args) {
///int []arr = new int[100];///方式一,固定數組長度
///int []arr = new int[]{1,5,2,4,3};///方式二,不固定數組長度
int []arr={1,5,2,4,3};///方式三,不固定數組長度
for(int a:arr){///枚舉數組
System.out.println(a);
}
}
}
二維數組聲明:int [ ][ ]arr或int arr[ ][ ]
public class Main{
public static void main(String [] args) {
int [][]arr1 = new int[100][100];///方式一,固定數組長度
int [][]arr2 = new int[][]{
{1,5},
{2,4}
};///方式二,不固定數組長度
int [][]arr3={
{1,5},
{2,4}
};///方式三,不固定數組長度
}
}
7.集合的基礎知識點
鏈接直達:集合知識點
8.(數字、字符串、字符)之間的轉換和進制轉換
8.1 常見數據類型的轉換
8.2 進制轉換
字符0 ~ 9的十進制爲48 ~ 57;
大寫字符(A~Z)的十進制爲65 ~ 90;
小寫字符(a~z)的十進制爲97 ~ 122;
☞ r進制轉十進制
Integer.parseInt(str, r);///str爲要轉換的字符串,r爲被轉換的進制
☞ 十進制轉換爲r進制
10進制轉2進制:Integer.toBinaryString(n);///n爲要轉換的10進制
10進制轉8進制:Integer.toOctalString(n);
10進制轉16進制:Integer.toHexString(n);
10進制轉 r 進制 Integer.toString(n, r);