日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java數組的三種擴容方式以及程序實現詳解

瀏覽:25日期:2022-08-19 09:18:03

因為數組是在內存中連續的一段存儲空間,所以數組一旦被創建,空間就固定了,長度是不能擴增的。

數組的長度是固定的,如果需要擴充**,必須創建新數組,原數組的長度要復制到新數組中 。**

java中,數組類型的變量傳值的時候,事實上傳遞的是數組的地址 。

Java數組擴容的原理

1)Java數組對象的大小是固定不變的,數組對象是不可擴容的。

2)利用數組復制方法可以變通的實現數組擴容。

3)System.arraycopy()可以復制數組。

4)Arrays.copyOf()可以簡便的創建數組副本。

5)創建數組副本的同時將數組長度增加就變通的實現了數組的擴容。

數組擴容的三種方式:

新建一個數組,把原來數組的內容搬到 新數組中。

用系統定義函數system.arraycopy實現擴容;

用系統定義函數copyof函數實現擴容;

下面用程序來實現這三種擴容

class expand2{ //利用函數的方法進行數組的擴充 public static void main(String[] args) { //定義一個小型的數組 int[] a={1,2,3,5}; //調用擴容函數 //a=expand2(a); //a=expand3(a); a=expand4(a); //測試是否擴容完成,輸出此時數組a中的值 for (int i=0;i<a.length;i++) { System.out.println('aaaa:'+a[i]); } } //擴容函數, public static int[] expand2(int a[]){ //定義一個新數組b,并為其賦值長度為數組a的二倍 int b[] = new int[a.length*2]; //將數組a的元素循環遍歷到數組b中 for (int i=0;i<a.length;i++) { b[i] = a[i]; } //返回擴容后的數組b return b; } //數組擴容方法3,利用系統函數arraycopy進行擴容 public static int[] expand3(int a[]){ int[] b = new int[a.length*2]; //系統函數進行擴容,將a[]的值賦值到b[]中,共a.length個長度。 //相當于第19-21行 System.arraycopy(a,0,b,0,a.length); return b; } //數組擴容方法4,利用系統函數copy進行擴容 public static int[] expand4(int a[]){ //可以查看api文檔,java.util.Arrays.copyOf的詳細使用; return java.util.Arrays.copyOf(a,a.length*2); }}實現案例:

案例1 : 統計一個字符在字符串中的所有位置.

字符串: 統計一個字符在字符串中的所有位置

字符: ’字’

返回: {4,7}

public class CountCharDemo { public static void main(String[] args) { char key = ’字’; String str = '統計一個字符在字符串中的所有位置'; int[] count=count(str,key); System.out.println(Arrays.toString(count));//[4, 7] } public static int[] count(String str,char key){ int[] count={}; for(int i=0;i<str.length();i++){ char c=str.charAt(i); if(c==key){ //擴展數組 count=Arrays.copyOf(count, count.length+1); //添加序號i count[count.length-1]=i; } } return count; }}

char[]、String、StringBuilder

char[]:字符序列, 只有字符數據, 沒有操作, 如果算法優秀, 性能最好。

String: char[] + 方法(操作, API功能)

StringBuilder: char[] + 方法(操作char[] 的內容)

String:內部包含內容不可變的char[],表現為String對象不可變。String包含操作(API方法),是對char[]操作,但不改變原對象經常返回新的對象,很多String API提供了復雜的性能優化算法,如:靜態字符串池。

StringBuilder:內部也是一個char[],但是這個數組內容是可變的,并且自動維護擴容算法,因為數據內容可變,所以叫:可變字符串。StringBuilder API方法,是動態維護char[]內容,都可以改變char[]內容。

public abstract class AbstractStringBuilder { /** The value is used for character storage.*/ char value[]; /** The count is the number of characters used.*/ int count; /** Returns the length (character count).*/ public int length() { return count; } public AbstractStringBuilder append(String str) { if (str == null) str = 'null'; int len = str.length(); if (len == 0) return this; int newCount = count + len; if (newCount > value.length) expandCapacity(newCount); str.getChars(0, len, value, count); count = newCount; return this; } /** * 自動實現Java數組擴容 */ void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (newCapacity < 0) { newCapacity = Integer.MAX_VALUE; } else if (minimumCapacity > newCapacity) { newCapacity = minimumCapacity; } value = Arrays.copyOf(value, newCapacity); }}

字符串數組與String類的原理

/** 字符串數組與String類的原理 */public class CharArrayDemo { public static void main(String[] args) { /* Java 可以將char[]作為字符串處理 */ char[] ch1={’中’,’國’,’北’,’京’}; char[] ch2={’歡’,’迎’,’您’}; System.out.println(ch1);//中國北京 System.out.println(ch2);//歡迎您 /* char[]運算需要編程處理,如連接: */ char[] ch3=Arrays.copyOf(ch1, ch1.length+ch2.length); System.arraycopy(ch2, 0, ch3, ch1.length, ch2.length); System.out.println(ch3);//中國北京歡迎您 /* String API提供了簡潔的連接運算: */ String str1='中國北京'; String str2='歡迎您'; String str3=str1.concat(str2); System.out.println(str3);//中國北京歡迎您 /* 字符串轉大寫: */ char[] ch4={’A’,’a’,’c’,’f’}; char[] ch5=Arrays.copyOf(ch4, ch4.length); for(int i=0;i<ch5.length;i++){ char c=ch5[i]; if(c>=’a’ && c<=’z’){ ch5[i]=(char)(c+(’A’-’a’)); } } System.out.println(ch5);//AACF, 原數組ch4不變 String str4='Aacf'; String str5=str4.toUpperCase();//原字符串str4保持不變 System.out.println(str5);//AACF }}

到此這篇關于java數組的三種擴容方式以及程序實現詳解的文章就介紹到這了,更多相關java數組擴容內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
五月天久久777| 亚洲综合在线电影| 深夜视频一区二区| 免费在线欧美黄色| 婷婷成人av| 欧美亚洲三区| 精品一区二区三区的国产在线观看| 国产日韩欧美一区| 欧美成人精品一级| 欧美日韩国产观看视频| 国模精品一区| 国产精品天天看天天狠| 欧美日韩99| 欧美一级全黄| 精品视频91| 成人精品动漫一区二区三区| 精品国产不卡| 成人片免费看| 激情六月综合| 日韩中文字幕1| 日韩一区二区三区免费视频 | 偷拍精品精品一区二区三区| 91亚洲国产成人久久精品| 久久精品国产99| 亚洲性色视频| 色综合视频一区二区三区日韩| 国产精品一级| 亚洲高清av| 日韩高清在线观看一区二区| 国产欧美一级| 亚洲激情黄色| 国产精品免费不| 国产精品日本| 91欧美日韩| 国产日韩欧美一区二区三区在线观看| 92国产精品| 欧美精品第一区| 欧美午夜精彩| 麻豆一区二区三区| 欧美综合国产| 日韩伦理福利| 久久精品国产网站| 亚洲精品综合| 好吊视频一区二区三区四区| 欧美国产小视频| 国产亚洲电影| 亚洲a成人v| 一区二区三区四区在线观看国产日韩| 美女网站视频一区| 高清日韩欧美| 久久97视频| 你懂的亚洲视频| 天堂av一区| 天使萌一区二区三区免费观看| 国产精品13p| 精品视频久久| 久久福利在线| 亚洲三级网址| 婷婷成人av| 亚洲91网站| 日韩av中文在线观看| 亚洲不卡视频| 日本h片久久| 欧美伊人影院| 国产精品宾馆| 国产成人黄色| 成人福利视频| 日本蜜桃在线观看视频| 精品欧美一区二区三区在线观看| 精品国产91| 国内自拍视频一区二区三区| 美女国产一区二区三区| 国产激情欧美| 性感美女一区二区在线观看| 日韩久久精品| 伊人久久成人| 国产欧美激情| 亚洲不卡系列| 亚洲黄页一区| 在线精品视频一区| 国产精品一区二区三区美女 | 国产免费av国片精品草莓男男| 久久久久亚洲精品中文字幕| 中文字幕在线官网| 美女国产精品| 久久99影视| 亚洲电影有码| 日本综合视频| 欧美精品日日操| 日韩一区精品| 成人精品亚洲| 久久国产乱子精品免费女| 日韩欧美精品一区| 日韩精品社区| 国产91一区| 欧美a一区二区| 欧美中文字幕| 国产粉嫩在线观看| 欧美视频精品全部免费观看| 日本国产精品| 国产精品蜜月aⅴ在线| 欧美日韩国产探花| 国内不卡的一区二区三区中文字幕| 亚洲综合精品| 中文在线а√在线8| 日韩高清一区在线| 午夜久久tv| 日韩免费看片| 国产中文在线播放| 日韩中出av| 亚洲在线久久| 欧美日韩国产免费观看| 成人污污视频| 国产精品亲子伦av一区二区三区 | 亚洲精品麻豆| 激情婷婷欧美| 日韩欧美1区| 国产一区二区三区久久久久久久久| 日本午夜精品久久久| 综合激情一区| 亚洲激情不卡| 91精品久久久久久久久久不卡| 国产精品亚洲人成在99www| 亚洲2区在线| 91精品啪在线观看国产爱臀| 伊人精品视频| 蜜桃av一区二区在线观看| 亚洲欧美激情诱惑| 国产亚洲亚洲| 视频一区免费在线观看| www成人在线视频| 不卡av一区二区| 亚洲免费黄色| 亚洲精品系列| 91看片一区| 国产女优一区| 91亚洲精品在看在线观看高清 | 久久网站免费观看| 亚洲综合另类| 久久精品99国产精品日本| 国产精品一区高清| 国内在线观看一区二区三区 | 国产亚洲永久域名| 日韩成人午夜精品| 国产精品成人3p一区二区三区| 精品欧美日韩精品| 国产欧美日韩一区二区三区四区| 日本午夜精品久久久久| 你懂的亚洲视频| 中文字幕人成乱码在线观看| 欧美91精品| 在线国产日韩| 中文在线免费视频| 亚洲欧美日韩一区在线观看| 清纯唯美亚洲综合一区| 欧美激情麻豆| 国产精品外国| 久久久久久色| 国产精品精品| 99视频在线精品国自产拍免费观看| 亚洲免费毛片| 成人久久一区| 久久精品理论片| 91国语精品自产拍| 久久精品福利| 亚洲精品自拍| 激情综合网站| 国产精品国产一区| 欧美亚洲综合视频| 国产一级一区二区| 日韩专区精品| 美女在线视频一区| 亚洲欧美久久精品| 99国产精品私拍| 色天使综合视频| 国内在线观看一区二区三区| 亚洲欧美网站在线观看| 亚洲婷婷免费| 九九久久国产| 国产精品主播| 日本va欧美va欧美va精品| 蜜臀久久99精品久久久久久9| xxxxx性欧美特大| 久久精品国产99国产| 国产美女精品视频免费播放软件| 亚洲综合不卡| 亚洲在线网站| 日韩中文字幕1| 伊人国产精品| 日本亚洲欧美天堂免费| 亚洲涩涩av| 亚洲区欧美区| 婷婷综合国产| 日韩在线卡一卡二| 亚洲一卡久久| 四虎精品一区二区免费| 久久激情五月婷婷| 国产精品久久久久av蜜臀| 国产精品777777在线播放| 卡一卡二国产精品|