1. 程式人生 > >java基本型別、陣列、集合對應的包裝類詳解

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)  
// is never true 1if(Double.isNaN(x))  // check whether is "not a number"


       浮點數值不適合用於禁止出現舍入誤差的金融計算中。例如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