欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學堂Java面試題之帶你了解模糊數(shù)組

2019-07-17 10:05:56 2737瀏覽

今天千鋒扣丁學堂Java培訓老師給大家分享一篇關于從java面試題了解模糊數(shù)組的詳細介紹,首先數(shù)組用來存儲一系列的數(shù)據(jù)項,其中的每一項具有相同的基本數(shù)據(jù)類型、類或相同的父類。通過使用數(shù)組,可以在很大程度上縮短和簡化程序代碼,從而提高應用程序的效率。下面我們一起來看一下吧。



數(shù)組,最基礎的一種數(shù)據(jù)結構。盡管看起來非常的簡單、基礎,但是面試往往逃不過它。

特性

下標從0開始

線性表數(shù)據(jù)結構

一組連續(xù)的內存空間來存儲一組具有相同類型的數(shù)據(jù)

如何實現(xiàn)隨機訪問

從上面的特性可以得到幾個關鍵詞:

1.線性表。線性表就是數(shù)據(jù)排成一條線一樣的結構。只有前后兩個關系。比如:數(shù)組、鏈表、棧、隊列等;

2.連續(xù)的內存空間和相同類型的數(shù)據(jù)。所以你所回答的不適合insert、delete就是基于這個原因,為了保持它的連續(xù)性。

數(shù)組根據(jù)下標實現(xiàn)隨機訪問數(shù)組元素的公式:

a[i]_address = base_address + i * data_type_size

其中,base_address為數(shù)組內存塊的首地址,data_type_size為元素大?。ū热纾瑪?shù)據(jù)類型為int,則data_type_size為4)

如何動態(tài)擴容

數(shù)組本身在定義的時候就是需要預先指定大小的,因為需要分配連續(xù)的內存空間。

以ArrayList來說,每次存儲空間不足的時,它都會將空間自動擴容1.5倍。

但是擴容操作涉及到內存申請和數(shù)據(jù)遷移,比較耗時,所以事先指定好大小是可以優(yōu)化性能的。

ArrayList給定的默認容量大小是10:

/**
* Default initial capacity.
*/
private static final int DEFAULT_CAPACITY = 10;

擴容源碼:

/**
* Increases the capacity to ensure that it can hold at least the
* number of elements specified by the minimum capacity argument.
*
* @param minCapacity the desired minimum capacity
*/
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}

最后想著還是來一波面試題吧。

代碼如下:

public static void main(String[] args) {
int a=10;
int b=20;
System.out.println("a="+a+" b="+b);
change(a, b);
System.out.println("a="+a+" b="+b);
}
public static void change(int a,int b) {
a=b;
b=a+b;
System.out.println("a="+a+" b="+b);
}

輸出結果:

a=10 b=20
a=20 b=40
a=10 b=20

如果改成數(shù)組呢,結果是否有變?

public static void main(String[] args) {
int[] arr = {9,3,4,5,6};
change(arr);
System.out.println(arr[1]);
}
public static void change(int[] arr) {
for(int i=0;i<arr.length;i++) {
if(arr[i] % 3 == 0) {
arr[i]*=2;
}
}
}

輸出結果:

6

是不是似曾相識,在某場筆試中?記得之前在某公司面試的時候,就出現(xiàn)了這樣的題,雖說讓我給蒙中了,但是面試官貌似對我很有興趣(PS:手動狗頭),一問到底,為!什!么!你的答案是這樣的,來,說說你的思路Or理解。

簡單分析:

基本數(shù)據(jù)類型的值傳遞,不改變原始值,因為方法調用后就會彈棧,局部變量隨之消失。

引用數(shù)據(jù)類型的值傳遞,改變原始值,因為即使方法彈棧,但是堆內存數(shù)組對象還在,可以通過地址繼續(xù)訪問。

以上就是關于千鋒扣丁學堂Java面試題之帶你了解模糊數(shù)組的全部內容,希望對大家的學習有所幫助,想要了解更多關于Java方面內容的小伙伴,請關注扣丁學堂Java培訓官網、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的Java視頻,Java培訓后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學堂老師精心推出的Java視頻教程定能讓你快速掌握Java從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂Java技術交流群:850353792。


                        JavaEE/微服務/源碼解析/分布式/企業(yè)級架構【VIP體驗課】


     【關注微信公眾號獲取更多學習資料】       【掃碼進入JavaEE/微服務VIP免費公開課】  



查看更多關于“Java開發(fā)資訊”的相關文章>>

標簽: Java培訓 Java視頻教程 Java多線程 Java面試題 Java學習視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部