1,package Demoday05;
/*
* 数组:是一种容器,可以同时存放多个数据值* 1.数组是一种引用数据类型* 2,数组当中的多个数据,类型必须统一* 3.数组的长度在程序运行期间不可改变* 数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认值* 两种常见初始化方式:* 1.动态初始化(指定长度)*2.静态初始化(指定内容)* 动态初始化数组的格式* 数据类型【】 数组名称=new 数据类型(数组长度)* 解析含义:* 左侧数据类型:也就是数组当中保存的数据,全都是统一的类型* 左侧的中括号:代表我是一个数组* 左侧数组名称:给数组取一个名字* 右侧的new:代表创建数组的动作* 右侧数据类型:必须和左边的数据类型保持一致* 右侧中括号长度:也就是数组当中,到底可以保存多少个数据,是一个int数字*
* */
public class Demo01Array {
public static void main(String[] args) {
int[] arryA=new int[300];
double[] arryB=new double[10];
String[] arryC=new String[5];
}
}
2,package Demoday05;
/*
*动态初始化(指定长度):创建数组的时候,直接指定数组当中的数据元素个数*静态初始化(指定内容):直接将具体的数据内容进行指定* 静态初始化格式:* 数据类型[] 数组名称=new 数据类型【】{元素1,元素2,。。。。。。}
*注意:* 虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,可以自动推算* */
public class Demo02Array {
public static void main(String[] args) {
int[] arryA=new int[]{5,15,25};
String[] arryB=new String[]{"hello","whorld"};
}
}
3,package Demoday05;
/*
* 注意:* 1.静态初始化么有* 2.静态初始化格式可以拆分成两个步骤* 3.动态初始化也可以拆分成两个步骤* 4.静态初始化一旦使用省略格式,就不能拆分成两个步骤* 5.使用建议* 不确定数组当中具体内容用动态,否则静态* */
public class Demo03Array {
public static void main(String[] args) {
int[] arrayA={10,20,30};
int[] attayB;
attayB=new int[]{11,21};
int[] arrayC;
arrayC=new int[5];
}
}
4,package Demoday05;
/*
* 直接打印数组名称,得到的是数组对应的内存地址值* 访问数组元素的格式:数组名称【索引值】* 索引值:就是一个int数字,代表数组当中元素编号* 注意:索引值从0开始* */
public class Demo04ArrayUse {
public static void main(String[] args) {
int[] array={10,20,30};
System.out.println(array);
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
int num=array[1];
//可以将数组当中的某一个元素单独打印
System.out.println(num);
}
}
5,package Demoday05;
/*
* 使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值* 如果是int,默认0
* float,0.0
* char,‘\u0000’
*buer:false
* 引用:null
*注意:* 静态初始化其实也有默认值,不过自动替换*
*
*
* java的内存需要划分为五个部分:* 1.栈(stack):存放的都是方法中的局部变量* 局部变量:方法参数,或是方法{}内部的变量* 作用域:一旦超出作用域,立即从栈内存当中消失* 2.堆(Heap):凡是new出来的东西,都在堆当中* 堆内存里面的东西都有一个地址值:16进制* 堆内存里面的数据都有默认值:* 规则* 整数:20
* 浮点型:0.0
* 字符:\u0000
* 布尔:false
* 引用:null'
* 3.方法区(Method Area):存储。class相关类型,包含方法的信息* 4.本地方法栈(Native Method Stack):与操作系统相关* 5寄存器(pc Reqister):与cpu相关* */
public class Demo05ArrayUse {
public static void main(String[] args) {
int[] array=new int[3];
System.out.println(array);
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
array[1]=123;
System.out.println(array);
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
}
}
6,package Demoday05;
/*
* ArrayIndexOutOfBoundException
* 数组索引越界异常*
*
* */
public class Demo06ArrayIndex {
public static void main(String[] args) {
int[] array={15,25,35};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
}
}
7.package Demoday05;
/*
* 所有的引用类型变量,都可以赋值为一个null值,但是代表其中什么都没有* 数组必须进行new初始化才能使其中的元素* 如果只是赋值了一个null
* 会发生* 空指针异常:NullPointerException
*
* */
public class Demo07ArrayNull {
public static void main(String[] args) {
int[] array=null;
System.out.println(array[10]);
}
}
8,package Demoday05;
/*
*如何获取数组长度;* 格式:* 数组名。length
* 数组一旦创建,程序运行期间,长度不变。* */
public class Demo08Arraylenth {
public static void main(String[] args) {
int[] arrayA=new int[3];
int[] arrayB={10,20,30,12,2,3,5,2,6,7};
int len=arrayB.length;
System.out.println(" "+len);
int [] arrayC=new int[3];
System.out.println(arrayC.length);
arrayC=new int[5];
System.out.println(arrayC.length);
}
}
例子:
1
package Demoday05.Demo;
/*
*
*
* */
public class Demo01ArrayOne {
public static void main(String[] args) {
int[] array=new int[3];
System.out.println(array);
System.out.println(array[0]);
System.out.println(array[1]);
array[1]=10;
array[2]=20;
System.out.println(array);
System.out.println(array[0]);
System.out.println(array[1]);
}
}
2
package Demoday05.Demo;
/*
*
*
*
* */
public class Demo04Array {
public static void main(String[] args) {
int[] array={5,15,30,20,10000};
int max=array[0];
for(int i=1;i
if(array[i]>max){
max=array[i];
}
}
System.out.println("最小值:"+max);
}
}
3package Demoday05.Demo;
/*
* 数组元素翻转* 本来的样子:()* 1.数组元素翻转就是对称位置的元素交换* 2.通常遍历数组用的是一个索引:* int i
* 现在表示对称位置需要两个索引:* 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,20,30,40,50};
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
int temp = array[min];
array[min]=array[max];
array[max]=temp;
}
for (int i =0; i < array.length; i++) {
System.out.println(array[i]);
}}
}
4,
package Demoday05.Demo;
public class Demo06ArrayParam {
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========");
}
/*
*
* */
public static void printArray(int[] array){
for (int i =0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
5,
package Demoday05.Demo;
/*
* 一个方法可以有0,1,多个参数* 任何数据类型都能作为方法的参数类型,或者返回值* 数组作为方法的参数,传递进去的其实是数组的地址值* 返回值,返回的* */
public class Demo07ArrayReturn {
public static void main(String[] args) {
System.out.println("");
}
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;
int[] array={sum,avg};
return array;
}
}
6
package Demoday05.Demo;
/*
*遍历数组:对数组当中的每一个元素都进行逐一处理。默认为打印*
* */
public class Demoo3Array {
public static void main(String[] args) {
int[] array ={15,25,35,40};
System.out.println(array[0]);
//循环,次数是数组长度
for (int i =0; i <3; i++) {
System.out.println(array[i]);
}
//int len=array.length;
for (int i =0; i < array.length; i++) {
System.out.println(array[i]);
}
for (int i =0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}