數組
動態創建數組時:先聲明後賦值
基本數據類型:byte short int long 默認值是0
float doule 默認值是0.0
char是空格
boolean 是false
引用數據類型:默認初始化值爲null 比如String
一維數組的內存結構
棧stack:存放局部變量,對象的引用
堆heap:new出來的東西
int [] scores = new int[4];
第一句的意思:在棧中存scores:0x999 地址
在堆中開闢了四個空間 默認值是0
scores[0] = 98;
scores[3] = 28;
以上的意思:98和28覆蓋了堆中的響應位置的值
二維數組內存分析
int[] a1,a2;
a1 = new int[]{1,2,3,4,5};
for (int i = 0; i <a1.length ; i++) {
System.out.print(a1[i]);
}
a2 = a1;
for (int i = 0; i <a2.length ; i++) {
a2[i]=i;
}
System.out.println();
for (int i = 0; i <a1.length ; i++) {
System.out.print(a1[i]);
}
將a2=a1 修改a2的值,a1也會發生變化,基於內存分析,在棧中存了變量a1,和,a2指向的地址是同一個堆中的地址,修改a2導致堆中地址中值發生變化,故a1也會發生變化
數組算法實現楊輝三角:
import java.util.Scanner;
/**
* 楊輝三角
* 1.第一行有1個元素,第n行有n個元素
* 2.每一行的第一個元素和最後一個元素都是1
* 3.第三行開始,對於第一個元素和最後一個元素
* yanghui[i][j]= yanghui[i-1][j-1]+[i-1][j]
*/
public class Test {
public static void main (String[] args){
//實現數組的反轉
int[] a1 = new int[5];
for (int i = 0; i <a1.length ; i++) {
a1[i] = i;
}
//第一種方式
for (int i = 0; i <a1.length/2 ; i++) {
int temp = a1[i];
a1[i] = a1[a1.length-i-1];
a1[a1.length-i-1]=temp;
}
//第二種方式
for (int x = 0,y = a1.length-1; x < y; x++,y--) {
int temp = a1[x];
a1[x] = a1[y];
a1[y] = temp;
}
//打印數組
for (int i = 0; i <a1.length ; i++) {
System.out.println(a1[i]);
}
}
}
基本數組的反轉
定義一個數組,隨機賦值
//第一種方式
for (int i = 0; i <a1.length/2 ; i++) {
int temp = a1[i];
a1[i] = a1[a1.length-i-1];
a1[a1.length-i-1]=temp;
}
//第二種方式
for (int x = 0,y = a1.length-1; x < y; x++,y--) {
int temp = a1[x];
a1[x] = a1[y];
a1[y] = temp;
}