---------------------- android培训、java培训、期待与您交流! ----------------------
------0317数组
数组第1种定义形式:
元素类型[] 数组名=new 元素类型[元素个数或数组长度]
例:int [] x=new int [3]
数组是三种引用类型中的一种
java一共在内存中划分了五个区用来存储:方法区,本地方法区,寄存器,栈,堆。
栈内存的特点:栈内存数据使用完毕,会自动释放
局部变量在栈内存中开辟空间
New出来的变量在堆中(实体对象)
堆内存的每一个实体都有一个存放位置
堆内存中的每一个实体都有默认初始化值
堆内存的三个特点:1.内存地址值,2.默认初始化值,3.垃圾回收机制
------0401
数组第2种定义形式:
int[] arr={2,5,4};//这种定义也是可以的。
提示:ArrayIndexOutOfBoundsException:3 操作数组时访问到了数组中不存在的角标。
提示:NullpointerException:空指针异常
------0402数组
数组是引用类型,直接打印会打印出其地址。
例:System.out.print(arr);//arr为int型数组
结果为:[I@1e5e2c3 //[为数组,I为int类型,@后面为此数组的哈希值。
数组的打印:
只能用循环遍历每个元素例如下列程序
class printarray
{
public static void main()
{
printarray(arr)
}
}
public static void printarray(int[] arr)
{
for(int x=0;x<arr.length;x++)
{
system.out.print(arr[x]);
}
}
java一共在内存中划分了五个区用来存储:方法区,本地方法区,寄存器,栈,堆。
栈内存的特点:栈内存数据使用完毕,会自动释放
局部变量在栈内存中开辟空间
New出来的变量在堆中(实体对象)
堆内存的每一个实体都有一个存放位置
堆内存中的每一个实体都有默认初始化值
堆内存的三个特点:1.内存地址值,2.默认初始化值,3.垃圾回收机制
选择排序:选择一个元素与其它元素比较,条件满足交换。
(外循环第一遍选第一个元素与其它元素比较,最大的放在第一位
第二遍选第二个元素与其右边元素比较,最大的在第二位...)
class ArrayTest2
{
public static void selectSort(int[] arr)
{
for(int x=0;x<arr.length-1; x++)
{
for(int y=x+1;y<arr.length; y++)
{
if(arr[x]<arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void main(String[] args)
{
int[] arr={5,1,6,4,2,8,9};
PrintArray(arr);//排序前
selectSort(arr);//排序
PrintArray(arr);//排序后
}
public static void PrintArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
冒泡排序:相邻两个元素比较,条件满足交换。
(第一遍第一个元素与第二个比,第二个与第三个比...第x-1个与第x个比最大的在最右边
第二遍第一个元素与第二个比,第二个与第三个比...第x-2个与第x-1个比第二大的在倒数第二位置...)
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1;y++)//-x:让每一次比较的元素减少,-1:避免角标越界
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
折半查找:
(一个有序的数组中,给定一个key,定义最大max,最小min,和中间mid。key<mid 则max=mid; mid=max+min>>>1...直到mid==key或min>max&max<min退出)
class ArrayTest
{
public static int halfSearch_2(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid];
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
System.out.println(hafSearch_2(arr,50));
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------