使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值,规则如下:
- 如果是整数类型,那么默认为0
- 如果是浮点类型,那么默认为0.0
- 如果是字符类型,那么默认为'\u000'
- 如果是布尔类型,那么默认为false
- 如果是引用类型,那么默认为null
public class Demo04ArrayUse {
public static void main(String[] args) {
int[] array = new int[3];
System.out.println(array);//[I@1540e19d
System.out.println(array[0]);//0
System.out.println(array[1]);//0
System.out.println(array[2]);//0
}
}
注意事项
静态初始化也有默认值的过程,只不过系统自动马上将默认值替换成了大括号当中的具体数值
内存
JAVA的内存需要划分成5个部分
1.栈(Stack):存放的都是方法中的局部变量,方法的运行一定要在栈当中
局部变量:方法的参数,或者是方法{ }内部的变量
作用域:一旦超出作用域,立刻从栈内存当中消失
2.堆(Heap):凡是new出来的东西都在堆当中
堆内存里的东西都有一个地址值:16进制
堆内存里面的数据都有默认值,规则:
整数 0
浮点 0.0
字符 '\u000'
布尔 false
引用 null
3.方法区(Method Area):存储 .class相关信息,包含方法的信息
4.本地方法栈(Native Method Stack):与操作系统相关
5.寄存器(pc Register):与CPU相关
获取数组的长度
格式:数组名称 . length
这将会得到一个int数字,代表数组的长度
public class Demo01ArrayOne {
public static void main(String[] args) {
int[] ararayA = {1,2,3,4,5,1,0,5,49,512,32,0,565,3};
int len = ararayA.length;
System.out.println("arrayA数组的长度是"+ len);//14
}
}
数组一旦创建,程序运行期间长度不能发生改变
遍历数组
对数组当中的每一个元素进行逐一、挨个儿处理,默认的处理方式就是打印输出
public class Demo01ArrayOne {
public static void main(String[] args) {
int[] array = {10,20,30,40,50,60,70};
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
直接输 array.fori
求数组中最小值
public class Demo01ArrayOne {
public static void main(String[] args) {
int[] array = {15,5,-20,30,100,5787};
int min = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] < min) {
min = array[i];
}
}
System.out.println("最小值:"+ min);//-20
}
}
数组元素反转
1.数组元素反转其实就是对称位置的元素交换
2.通常遍历数组用的是一个索引:
int i = 0 ;
现在表示堆成位置需要两个索引
int min = 0 ;
int max = array . length -1;
3.如何交换两个变量的值?
int a = 10;
int b =20;
int temp = a;
a = b ;
b = temp ;
用第三个变量倒手
4.什么时候停止交换?
(1)min = = max
(2)min > max
什么时候交换? min < max
public class Demo05ArrayReverse {
public static void main(String[] args) {
int[] array = {10, 50, 20, 40, 30};
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
System.out.println("=========");
for (int min = 0, max = array.length - 1; min < max; min++, max--){
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);//30,40,20,50,10
}
}
}
数组作为方法参数
多次打印
public class Demo01AeeayParam {
public static void main(String[] args) {
int[] array = { 10, 20, 30, 40, 50};
printArray((array));
System.out.println("====AAA====");
printArray((array));
System.out.println("====BBB====");
printArray((array));
}
public static void printArray(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
数组可以作为为方法的参数
当调用方法的时候,向方法的小括号进行传参,传递进去的其实是数组的地址值
数组作为方法的返回值
一个方法可以有多个参数名单时只能有0个或1个返回值,不能有多个返回值
如果希望一个方法当中产生了多个结果数据进行返回,使用一个数组作为返回值类型即可
public class Demo02ArrayReturn {
public static void main(String[] args) {
int[] result = calculate(10,20,30);
System.out.println("总和:" + result[0]);
System.out.println("平均数:" + result[1]);
}
public static int[] calculate(int a, int b, int c){
int sum = a + b + c;
int avg = sum / 3;
int[] array = new int[2];
array[0] = sum;
array[1] = avg;
return array;
}
}
任何数据类型都能作为方法的参数类型,或者返回值类型
数组作为方法的参数传递进去的其实是数组的地址值
数组作为方法的返回值,返回的其实也是数组的地址值