UNTIL4
1)数组概念
2)静态初始化和常见问题
3)常见的操作-遍历
4)获取数组中的最值
5)数组的排序和练习
6)折半查找
7)进制之间的练习
8)查表法进行练习
9)二维数组和练习
一、数组概念
数组的概念:数组相同于是同一类型的容器!
内存的分配以及特点:方便操作数据和角标是从0开始的
创建数组时的内存结构:

小解:
1、 内存结构:java程序在运行时,会在内存中开辟出五个内存区间,分别是:栈内存、堆内存、方法区、本地方法区、寄存器。
2、 栈内存:用于存储局部变量,当数据作用域代码执行完,所占空间会自动释放。
3、 堆内存:通过关键字new创建的实体都放在堆内存中,每一个实体都有内存地址值,实体中的变量都有默认初始化值。
实体不再被使用,会在不确定的时间内被垃圾回收器回收。
二、静态初始化和常见问题
数组的初始化:1、 int arr[] = new int[2];
2、int[] arr = new int[]{1,2,3,4};
3、Int[] arr = {1,2,3,4};
注意数组的角标越界异常和空指针异常!
如果直接在控制台输出数组:[I@.......
三、常见的操作-遍历
数组的遍历用到for循环。
public class example_arr {
public static void main(String[] args) {
// 数组的遍历用到for循环
int[] arr = {10,29,2,2,2,3,4,5,};
for(int x = 0;x<arr.length;x++)
{
if(x==arr.length-1)
System.out.print(arr[x]);
else
System.out.print(arr[x]+",");
}
}
}
四、获取数组中的最值
public class getArray {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,9,0,100};
int max = getMax(arr);
System.out.println(max);
int min = getMin(arr);
System.out.println(min);
}
//获取数组中的最大值
public static int getMax(int[] arr)
{
int max = 0;
for(int x = 0;x<arr.length;x++)
{
if(arr[x]>max)
{
max = arr[x];
}
}
return max;
}
//获取数组中的最小值
public static int getMin(int[] arr)
{
int min = 0;
for(int x = 0;x<arr.length-1;x++)
{
if(arr[x]<min)
{
min = arr[x];
}
}
return min;
}
}
五、数组的排序和练习
选择排序:

public class ss {
public static void main(String[] args) {
int[] arr = {9,2,4,6,8,0,1};
prin(arr);
selectSort(arr);
prin(arr);
}
//选择排序 一个值去和剩下元素进行比较 得出最值再进行第二次比较!耗费资源
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;
}
System.out.println(arr[x]);
}
}
}
public static void prin(int[] arr)
{
for(int x = 0;x<arr.length;x++)
{
if(x==arr.length-1)
System.out.print(arr[x]);
else
System.out.print(arr[x]+",");
}
System.out.println();
}
}
冒泡排序:

public class bubblesort {
public static void main(String[] args) {
// 冒泡排序是相邻元素之间进行比较 条件符合的进行换位
//而且比较的次数是总元素-1次!
int[] arr = {9,2,4,6,8,0,1};
prin(arr);
bubbles(arr);
prin(arr);
}
public static void bubbles(int[] arr)
{
for(int x = 1;x<arr.length;x++)
{
for(int y = 0;y<arr.length-x;y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
public static void prin(int[] arr)
{
for(int x = 0;x<arr.length;x++)
{
if(x==arr.length-1)
System.out.print(arr[x]);
else
System.out.print(arr[x]+",");
}
System.out.println();
}
}
位置置换:
其实就是提取置换的那几行代码!
Public static void swap(int[] arr,int x,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = arr[x];
}
六、折半查找(前提!数组是有序数组)
public class halfSearch {
public static void main(String[] args) {
//折半查找
int[] arr = {9,2,4,6,8,0,1};
System.out.println(half(arr,2));
}
public static int half(int[] arr,int key)
{
int max,min,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(arr[mid]>key)
max = mid-1;
else if(arr[mid]<key)
min = mid+1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
}
七、进制之间的练习
public class switchTool {
public static void main(String[] args) {
// TODO Auto-generated method stub
toBin(6);
toHex(60);
}
//十进制转换成二进制
public static void toBin(int x)
{
StringBuffer sb = new StringBuffer();
while(x>0)
{
sb.append(x%2);
x = x/2;
}
System.out.println(sb.reverse());
}
//十进制转换成八进制
//public static void to
//十进制转换成十六进制
public static void toHex(int num)
{
String[] arr = {"","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
/*
StringBuffer sb = new StringBuffer();
for(int x = 0;x<8;x++)
{
int temp = num & 15;
if(temp!=0)
{
if(temp>9)
sb.append(arr[temp-10]);
else
sb.append(temp);
}
num=num>>4;
}
System.out.println(sb.reverse());
*/
String[] s= new String[8];
int pos = 0;
while(num!=0)
{
int temp = num & 15;
s[pos++] = arr[temp];
num = num>>>4;
}
for(int x = pos-1;x>=0;x--)
{
System.out.print(s[x]);
}
}
}
九、二维数组和练习
二维数组格式:
1、int[][] arr = new int[3][3]
2、Int[][] arr = new int[3][]
或者呢!Int[][] arr = {{},{},{}};
涉及的异常:
| ArrayIndexOutOfBoundsException | 数组角标越界异常 |
| NullPointerException | 空指针异常 |

被折叠的 条评论
为什么被折叠?



