数组
语法格式:
eg:
int[] arr; //意思是定义了一个整型数组,数组名是arr
int arr[]; //意思是定义了一个整型变量,变量名是arr数组
一般推荐用第一个
数组的初始化:
java里面的数组都必须要初始化。什么是初始化?初始化就是数组为里面的元素分配内存空间并且为它赋值。
初始化的方法分为:动态初始化,静态初始化。
动态初始化:
初始化只需要指定长度即可。初始值由系统分配(int型默认0,浮点型默认0.0,char型默认null,布尔类型默认为false)
语法格式:
数据类型[] 变量名=new 数据类型[数组长度]
eg:int[] arr=new int[5]
静态初始化:
自己指定元素,长度由系统指定
数据类型 []变量名=new 数据类型[]{元素1,元素2}
数据类型[] 变量名={元素1,元素2}
单个数组访问原理
jdk内存空间可分为:栈空间,堆空间,方法区,本地方法栈
栈空间:储存的是局部变量
堆空间:储存对象(数组也是对象)的空间。可以存放很多个new出来的对象
eg:int [] arr=new int[4];
如果输出的arr,表示的是数组存放的地址,访问的是栈内存储存的数组arr地址。如果输出的是arr[索引],原理是通过数组名arr在栈空间里找到数组地址,再去堆内存找到这个数组,再通过索引找到对应的值。
arr=null表示数组的地址为空,访问则会出错
冒泡排序
通过逐个比较前后两者的大小
System.out.println("冒泡排序后的结果");
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
选择排序
首先从头开始找到比它大(小)的作比较,直到遍历结束交换
System.out.println("选择排序");
for (int i=0;i<arr.length;i++)
{
int min=i;
for(int j=i+1;j<arr.length-i;j++)
{
if(arr[min]<arr[j])
{
min=j;
}
}
if(min!=i)
{
int temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
}