包裝類型別,跳脫字元,BigDecimal,BigInteger,Ca
八種基本資料型別,每一個都對應了一個型別,我們把型別稱之為,基本資料型別的包裝類型別
byte -- Byte
short -- Short
char -- Character
int -- Integer
float -- Float
double -- Double
long -- Long
boolean -- Boolean
我們為什麼要將基本資料型別 轉換為 類型別?
可以使用類中的成員方法,來減少工作量,提供工作
int型別和String型別的相互轉換
A:int to String
1:String.valueOf(10);
2:new StringBuffer().append(10).toString();
3:int[] array1 = {10};Arrays.toString(array1);
4:"" + 10;
5:Integer.toString(10);
B:String to int
1:Integer.valueOf(String).intValue();
2:Integer.parseInt(String);
3:Integer.decode("10").intValue();
Integer 類中的常用方法:
public static String toBinaryString(int i):將10進位制的i轉換為二進位制的無符號表示形式
public static String toOctalString(int i):將10進位制的i轉換為八進位制的無符號表示形式
public static String toHexString(int i):將10進位制的i轉換為十六進位制的無符號表示形式
public static String toString(int i,int radix):
將十進位制轉換為其他進位制,這個進位制可以任意指定[2,36]範圍之間,超出了,就預設10
public static int parseInt(String s,int radix):其他進位制轉換為10進位制,其他進位制也是可以指定的
裝箱和拆箱
裝箱:基本資料型別 到 對應得包裝型別的 轉換過程 in box
拆箱:基本資料型別對應的包裝型別 到 基本資料型別的轉換過程 out of box
// 建立了一個Integer型別的物件或者引用x,並且呼叫有參的構造,進行初始化
Integer x = new Integer(4);
// 從jdk1.5 以後,開始,簡化上面的形式
Integer x1 = 4;// 發生了裝箱 int 型別 to Integer
// 裝箱:其實發生了 Integer.valueOf(4);
// 下面演示拆箱
int ii1 = x1;// 拆箱 Integer 型別 to int
// 拆箱:其實發生了 x1.intValue();
x = x + 5;// Integer + int
// 先拆箱,後裝箱
問題是 Integer的equals()方法有沒有被重寫
被重寫了,重寫的邏輯如下,拆箱後比較,比較int型別的值
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
由裝箱的知識可知,裝箱就是執行了Integer.valueOf()
我們要檢視一下valueOf()的原始碼實現,看看到底發生了什麼事
程式碼一執行,就在Integer的內部產生了Integer型別的陣列,陣列的長度是256
並且,直接給陣列初始化了值,值的範圍為[-128-127]
對於valueOf()的呼叫者來說,如果引數在[-128,127]之間
那麼就直接從快取陣列中,取出對應的Integer型別的值,並返回
我們叫這種做法 常量池
否則 引數不在 [-128,127] 這個範圍內的 每次都new 一個
跳脫字元
符號 符號解釋 舉例
x 字元 x a :代表字母a
反斜線字元 :代表一個
字元類
[^abc] 取非 或者叫取反 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] 52個大小寫字母的任意一個
[1,9]: 表示 一位的數字,有可能是1-9之間的任意一個數字
預定義字元類
. 任何字元 包括a,或者b等
d 數字:[0-9] d == [0-9]
D 非數字: [^0-9] D == [^0-9] 非數字就是字母
s 空白字元:[ tnx0Bfr]
S 非空白字元:[^s]
w 單詞字元:[a-zA-Z_0-9]
W 非單詞字元:[^w]
邊界匹配器
^ 行的開頭 "^d"
$ 行的結尾 "d$"
Greedy 數量詞
X? X,一次或一次也沒有 a?b: ab b 不匹配:aaab
X X,零次或多次 ab: aaaab
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次 d{4,14}: 數字要有4位到14位之間
BigDecimal:
不可變的、任意精度的有符號十進位制數. 大值範圍的 小數
構造方法
BigDecimal(String val)
將 BigDecimal 的字串表示形式轉換為 BigDecimal。
BigInteger 類
不可變的任意精度的整數
可以讓超過Integer範圍內的資料進行運算
// BigInteger 沒有 + 的運算,要想讓兩個BigInteger 四則運算,只能呼叫方法
BigInteger bi1 = new BigInteger("10");
BigInteger bi2 = new BigInteger("20");
// bi1 + bi2;
bi1 = bi1.add(bi2);// 返回兩個陣列的和,但是不會改變原有的數值
System.out.println(bi1);
bi1 = bi1.subtract(bi2);// 返回兩個陣列的差,但是不會改變原有的數值
System.out.println(bi1);
bi1 = bi1.multiply(bi2);// 返回兩個陣列的乘積,但是不會改變原有的數值
System.out.println(bi1);
bi1 = bi1.divide(bi2);// 返回兩個陣列的商,但是不會改變原有的數值
System.out.println(bi1);
java中預設不能返回多個返回值,但是返回多個返回值又很常見,怎麼辦呢?
一般的處理方案
A:返回陣列,或者集合
B:返回一個型別(類可以有很多成員變數)
BigInteger[] array = bi2.divideAndRemainder(bi1);
System.out.println(Arrays.toString(array));
Calendar 日曆類
Calendar 是一個抽象類
public int get(int field):根據指定日曆的某個部分,返回值
public void add(int field,int amount)
public final void set(int year,int month,int date)
總結 Date 和Calendar都是表示 日期時間的,那麼要選用哪個合適呢?
建議:
一般用法,表示當前日期,就用Date即可,配合SimpleDateFormat 來格式化
對日期進行加減運算,設定指定日期時,建議使用Calendar,(高階一點的應用就用Calendar)
Random類
此類的例項用於生成偽隨機數流.此類使用 48 位的種子
Random():建立一個新的隨機數生成器。 預設種子為當前的系統時間
Random(long seed):使用單個 long 種子建立一個新的隨機數生成器。
random.nextInt():// 隨機數範圍[-2^31,2^31-1]
random.nextInt(int n):n = bound 隨機數範圍[0,bound)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2471/viewspace-2808017/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HTML跳脫字元HTML字元
- java跳脫字元Java字元
- 【java】Maths類、Random類、System類、BigInteger類、BigDecimal類、Date類、SimpleDateFormat類JavarandomDecimalORM
- 【Java】基本型別包裝類Java型別
- MyBatis 跳脫字元處理MyBatis字元
- Java 包裝類和基本型別Java型別
- mysql 的Escape跳脫字元串MySql字元
- Java大數相乘(使用BigInteger和BigDecimal)JavaDecimal
- 二十八、基本型別包裝類型別
- python的跳脫字元是什麼Python字元
- 14.Java-Arrays(類)、基本型別包裝類、Integer(類)Java型別
- 基本資料型別及其包裝類(二)資料型別
- 基本資料型別及其包裝類(一)資料型別
- python使用跳脫字元解決歧義Python字元
- BigDecimal轉為String型別、int型別Decimal型別
- Java-API-基本資料型別包裝類JavaAPI資料型別
- JAVA集合類簡要筆記 - 內部類 包裝類 Object類 String類 BigDecimal類 system類Java筆記ObjectDecimal
- Java:利用BigDecimal類巧妙處理Double型別精度丟失JavaDecimal型別
- Java 包裝類:原始資料型別與迭代器Java資料型別
- 泛型類、泛型方法、型別萬用字元的使用泛型型別字元
- Java中的基本型別包裝類 Integer 類該怎麼使用?Java型別
- Python對HTML跳脫字元進行反轉義PythonHTML字元
- Java基礎-基本型別和包裝型別Java型別
- 【Java】基本資料型別包裝類面試題之一Java資料型別面試題
- cheerp資料型別包裝資料型別
- MySQL 字元型別MySql字元型別
- 跳脫字元在前端開發中的詳細介紹字元前端
- 資料泵datapump(expdp/impdp)的parfile用法,避免跳脫字元字元
- java基本型別和包裝型別的“==”和equals()方法Java型別
- JSON序列化時將BigDecimal型別轉換成String型別JSONDecimal型別
- Python之字元型別Python字元型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- 28-BigDecimal類Decimal
- JavaScript中的包裝型別詳解JavaScript型別
- C++ 大整數類(BigInteger類)實現C++
- 11.8 python之字元型別Python字元型別
- UFDoble型別計算、比較大小。BigDecimal轉UFDouble型別Decimal
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別