Java学习第四天:数组

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

UNTIL4

1)数组概念

2)静态初始化和常见问题

3)常见的操作-遍历

4)获取数组中的最值

5)数组的排序和练习

6)折半查找

7)进制之间的练习

8)查表法进行练习

9)二维数组和练习

 

一、数组概念

数组的概念:数组相同于是同一类型的容器!

内存的分配以及特点:方便操作数据和角标是从0开始的

创建数组时的内存结构:

 黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

小解:

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;
}
}
 


五、数组的排序和练习

选择排序:

黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

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();
}
}


冒泡排序:

黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

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

空指针异常

 


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值