java基本型別、陣列、集合對應的包裝類詳解
本文主要是整理了近期所閱書籍而成。
第一個,基本型別的包裝類:
基本資料型別:byte,int, short, long, boolean,char, float,double等
包裝型別 : Byte,Integer,Short,Long,Boolean,Character,Float,Double等
基本型別(primitive type)
不用new來建立變數,而是建立一個並非是“引用”的“自動”變數。這個變數擁有它的“值”,並置於堆
棧中,因此更加高效。要確定每種基本型別所佔儲存空間的大小。
基本型別 大小 最小值 最大值 包裝器型別
boolean - - - Boolean
char 6bit Unicode 0 Unic ode 2(16)-1 Character
byte 8bit -128 +127 Byte
short 16bit -2(15) 2(15)-1 Short
int 32bit -2(31) 2(31)-1 Integer
long 64bit -2(63) 2(63)-1 Long
float 32bit IEEE754 IEEE754 Float
double 64bit IEEE754 IEEE754 Double
void - - - Void
Java整型
int | 4位元組(32位) | -2147483648 ~ 2147483647 (正好超過20億) |
short | 2位元組(16位) | -32768 ~ 32767 |
long | 8位元組(64位) | -9223372036854775808 ~ 9223372036854774807 |
byte | 1位元組(8位) | -128 ~ 127 |
浮點型別
float | 4位元組(32位) | 大約±3.40282347E+38F (有效位數為6-7位) |
double | 8位元組(64位) | 大約±1.79769313486231570E+308 (有效位數為15位) |
一些需要注意: 1if(x == Double.NaN)
浮點數值不適合用於禁止出現舍入誤差的金融計算中。例如System.out.println( 2.0 - 1.1);將列印0.899999999999999,而不是0.9。因為浮點數值採用二進位制系統表示,而二進位制無法精確表示分數1/10,就像十進位制無法精確表示1/3一樣。如果需要在數值計算中不含有舍入誤差,就應該使用BigDecimal類。
一、 包裝類(Wrapper Class)共同的方法
值得說明的是,java是可以直接處理基本型別的,但是在有些情況下我們需要將其作為物件來處理,這時就需要將其轉化為包裝類了.所有的包裝類(Wrapper Class)都有共同的方法,他們是:
(1)帶有基本值引數並建立包裝類物件的建構函式.如可以利用Integer包裝類建立物件,Integer obj=new Integer(145);
(2)帶有字串引數並建立包裝類物件的建構函式.如new Integer("-45.36");
(3)可生成物件基本值的typeValue方法,如obj.intValue();
(4)將字串轉換為基本值的 parseType方法,如Integer.parseInt(args[0]);
(5)生成哈稀表程式碼的hashCode方法,如obj.hasCode();
(6)對同一個類的兩個物件進行比較的equals()方法,如obj1.eauqls(obj2);
(7)生成字串表示法的toString()方法,如obj.toString().
轉換關係:
基本型別------>包裝器類
Integer obj=new Integer(145);
包裝器類------>基本型別
int num=obj.intValue();
字串------>包裝器類
Integer obj=new Integer("-45.36");
包裝器類------>字串包裝器類
String str=obj.toString();
字串------>基本型別
int num=Integer.parseInt("-45.36");
基本型別------>字串包裝器類
String str=String.valueOf(5);
在一定的場合,運用java包裝類來解決問題,能大大提高程式設計效率.
二、JDK1.5的新特性:自動裝包/拆包(Autoboxing/unboxing)
自動裝包/拆包大大方便了基本型別資料和它們包裝類地使用。
自動裝包:基本型別自動轉為包裝類.(int >> Integer)
自動拆包:包裝類自動轉為基本型別.(Integer >> int)
在JDK1.5之前,我們總是對集合不能存放基本型別而耿耿於懷,現在自動轉換機制
解決了我們的問題。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自動轉換成Integer.
Integer b = new Integer(2);
c.add(b + 2);
這裡Integer先自動轉換為int進行加法運算,然後int再次轉換為Integer.
第二個,陣列包裝類
java.util.Arrays類能方便地運算元組,它提供的所有方法都是靜態的。具有以下功能:
² 給陣列賦值:通過fill方法。
² 對陣列排序:通過sort方法,按升序。
² 比較陣列:通過equals方法比較陣列中元素值是否相等。
² 查詢陣列元素:通過binarySearch方法能對排序好的陣列進行二分查詢法操作。
import java.util.Arrays;
public class TestArrays {
public static void output(int[] array) {
if (array!=null) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
System.out.println();
}
public static void main(String[] args) {
int[] array = new int[5];
//填充陣列
Arrays.fill(array, 5);
System.out.println("填充陣列:Arrays.fill(array, 5):");
TestArrays.output(array);
//將陣列的第2和第3個元素賦值為8
Arrays.fill(array, 2, 4, 8);
System.out.println("將陣列的第2和第3個元素賦值為8:Arrays.fill(array, 2, 4, 8):");
TestArrays.output(array);
int[] array1 = {7,8,3,2,12,6,3,5,4};
//對陣列的第2個到第6個進行排序進行排序
Arrays.sort(array1,2,7);
System.out.println("對陣列的第2個到第6個元素進行排序進行排序:Arrays.sort(array,2,7):");
TestArrays.output(array1);
//對整個陣列進行排序
Arrays.sort(array1);
System.out.println("對整個陣列進行排序:Arrays.sort(array1):");
TestArrays.output(array1);
//比較陣列元素是否相等
System.out.println("比較陣列元素是否相等:Arrays.equals(array, array1):"+"\n"+Arrays.equals(array, array1));
int[] array2 = array1.clone();
System.out.println("克隆後陣列元素是否相等:Arrays.equals(array1, array2):"+"\n"+Arrays.equals(array1, array2));
//使用二分搜尋演算法查詢指定元素所在的下標(必須是排序好的,否則結果不正確)
Arrays.sort(array1);
System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):"+"\n"+Arrays.binarySearch(array1, 3));
//如果不存在就返回負數
System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):"+"\n"+Arrays.binarySearch(array1, 9));
}
}
輸出結果:
填充陣列:Arrays.fill(array, 5):
5 5 5 5 5
將陣列的第2和第3個元素賦值為8:Arrays.fill(array, 2, 4, 8):
5 5 8 8 5
對陣列的第2個到第6個元素進行排序進行排序:Arrays.sort(array,2,7):
7 8 2 3 3 6 12 5 4
對整個陣列進行排序:Arrays.sort(array1):
2 3 3 4 5 6 7 8 12
比較陣列元素是否相等:Arrays.equals(array, array1):
false
克隆後陣列元素是否相等:Arrays.equals(array1, array2):
true
元素3在array1中的位置:Arrays.binarySearch(array1, 3):
1
元素9在array1中的位置:Arrays.binarySearch(array1, 9):
-9
第三個,集合類包裝類
在java.util包中,有一個專門對集合進行操作的類Collentions,如集合元素排序、求最大和最小值等,該類的方法均是靜態的,可以直接 使用類名進行呼叫。由於Collections類包含多個在集合上操作的方法和相應的演算法,因此稱該類為集合的包裝器,是集合的包裝類。
集合包裝器類Collections常用方法如下:
(1)copy方法:用於列表集的複製,將所有元素從源列表複製到目標列表,列表集就是實現List<E>介面的集合。copy方法的呼叫 方法如下。
Collections.copy(dest,source)
其中目標列表dest的元素個數不能少於源列表source的元素個數。
(2)fill方法。用給定的元素填充列表中的所有元素。呼叫 方式如下
Collections.fill(list,obj)
(3)indexOfSubList方法。返回源列表中第一次出現的目標列表的起始位置,不存在 則返回-1.呼叫方式如下
Collections.indexOfSubList(source,target)
(4)lastIndexOfSubList方法:返回源列表中最後一次出現的目標列表的起始位置,不存在則返回-1.呼叫方式如下
Collections.lastIndexOfSubList(source,target)
(5)max方法:根據元素的自然順序,返回集合的最大元素,呼叫方式如下:
Collections.max(collection)
(6)min方法:根據元素的自然順序,返回集合的最小元素,呼叫方式如下
Collections.min(collection)
(7)reverse方法:反轉列表中元素的順序。呼叫方式如下:
Collections.reverse(list)
(8)sort方法:根據元素的自然順序對列表按升序進行排序。呼叫方式如下
Collections.sort(list)
相關推薦
java基本型別、陣列、集合對應的包裝類詳解
本文主要是整理了近期所閱書籍而成。 第一個,基本型別的包裝類: 基本資料型別:byte,int, short, long, boolean,char, float,double等 包裝型別 : Byte,Integer,Short,L
struts2如何接受非基本型別物件陣列或集合
這幾天在做一個小專案,其中需要在後臺接收非基本型別物件的陣列,在網上找了一些資料實驗了下並沒有取得如期的效果,後來自己摸索了一下發現瞭如下的方法可以很好的傳遞資料; 前臺使用JSON物件的格式如下:shopCarInfo[0].petId: "19ab5eb2-b2cb-4
java中Object類、包裝類詳解
Object類 Object是java中的基類,所有的類預設都會繼承Object類,所以所有的類都可以通過Object類接收,完成向上轉型,實現引數統一化。 String覆寫的兩個重要的Object方法
Scala集合特質繼承體系、定義方法與主要實現類詳解
目錄 一. 架構 二. Traversable 三. Iterable 1. Seq 1.1 緩衝器 2. Set 2.1 SortedSet 2.2 Bitset 3. Map 3.1 ListMap 四. 不可變Seq實體類 1. Lis
Java基礎學習 二 (陣列、算術運算子表示式、運算子、流程控制和基本語句)
陣列:只要建立大小就不能改變,用於儲存相同型別的元素的一個固定大小的連續集合。陣列是用於儲存資料的集合,但往往將陣列認為是相同型別的變數的集合 深層次理解參考 一:一維陣列 陣列也是物件 是引用型別 地址中存放形式 一)宣告和建立:
Java自定義物件陣列、集合排序
//實體類: package CategoryDp2; import java.util.Comparator; public class Cat implements Comparator<Cat>,Comparable<Cat>{private
java-棧、佇列、陣列、連結串列、Hash、樹以及集合(一)
引言 在這裡主要介紹一些比較重要的演算法:棧、佇列、陣列、連結串列、Hash、樹以及集合的概念 棧:先進後出 佇列:先進先出,橫向佇列,存入取出 有關棧和佇列的具體儲存資料的過程,可以通過有關圖片進行理解: 連結串列:通過一個鏈子把多個結點(元素)
字串、陣列、map集合、集合陣列、Java物件與JSON相互轉化
一、需要匯入的jar包 二、相互轉化1.字串與JSON相互轉化 //字串轉化為JSON,取JSON內元素 String jsonStr="{'name':'Jeffrey'}"; JSONObject jo=JSONObject.fr
基礎型別、運算子與表示式、流程控制、陣列與集合
該系列的博文是自己學習Kotlin的學習筆記整理,以備忘與回顧。整理來源 - 瘋狂Koltin講義 Kotlin預備知識 1、kotlin 是一門強型別語言; 2、kotlin-stdlib.jar是Kotlin執行時環境 Kotlin可以自由呼叫Java的各種庫,因
SpringMVC學習筆記(十)——包裝型別pojo、陣列、集合的引數繫結
部落格原始碼下載:戳我一下 一、包裝型別pojo引數繫結 需求: 商品查詢controller方法中實現商品查詢條件傳入。 1、包裝型別的pojo public class Ite
Java資料結構--集合、陣列、佇列、連結串列
一、集合 1、集合型別主要有3種:list、set和Map. 2、集合介面分為:Collection和Map,list、set實現了Collection介面.他的一個類繼承結構如下: Collection<--List<--Vector Collectio
java中字串、陣列和集合之間的互相轉換?
import org.apache.tomcat.util.buf.StringUtils; import java.util.ArrayList;import java.util.Arrays;import java.util.Collections; import ja
Java 基本語法----進制、運算符
忽略 如果 編譯 back 小寫 大小 false alt strong 進 制 對於整數,有四種表示方式: 二進制:0,1 ,滿 2 進 1.以 0b 或 0B 開頭。十進制:0-9 ,滿 10 進 1. 八進制:0-7 ,滿 8 進1. 以數字 0 開頭表示。十六進制
C/C++ 指標小結——指標與其它資料型別(陣列、字串、函式、結構體)的關係
一、指標與陣列和字串 1、指標與陣列 當宣告數時,編譯器在連續的記憶體空間分配基本地址和足夠的儲存空間,以容納陣列的所有元素。基本地址是陣列第一個元素(索引為0)的儲存位置。編譯器還把陣列名定義為指向第一個元素的常量指標。 元素的地址是通過索引和資料型別的比例因子來計算的;例如: x[3
typescript物件、陣列、函式的型別詳解
一、物件的型別:介面 概述:在面嚮物件語言中,介面(Interfaces)是一個很重要的概念,它是對行為的抽象,而具體如何行動需要由類(classes)去實現(implements) 1.介面使用 這個例子中定義了一個介面 Person,接著定義了一個變數 tom,它的
java新手:字串陣列、字元陣列和字串之間的轉換
(1)字串和字元陣列的轉化 // 字串轉化成字元陣列 String str = "abcdefg"; char[] ch = str.toCharArray(); //輸出a System.out.println(ch[0]); //字元陣列
【資料結構與演算法】之棧的基本介紹及其陣列、連結串列實現---第四篇
一、棧的基本介紹 1、棧的基本概念 棧是一種限制在一端進行插入和刪除操作的線性表資料結構。棧中有兩個比較重要的操作:push(壓棧:將元素壓入棧頂)和pop(彈棧:從棧頂彈出一個元素)。都滿足先進後出、後進先出的特點! 從圖中可以看出,我們常把棧的上面稱為棧
【資料結構與演算法】之佇列的基本介紹及其陣列、連結串列實現---第五篇
一、佇列的基本概念 1、定義 佇列是一種先進先出的線性表。它只允許在表的前端進行刪除操作,而在表的後端進行插入操作,具有先進先出、後進後出的特點。進行插入操作的一端成為隊尾(tail),進行刪除操作的一端稱為隊頭(head)。當佇列中沒有元素時,則稱之為空佇列。 在
JAVA基礎知識總結2——異常、陣列、字串、包裝類
異常、陣列、字串、包裝類 1.異常:執行期出現的錯誤,觀察錯誤的名字和行號最重要 異常處理:try{可能出現異常的語句}catch(異常型別 物件){異常處理} 先逮小的異常,再
java 利用一維陣列、二維陣列列印楊輝三角
列印楊輝三角 一維陣列 Triggle1.java package 第一章; //利用一維陣列列印楊輝三角 import java.util.Scanner; public class Triggl