Day16 基本資料型別物件包裝類 和 集合的入門
基本資料型別物件包裝類
為了方便操作基本資料型別值,將其封裝成了物件,在物件中定義了屬性和行為豐富了該資料的操作。用於描述該物件的類就稱為基本資料型別物件包裝類。
byte--->Byte
short--->Short
int--->Integer
long--->Long
float --->Float
double --->Double
char --->Character
boolean --->Boolean
該包裝物件主要用基本型別和字串之間的轉換。
基本型別--->字串Integer i = new Integer(5); Integer i=new Integer("123"); System.out.println(Integer.MAX_VALUE); //輸出int類的最大數值2147483647 System.out.println(Integer.toBinaryString(-6)); //以二進位制無符號整數形式返回字串 System.out.println("123"+1); //輸出結果為1231 System.out.println(Integer.parseInt("123")+1); //輸出結果為124 有執行時異常處理
1,基本型別數值+""
2,用String類中的靜態方法valueOf(基本型別數值);
3,用Integer的靜態方法valueOf(基本型別數值);
字串--->基本型別
1,使用包裝類中的靜態方法 (返回型別)xxx parseXxx("xxx型別的字串")
int parseInt("intstring");
long parseLong("longstring");
boolean parseBoolean("booleanstring");
..............
只有Character沒有parse方法
2,如果字串被Integer進行物件的封裝。
可使用另一個非靜態的方法,intValue();
將一個Integer物件轉成基本資料型別值。
Integer i = new Integer("123");
System.out.println(i.intValue());
基本資料型別物件包裝類中的進位制轉化
十進位制-->其他進位制。
toBinaryString
toOctalString
toHexString
toString(數值,進位制基數)
parseInt("string",radix)
parseInt("1111011",2) //123
parseInt("EFDEF",16) //982511
自動裝箱: Integer i = 4;//i = new Integer(4); // 簡化書寫。
i = i + 6; // i = new Integer(i.intValue() + 6);
//i.intValue() 自動拆箱
什麼時候自動裝箱
基本資料型別賦值給引用資料型別才進行裝箱
Integer a = new Integer(128);
Integer b = new Integer(128);
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true 比較數值 複寫Object類中的equals方法
Integer x = 129;
Integer y = 129;
System.out.println(x==y);// false 127(包括)之前都是true 128(包括)之後都是false
System.out.println(x.equals(y));//true
//jdk1.5以後,自動裝箱,如果裝箱的是一個位元組,那麼該資料會被共享不會重新開闢空間。
練習:
對一個字串中的數值進行從小到大的排序。 例如 "20 78 9 -7 88 36 29"
思路:
1,排序,但是隻會基本型別的排序。
2,如何獲取到這個字串中的這些需要排序的數值?
發現這個字串中其實都是空格來對數值進行分隔的。
所以就想到用字串物件的切割方法將大串變成多個小串。
3,數值最終變成小字串,怎麼變成一個int數呢?
字串-->基本型別 可以使用包裝類。
========================================================
集合類的由來:
物件用於封裝特有資料,物件多了需要儲存,如果物件的個數不確定。
就使用集合容器進行儲存。 在java中的util包中
集合特點:
1,用於儲存物件的容器。
2,集合的長度是可變的。
3,集合中不可以儲存基本資料型別值。
集合容器因為內部的資料結構不同,有多種具體容器。
不斷的向上抽取,就形成了集合框架。
框架的頂層Collection介面:
Collection的常見方法:
1,新增。
boolean add(Object obj):
boolean addAll(Collection coll):
boolean remove(object obj):
boolean removeAll(Collection coll); //將兩個集合中的相同元素從呼叫removeAll的集合中刪除。
void clear();
3,判斷:
boolean contains(object obj):
boolean containsAll(Colllection coll);
boolean isEmpty():判斷集合中是否有元素。
4,獲取:
int size():
Iterator iterator():取出元素的方式:迭代器。
該物件必須依賴於具體容器,因為每一個容器的資料結構都不同。
所以該迭代器物件是在容器中進行內部實現的。
對於使用容器者而言,具體的實現不重要,只要通過容器獲取到該實現的迭代器的物件即可,
也就是iterator方法。
Iterator介面就是對所有的Collection容器進行元素取出的公共介面。其實就是抓娃娃遊戲機中的夾子!
5,其他:
boolean retainAll(Collection coll);取交集,保留和指定的集合相同的元素,而刪除不同的元素,和removeAll功能相反 。
Object[] toArray():將集合轉成陣列。
單個集合的操作演示
public static void main(String[] args)
{
Collection coll = new ArrayList();
show(coll);
}
public static void show(Collection coll){
//1,新增元素。add.
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
System.out.println(coll);
//2,刪除元素。remove
coll.remove("abc2");//會改變集合的長度
//3,判斷:
System.out.println(coll.contains("abc3"));
//清空集合.
coll.clear();
System.out.println(coll);
}
雙集合操作演示
public static void main(String[] args) {
Collection coll = new ArrayList();
Collection c1 = new ArrayList();
Collection c2 = new ArrayList();
show(c1,c2);
}
public static void show(Collection c1,Collection c2){
//給c1新增元素。
c1.add("abc1");
c1.add("abc2");
c1.add("abc3");
c1.add("abc4");
//給c2新增元素。
c2.add("abc1");
c2.add("abc2");
c2.add("abc3");
c2.add("abc4");
c2.add("abc5");
System.out.println("c1:"+c1);
System.out.println("c2:"+c2);
//演示addAll
// c1.addAll(c2);//將c2中的元素新增到c1中。
//演示removeAll
boolean b = c1.removeAll(c2);//將兩個集合中的相同元素從呼叫removeAll的集合中刪除。
System.out.println("removeAll:"+b);
//演示containsAll
boolean b = c1.containsAll(c2);
System.out.println("containsAll:"+b);
//演示retainAll
boolean b = c1.retainAll(c2);//取交集,保留和指定的集合相同的元素,而刪除不同的元素。
//和removeAll功能相反 。
System.out.println("retainAll:"+b);
System.out.println("c1:"+c1);
}
Iterator迭代器的使用
//使用Collection中的iterator()方法。 呼叫集合中的迭代器方法,獲取集合中的迭代器物件。
Iterator it = coll.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//兩種迴圈的使用 for迴圈更好 因為在迭代結束後,仍可以使用迭代器,while的使用後迭代器不重置
for(Iterator it = coll.iterator(); it.hasNext(); ){
System.out.println(it.next());
}
Collection|--List:有序(存入和取出的順序一致),元素都有索引(角標),元素可以重複。
|--Set:元素不能重複,無序。
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args)
{
List list = new ArrayList();
show(list);
}
public static void show(List list) {
//新增元素
list.add("abc1");
list.add("abc2");
list.add("abc3");
System.out.println(list);
//插入元素。 void add(index,element); void add(index,collection);
list.add(1,"abc9");
//刪除元素。 Object remove(index):
System.out.println("remove:"+list.remove(2));
//修改元素。 Object set(index,element);
System.out.println("set:"+list.set(1, "abc8"));
//獲取元素。
//Object get(index);int indexOf(object);int lastIndexOf(object);List subList(from,to);
System.out.println("get:"+list.get(0));
//獲取子列表。前閉後開
System.out.println("sublist:"+list.subList(1, 2));
System.out.println(list);
}
}
list集合是可以完成對元素的增刪改查。
List:
|--Vector:內部是陣列資料結構,是同步的。增刪,查詢都很慢!
|--ArrayList:內部是陣列資料結構,是不同步的。替代了Vector。查詢的速度快。
|--LinkedList:內部是連結串列資料結構,是不同步的。增刪元素的速度很快。
List中使用Iterator修改時的錯誤
Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();//java.util.ConcurrentModificationException
//在迭代器過程中,不要使用集合操作元素,容易出現異常。
//可以使用Iterator介面的子介面ListIterator來完成在迭代中對元素進行更多的操作。
if(obj.equals("abc2")){
list.add("abc9");
}
else
System.out.println("next:"+obj);
}
System.out.println(list);
正確用法ListIterator it = list.listIterator();
//獲取列表迭代器物件 它可以實現在迭代過程中完成對元素的增刪改查。
//注意:只有list集合具備該迭代功能.
while(it.hasNext()){
Object obj = it.next();
if(obj.equals("abc2")){
it.set("abc9");
}
System.out.println("hasNext:"+it.hasNext());
}
iterator和listiterator的區別
一.相同點
都是迭代器,當需要對集合中元素進行遍歷不需要干涉其遍歷過程時,這兩種迭代器都可以使用。
二.不同點
1.使用範圍不同,Iterator可以應用於所有的集合,Set、List和Map和這些集合的子型別。而ListIterator只能用於List及其子型別。
2.ListIterator有add方法,可以向List中新增物件,而Iterator不能。
3.ListIterator和Iterator都有hasNext()和next()方法,可以實現順序向後遍歷,但是ListIterator有hasPrevious()和previous()方法,可以實現逆向(順序向前)遍歷。Iterator不可以。
4.ListIterator可以定位當前索引的位置,nextIndex()和previousIndex()可以實現。Iterator沒有此功能。
5.都可實現刪除操作,但是ListIterator可以實現物件的修改,set()方法可以實現。Iterator僅能遍歷,不能修改。
相關推薦
Day16 基本資料型別物件包裝類 和 集合的入門
基本資料型別物件包裝類 為了方便操作基本資料型別值,將其封裝成了物件,在物件中定義了屬性和行為豐富了該資料的操作。用於描述該物件的類就稱為基本資料型別物件包裝類。byte--->Byteshort--->Shortint--->Integerlong---
黑馬程式設計師——Java之String類、基本資料型別物件包裝類等
例如:parseInt("0", 10) 返回 0。 parseInt("473", 10) 返回 473。 parseInt("-0", 10) 返回 0。 parseInt("-FF", 16) 返回 -255。 parseInt("1100
Java基礎——常用物件API(二)——基本資料型別物件包裝類
一、概述 為了方便操作基本資料型別值,將其封裝成了物件,在物件中定義了屬性和行為豐富了該資料的操作。用於描述該物件的類就成為基本資料型別物件包裝類。 物件 類名 byte Byte short
JAVA——基本資料型別物件包裝類/自動裝箱
基本資料型別物件包裝類。 基本資料型別 基本資料型別物件 byte Byte short Short int Integer long
基本資料型別的包裝類(wrapper class)、時間處理相關類、Math類、File類、列舉類
包裝類(wrapper class) --基本資料型別對應的類統稱為包裝類(Wrapper Class)。包裝類均位於java.lang包,包裝類和基本資料型別的對應關係如下表所示: 基本資料型別 包裝類 byte Byte
Java 知識點整理-7.StringBuffer類+氣泡排序+選擇排序+二分法+Arrays類+基本資料型別的包裝類
1、StringBuffer類概述:執行緒安全的可變字元序列,一個類似於String的字串緩衝區,但不能修改(不能像String那樣用加號與其他型別資料連線),但通過某些方法呼叫可以改變該序列的長度和內容。java.lang包下,使用時不用導包。final修飾,不能有子類。 2、StringBu
Java中基本資料型別與包裝類,字串轉換
儲存範圍大小: byte-short-char-int-long-float-double 低階到高階自動型別轉換: int i = 5; float f = i; double d = i; 高階到低階強制型別轉換: int a = 20; byte b = (byte) a;
Java基礎:Java基本資料型別以及包裝類
1. 前言 最近在研究Java 基礎知識,作為Java最重要的資料型別。Java有八大基本資料型別,相對應的有八種包裝類。我們需要對這些基本資料型別進行理解和掌握。 2.Java基本資料型別 Java基本型別共有八種,基本型別可以分為三類,字元型別char,布林型別boolean
基本資料型別、包裝類及String三者之間的相互轉化(拆箱,自動轉化)
1.基本資料型別和包裝類之間的轉化 //基本資料型別---->對應的包裝類:呼叫包裝類的構造器 @Test public void test() { int i = 10; Integer
java基本資料型別的包裝類
package cn.sasa.demo1; public class TestDemo { public static void main(String[] args) { /** *基本資料型別對應的包裝類 *char ---- Character *int ------
基本資料型別與包裝類區別
java中八大基本資料型別: Byte,short,int,long,char,double,float,boolean 二者之間也存在一些區別: 宣告方式不同,基本型別不適合new關鍵字,而包裝型別需要使用new關鍵字來在堆中分配儲存空間; 儲存方式及位置不同,基本型別
Java學習(十)基本資料型別的包裝類
byte ——> Byte short ——> Short char——> Character int ——> Integer long ——> Long float ——> Float double ——> Double boolean ——> Boolean
Java基礎學習總結(122)——Java八種基本資料型別的包裝類及其裝箱拆箱詳解
一、基本資料型別及對應的包裝類基本資料型別對應的包裝類byteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDoublebooleanBoolean每個包裝類的物件可以封裝一個相應的基本型別的資料,並提供了其它一些有用的方法。包裝類物
Java 八大基本資料型別以及包裝類的詳解
一、java中八種基本資料型別對應的包裝型別: 原始型別 包裝類 原始型別所佔的位元組數 short Short 2個位元組
基本資料型別做形參和物件做形參的區別
//Testl.java public class Testl { public static void main(String[]args) { //宣告並定義區域性變數local int local=0;
java基礎--17--基本型別物件包裝類、System、Math、Arrays工具類
把字串轉換為基本資料型別 將基本資料型別轉成字串 兩種方式:1是藉助加號2是藉助toString,引數1是十進位制,引數2把引數1轉成對應的進位制數,和parseInt有區別 integer的構造方法,藉助intValue把字串轉換為基本資料型別
java的基本資料型別與封裝類
部落格轉自https://blog.csdn.net/maggiedorami/article/details/7944459 Integer是一個類,是int的封裝類。 int是基本資料型別。 Integer就是把一個int型別的封裝成一個類。
基本資料型別與其包裝型別
---- 基本型別 與 包裝型別 Java 中預定義了八種基本資料型別,包括:byte,int,long,double,float,boolean,char,short。基本型別與物件型別最大的不同點在於,基本型別基於數值,物件型別基於引用。 基本型別的
Java_52.1_基本資料型別_包裝器型別的關係
在程式設計中經常用到一系列的資料型別,在Java中也一樣包含八中資料型別,這八種資料型別又各自對應一種包裝器型別。 String包裝類引用型別 如下表: 基本型別 包裝器型別 boolean Boolean
Java基礎知識回顧之常用資料型別的包裝類
Java基礎知識回顧之常用資料型別 Java基礎知識回顧之常用資料型別的包裝類 簡介 Java 雖然是一門面向物件的程式語言,但是其包括的8種基本資料型別並不支援面向物件的程式設計機制。也就說基本資料型別不具備“物件”的特性。例如:沒有屬性、沒有方法可以呼叫。 為了解決8個基