数组
数组和变量差不多,都是存放数据的。不同的是变量只能保存一条数据,而数组可以保存多条数据,前提是这多条数据是同一类型的。
数组是一种引用数据类型。
数组初始化分为两种情况
(1)动态初始化:指定数组的长度,一旦长度指定,就是数组中只能存放多少数组;两种格式:
①第一种:
数组类型[ ] 数组名=new 数组类型[数组长度]
②第二种
数组类型[ ] 数组名;
数组名=new 数组类型[数组长度]
(2)静态初始化:不指定数组的长度,而是直接在初始化数组的同时给数组赋值。
①:数组类型[ ] 数组名=new 数组类型[ ]{数据1,数据2···};
②:数组类型[ ] 数组名;
数组名=new 数组类型[ ]{数据1,数据2···};
还有一种简单方式
数组类型[] 数组名={数据1,数据2···};
获取数组长度
数组名.length ,数组长度一旦定义,不可改变。
遍历数组
①for循环
for(i=0;i<=array.length;i++){
System.out.println(array[i]);
}
foreach(for循环的增强)
for(int a:array){
System.out.println(a);
}
数据类型的数组
基本数据类型的数组
动态初始化数组以后,数组的元素都会赋予一个默认
byte short int long double float char boolean
默认值 0 0 0 0 0.0 0.0 空格 false
引用数据类型的数组
String 接口 自己定义的类
默认值 null
Java内存分配
内存的申请和释放都是由jvm进行管理的,Java程序要运行,jvm会自动向电脑申请一块内存。
1.栈(Stack):主要是存放局部变量
2.堆(Heap):凡是new出来的东西都在堆里面,堆当中都有默认值
3.方法区(Method Area):存放的是与.class相关的信息
4.本地方法区(Native Method Area):与操作系统有关。
5.寄存器(Rsgister):与cup有关。
练习1
求学生成绩的总分、平均分、最低分、最高分
int[] score=new int[]{909,89,56,87};
//总分
int sum=0;
for(i=0;i<=score.length;i++){
sum+=score
System.out.peintln("总分"+sum);
}
//平均分
int avg=sum/score.length;
System.out.println("平均分"+avg);
//最高分
int max=score[0];
for(```){
if(max<score[i]){
max=score[i];
}
}
System.out.printn("最高分"+max);
//最低分```
{“C语言”,“C++”,“C#”,“Java”,”Python“,“js”};逆序输出
String[ ] str=new String[]{"C语言”,“C++”,“C#”,“Java","Python","js"};
for(i=0;i<str.length;i++){
String temp=str[i];
str[i]=str[str.length-1-i];
str[str.length-1-i]=temp;
}
for(String s:str){
System.out.println(s);
}
冒泡排序
数组中的元素两两比较。
N个数比较了N-1趟
每一轮比较次数=N-躺数
口诀:
n个数字来比较
两两相比小靠前
外层循环n-1
内层循环n-1-i
int[] array={76,3,234,90,6,78,1,-1};
//外层循环控制趟数
for(int i=0;i<array.length-1;i++){
for(int j=0;j<ayyay.length-i-1){
if(array[j]<array[j+1]){
int temp=array[i];
array[j]=array[j+1];
array[ja=1]=temp;
}
}
}
for(int a:array){
System.out.println(a);
}