数组
public class shuzu{
public static void main(String[] args){
int[] arr = new int[3]
//动态初始化,new是为数组申请空间,3是数组长度, 即数组中的元素个数
int a[]={1,2,3,4};
int b[]={100,200,300};
//静态初始化
System.out.println("数组a的元素个数:"+a.length);
System.out.println("数组b的元素个数:"+b.length);
System.out.println("数组a的引用:"+a);
System.out.println("数组b的引用:"+b);
a=b;
System.out.println("数组a的元素个数:"+a.length);
System.out.println("数组b的元素个数:"+b.length);
System.out.println("数组a的引用:"+a);
System.out.println("数组b的引用:"+b);
System.out.println("a[0]="+a[0]+"a[1]="+a[1]+"a[2]="+a[2]);
System.out.println("b[0]="+b[0]+"b[1]="+b[1]+"b[2]="+b[2]);
//a=b是把b的引用赋值给a,同时也相当于把整个b数组赋给a
char c[]={'中','国','科','大'};
System.out.println(c);
//对于字符型数组,直接println数组名不会输出引用,而是输出数组内容
//若想输出char型数组引用,让a和字符串做并置运算
System.out.println(""+c);
}
}
注意:数组在初始化时,会为存储空间添加默认值
默认值:
整数:0 浮点:0.0 布尔:false 字符:空字符
引用数据类型:null
(引用数据类型类似指针, 指向一个对象,指向对象的变量是引用变量,这些变量在声明时被指定为一个特定的类型,比如String、User,变量一旦声明,类型就不能被改变了,Java的引用类型有三种,分别是类class、接口interface、数组array)
未初始化数组就输出会编译错误
索引越界:如果arr={1,2,3},输出arr[3],编译能通过,但运行 会触发异常,会出现报错ArrayIndexOutOfBoundsException
空指针异常:访问的数组已不再指向堆内存数据,如arr=null,访问数组具体元素会报错NullPointerException
数组tips:
数组遍历时可以在for循环中使用.length
冒泡法:
public class maopaofa {
public static void main(String[] args) {
int arr[] = {12, 34, 56, 78, 99};
int max = arr[0];
int x;
for (x = 1; x < arr.length; x++) {
if (max < arr[x]) max = arr[x];
}
System.out.println("最大值是:" + max);
int min = arr[0];
int y;
for (y = 0; y < arr.length; y++) {
if (min > arr[y]) min = arr[y];
}
System.out.println("最小值是:" + min);
}
}
内存分配
int arr[]=new int[3]
栈内存:存储局部变量
定义在方法中的变量
如:int arr[]中的arr
使用完毕,立即消失
堆内存:存储new出来的内容(实体、对象)
如:new int[3]
数组初始化时,会为存储空间添加默认值
每一个new出来的东西都有一个地址值
使用完毕会在垃圾回收器空闲时被回收