publicclassArrayDemo01{publicstaticvoidmain(String[] args){//变量的类型 变量的名字 = 变量的值;int nums2[];int[] nums3 =newint[10];int[] nums1;//1.声明数组,num1在栈中
nums1 =newint[10];//2.创建数组,int[10]在堆中//3.给数组元素赋值,在堆中赋值for(int i =0; i <10; i++){
nums1[i]= i +1;}int sum =0;//可能报错:java.lang.ArrayIndexOutOfBoundsExceptionfor(int i =0; i < nums1.length; i++){
System.out.println(nums1[i]);
sum = sum + nums1[i];}
System.out.println(sum);}}/*
Java内存分析:
1.堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
2.栈:存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面的具体地址)
3.方法区:可以被所有的线程共享,包含了所有的class和static变量
*/
publicclassArrayDemo02{publicstaticvoidmain(String[] args){//数组静态初始化:int[] a ={1,2,3,4,5,6,7,8,9,10};//ArrayDemo01[] arrays = {new ArrayDemo01(), new ArrayDemo01()};//数组动态初始化: 包含默认初始化值0int[] b =newint[10];
System.out.println(b[0]);for(int i =0; i <10; i++){
b[i]= i +1;}}}/*
数组的几个基本特点:
1.长度确定,一旦被创建,大小就是不可以改变的;
2.元素必须是相同类型,不允许出现混合类型;
3.数组中的元素可以是任何数据类型,包含基本类型和引用类型;
4.数组变量属于引用类型,也可以看成是对象,其中的每个元素相当于该对象的成员变量;
5.数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
数组的默认初始化:
数组是引用类型,其元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
*/
publicclassArrayDemo03{publicstaticvoidmain(String[] args){int[] arrays ={1,2,3,4,5};// 打印全部数组元素for(int i =0; i < arrays.length; i++){
System.out.println(arrays[i]);}
System.out.println("==================");//计算所有元素的和int sum =0;for(int i =0; i < arrays.length; i++){
sum += arrays[i];}
System.out.println("sum = "+ sum);//查找最大元素int max = arrays[0];for(int i =0; i < arrays.length; i++){if(arrays[i]> max){
max = arrays[i];}}
System.out.println("max = "+ max);}}
publicclassArrayDemo04{publicstaticvoidmain(String[] args){int[] arrays ={1,2,3,4,5};//JDK1.5 增强型for循环, 没有下标for(int array : arrays){
System.out.println(array);}int[] reverses =reverse(arrays);printArray(reverses);}//打印数组元素publicstaticvoidprintArray(int[] arrays){for(int i =0; i < arrays.length; i++){
System.out.print(arrays[i]+" ");}}//反转数组publicstaticint[]reverse(int[] arrays){int[] result =newint[arrays.length];//反转的操作for(int i =0, j = result.length -1; i < arrays.length; i++, j--){//result[] = arrays[i];
result[j]= arrays[i];}return result;}}