黑马程序员--Java基础--02数组
来源:互联网 发布:新浪邮箱smtp端口号 编辑:程序博客网 时间:2024/04/30 07:31
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------
数组
数组的定义:
同一种类型数据的集合。其实数组就是一个容器,用于存储数据的容器。数组是一种常用的数据结构,它是一组有序数据的集合。数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一的确定数组中的元素。数组中元素可以
是简单的数据类型,也可以是类类型。但要求一个数组中的所有元素的类型必须一致。数组有一维数组和多维数组。
数组的好处:
可以自动给数组中的元素从0开始编号,方便操作这些元素。
数组变量声明:
一维数组:
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
实例:int [] arr = new int[8];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,,,,,};
int [] arr = new int[]{2,5,3,7};
int [] arr = {9,3,1,0};
二维数组[][]
格式1:int[][] arr = new int [6][3];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0],arr[1],arr[2]
给第一个一维数组1角标位赋值为56写法是:arr[0][1]=78;
格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int [3];
arr[1] = new int [4];
arr[2] = new int [3];
格式3:int[][] arr = {{3,2,6,3,1}{8.2,43,5,45}}
二维数组有两个一维数组
两个一维数组分别为:
arr[0] = {3,2,6,3,1};
arr[1] = {8.2,43,5,45};
数组Demo
//查找操作class ArrayTest {public static void main(String[] args) {int [] arr= new int[]{2,4,5,7,9};//定义了一个一维的int类型数组并初始化为{2,4,5,7,9};int index=getIndex(arr,3);int index2=getIndex_2(arr,4);int index3=getIndex_2(arr,20);int inde=halfSearch(arr,7);int inde2=halfSearch_2(arr,8);//System.out.println("index="+index);System.out.println("inde="+inde);System.out.println("inde2="+inde2);System.out.println("index="+index2+" "+index3);}/*数组中查找操作*/public static int getIndex(int [] arr,int a){for (int x=0;x<arr.length ;x++ ){if(a==arr[x])return x;}return -1;}/*折半查找,提高效率,但是必须要保证该数组是有序的数组。*/public static int getIndex_2(int [] arr,int key){int min,max,mid;min=0;max=arr.length-1;mid=(min+max)/2;while(arr[mid]!=key){if (key>arr[mid])min=mid+1;else if(key<arr[mid])max=mid-1;if(min>max)return -1;mid=(min+max)/2;}return mid;}/*折半的第二种方式*/public static int halfSearch(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;elsereturn mid;}return -1;}/*练习,有一个有序的数组,想要将一个元素插入到该数组中,还要保证数组是有序的。*/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;elsereturn mid;}return min;}}内存结构:
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,有时对空间进行了
不同区域的划分,因为每一片区域都有特定的处理方式和内存管理方式。
栈内存:
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值
实体中的变量都有默认初始化值
实体不在被使用,会在不确定的时间内被垃圾回收器回收。
方法区,本地方法区,寄存器。
各进制间转换
//各进制间转换class ArrayTest2 {public static void main(String[] args) {toBin(6);toHex(60);toHex_2(60);toBin_2(6);System.out.println();toBin_3(-6);System.out.println();toHex_3(-60);System.out.println();toOct(60);}/*十进制转换为二进制*/public static void toBin(int a){StringBuffer sb= new StringBuffer();//能够存放数据的容器while(a>0){sb.append(a%2);//一个个存储数据a=a/2;}System.out.println(sb.reverse());//反向打印数据}/*十进制转换为十六进制*/public static void toHex(int num){StringBuffer sb= new StringBuffer();for(int x=0;x<8;x++){int temp=num & 15;if(temp>9)sb.append((char)(temp-10+'A'));elsesb.append(temp);num=num >>> 4; }System.out.println(sb.reverse());}/*0 1 2 3 4 5 6 7 8 9 A B C D E F==十六进制中的元素。0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15查表发:将所有元素临时存出起来,建立对应关系。每一次&15后的值作为索引去查建立好的表。就可以找对应的元素。可以通过数组的形式来定义。*/public static void toHex_2(int num){char [] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//定义了一个char类型的一维数组并直接初始化//定义一个临时容器。char [] arr=new char[8];int pos=arr.length;while(num!=0){int temp=num&15;arr[--pos]=chs[temp];num=num>>>4;}System.out.println("pos="+pos);//存储数据的arr数组遍历。for(int x=pos;x<arr.length;x++){System.out.print(arr[x]+",");}} /*二进制查表发*/public static void toBin_2(int num){char [] chs={'0','1'};//定义了一个char类型的一维数组char [] arr=new char[32];int pos=arr.length;while (num!=0){int temp=num & 1;arr[--pos]=chs[temp];num=num>>>1;}for (int x=pos;x<arr.length ;x++ ){System.out.print(arr[x]);}}/*进制转换优化*//*十进制转化为二进制*/public static void toBin_3(int num){trans(num,1,1);}/*十进制转化为二进制*/public static void toOct(int num){trans(num,7,3);}/*十进制转化为二进制*/public static void toHex_3(int num){trans(num,15,4);}public static void trans(int num,int base, int offset){if(num==0){System.out.println(0);return ;}char [] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char [] arr=new char[32];int pos=arr.length;while(num!=0){int temp =num &base;arr[--pos]=chs[temp];num=num>>>offset;}for (int x=pos;x<arr.length ;x++ ){System.out.print(arr[x]);}}}
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/
- 黑马程序员--Java基础--02数组
- 黑马程序员--Java基础--02数组
- 黑马程序员-->Java基础-->数组
- 黑马程序员---java基础----数组
- 黑马程序员-Java基础-数组
- 黑马程序员-----Java基础-----数组!
- 黑马程序员---java基础--数组
- 黑马程序员---Java基础---数组
- 黑马程序员---Java基础--04天(数组)
- 黑马程序员-java基础 循环和数组
- 黑马程序员 Java基础(函数,数组)
- 黑马程序员JAVA基础-数组的操作
- 黑马程序员---JAVA基础---数组(四)
- 黑马程序员--- java基础学习之数组
- 黑马程序员—Java语言基础(数组)
- 黑马程序员-day04-Java基础语法(数组)
- 黑马程序员 Java基础<五> 数组
- 黑马程序员 java基础之数组
- 从操作系统内核解释电脑死机原理
- 搭建自己的知识体系 自我提升
- Python3.2官方文档教程--数字
- 64位Win8系统下WinIO的使用 VS2010 驱动级模拟按键
- C++与C语言字符串头文件及其对应的操作
- 黑马程序员--Java基础--02数组
- Cocos2d-x 添加iOS7默认分享/AirDrop
- s5pv210 HDMI 1080P 高清显示
- Android访问Sqlserver
- tomcat启动时:a configuration error occured during startup
- Android开发之service浅谈
- Windows核心编程有感-进程
- 让Xcode 生成的ipa支持老的iOS设备(armv6)
- 谈深度学习:“知道” 与 “理解”