数组的概念
数组是什么?为什么要应用数组?
1.数组用来将雷同数据类型存储在存储单元里,数组的所有元素必须属于雷同的数据类型。
2.数组和变量差不多,都是存放数据的,不同的是变量只能保留一条数据,而数组能够保留多条数据。
3.数组既能够存储根本数据类型,也能够存储援用数据类型。
4.数组一旦初始化,长度不可变。长度确定下来了!!!。
5.比方我要统计每位员工的工资,我得定义多个变量去离开存储,因为一个变量只能保留一个数据,如果过多的员工,太麻烦了,那么我怎么用一个变量去存储多个员工工资呢?能够应用数组,数组就是一个大的容器,他能够寄存多个值。
如何定义数组?
数组类型[ ] 数组名;
数组类型 数组名[ ];
1.Java中的数组必须先初始化,而后能力应用。
2.所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
3.Java中能够应用关键字new创立数组对象,实现动态初始化或动静初始化。
数组初始化分为两种:
动态初始化;动静初始化;
动静初始化
动静初始化:指定数组的长度,一旦数组长度指定,就是数组中只能寄存多少数据。
第一种格局:
数组类型[ ] 数组名=new 数组类型[数组长度];
第二种格局:
数组类型[ ] 数组名;
数组名=new 数组类型[数组长度];
动态初始化
动态初始化:不是指定数组长度,而是间接在初始化数组的同时给数组赋值。
第一种格局:
数组类型[ ] 数组名=new 数组类型[]{数据1,数据2.....};
第二种格局:
数组类型[] 数组名;
数组名=new 数组类型[]{数据1,数据2.。。。};
还有一种最简略的形式:
数组类型[] 数组名={数据1,数据2....};
数组的遍历
应用for循环
public static void main(String[] args) { int[] array=new int[]{12,4,6,34,90,89,12}; //我想获取数组的每一个元素值 System.out.println(array[0]); System.out.println(array[1]); //... //for应用循环 i代表的是数组的下标 System.out.println("应用for循环遍历数组"); for(int i=0;i<array.length;i++){ System.out.println(array[i]); }
for循环增强版 foreach:
for(int a:array)
System.out.println("foreach遍历数组"); /** * for(定义变量承受数组的每一个元素值:要遍历的数组名) * 数组遍历只有两种 */ for(int a:array){ System.out.println(a);
数组分类
根本类型的数组
动静初始化数组当前,数组的元素都会赋予一个默认值。
byte, short, int, long:默认0
double, float:0.0
char:空格
boolean:false
//double类型 double[] d=new double[2]; System.out.println(d[0]);//0.0 System.out.println("=======================");
援用数据类型的数组
String; 接口; 本人定义的类...
援用数据类型的默认值为null。
//String String[] str=new String[4]; //null for(String s:str){ System.out.println(s); }
//数组类型是Student类型 Student[] stu=new Student[1]; stu[0]=new Student("张三",18); //创立了一个对象,并且给这个对象的属性赋值 for(int i=0;i<stu.length;i++){ System.out.println("姓名:" +stu[i].getName()+",年龄:"+stu[i].getAge()); }
java的内存调配
java中的内存是怎么进行调配的?
内存的申请和开释都是jvm进行治理的,java程序要运行,jvm会主动的向电脑申请一块内存,
把这块内存分为5局部:
1.栈(Stack):次要寄存局部变量(重点)。
2.堆(Heap):但凡new进去的货色都在堆外面,堆当中的数据都有默认准则:(重点)。
整数 0 小数 0.0 布尔:false char:空格 援用数据类型:null。
3.办法区(Method Area):寄存的是与.class相干的信息。
4.本地办法区(Native Method Area):与操作系统无关。
5.寄存器(Register):与cup无关。
冒泡排序(重点)
口诀(升序)
n个数字来排队
两两相比小靠前
外层循环n-1
内层循环n-1-i
public static void main(String[] args) { //从大到小 int[] array={76,3,234,90,6,78,1,-1}; //外层循环管制趟数 for(int i=0;i<array.length-1;i++){ //内层管制次数 for(int j=0;j<array.length-i-1;j++){ //比拟 从大到小用< 小到大> if(array[j]<array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } for(int num:array){ System.out.println(num); }
二维数组
二维数组;数组中的数组。
1.申明二维数组
数据类型[][ ] 数据名;
第一个中括号:二维数组中有几个一维数组 行
第二个中括号:每个一维数组中有多少元素 列
2.初始化二维数组
public static void main(String[] args) { //1.创立一个二维数组,并动静初始化 //5代表5行或者示意蕴含5个一维数组 //7代表7列或者示意每个一维数组的长度是7 int[][] array=new int[5][7]; //2.如何赋值 //第一个一维数组的第一个元素值为10 array[0][0]=10; //第四个一维数组的第7个元素的值为5 array[3][6]=5; //3.动态初始化 int[][] array1=new int[][]{{1,2},{2,3,4},{5,9,89,1}}; System.out.println(array1[2][2]);//89 //简写 int[][] array2={{4,90},{23,12},{12,23,45}}; System.out.println("获取二维数组的长度:"+array2.length);}
3.遍历二维数组
//4.遍历二维数组 //外层循环管制行(每一个一维数组) for(int i=0;i<array2.length;i++){ //内存循环管制的是列 for(int j=0;j<array2[i].length;j++){ System.out.print(array2[i][j]+" "); } System.out.println(); } //加强for循环 for(int[] i:array2){ for(int a:i){ System.out.print(a+" "); } System.out.println(); }
2019/08/04