首页 > 编程 > Java > 正文

java基础学习之数组 四

2019-11-10 17:55:02
字体:
来源:转载
供稿:网友
概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中。好处:可以自动给数组中的元素从0开始编号,方便操作这些元素      格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组。      2. int[] arr=new []{5,6,8,3,4}            int[] arr={5,6,8,3,4}数组中常见问题:1、数组角标越界 //ArrayIndexOutofBoundsException2、空指针异常  //NUllPointerException 当引用没有任何指向,值为空的情况,该引用还在用于操作实体。数组的操作:1.获取数组中的数据,通常会用到遍历(for循环),arr.length代表数组的长度代码:  
int[] arr=new int[5];  for(int x=0;x<arr.length;x++) {        arr[x];  }2.打印数组中的元素,元素间用逗号隔开。
 int[] arr=new int[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]);  }3.获取最值     
 //定义一个方法,返回最大值角标           public static int  getmax(int[] arr){                      int max=0; //定义一个变量初始化数组的0角标值		for(int x=0; x<arr.length;x++){//循环遍历数组			if(arr[max]<arr[x]){//如果临时元素小于遍历到的元素				max=x;//将遍历到的值的角标付给临时变量角标			}		}	return max;	//返回最大值角标		}4.数组排序-选择排序:内循环结束一次,最值出现在头角标位置上,第一个依次和后面的几个相比较         
   public static void  xuanze(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[y];					arr[y]=arr[x];					arr[x]=temp;									}							}		}5.数组排序-冒泡排序:相邻的两个元素进行比较,第一圈,最值出现在最后。             
   public static void  maopao(int[] arr){						for(int x=0; x<arr.length-1;x++){//控制比较的圈数			 			for(int y=0;y<arr.length-x-1;y++)//控制每圈比较的次数  -1是避免角标越界,-x是让每一次比较的元素减少			{				if(arr[y]>arr[y+1]){					int temp=arr[y+1];					arr[y+1]=arr[y];					arr[y]=temp;									}			}		}6.数组置换          
 public static void  maopao(int[] arr,int x, int y){                             int temp=arr[x];			         arr[x]=arr[y];				 arr[y]=temp;     }7.数组的一般查找:获取key第一次出现在数组中的位置,如果返回-1,则不存在   
 public static int  select(int[] arr,int key){						for(int x=0; x<arr.length;x++){			if(arr[x]==key){								return x;			}		}			return -1;	}8.数组的折半查找:可以提高查找效率,但是必须是有序数组第一种方式:  先找到头角标 和尾角标    min =0 //头角标  max=arr.length-1;//尾角标  mid =(min+max)/2;//中间角标  在要找得的值和中间角标不相等的情况下,循环查找。  如果要找的值比中间角标值大的话,头角标就是中间角标+1;  如果要找的值比中间角标小的话,尾角标就是中间角标-1;  中间角标重新赋值 mid =(min+max)/2;//中间角标   查找之后,如果头角标大于了尾角标的话 ,数组中就没有这个值,第二种方式:   如果头角标和尾角标之间有距离,也就是说头角标和尾角标小于等于尾角标的时候,就进行折半。否则不存在 返回 -1     mid =(min+max)/2;//中间角标   之后呢  如果要找的值比中间角标值大的话,头角标就是中间角标+1;   如果要找的值比中间角标小的话,尾角标就是中间角标-1;  如果相等的话 就返回中间角标值。找到了

9数组的进制转换

十进制-二进制

   //十进制转二进制	public static  void tobin(int num)	{		StringBuffer sb=new StringBuffer();//创建一个StringBuffer容器用于接收对2取模的数		while (num>0){			sb.append(num%2);			num=num/2;		}				System.out.print(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'));				else					sb.append(temp);				num= num>>>4;			}			System.out.println(sb.reverse());							}10二维数组:数组中的数组 int[][] arr=new int [3][4];//定义了一个名称为arr的二维数组,这个二维数组中有3个一位数组,每一个一位数组中有四个元素,                           //3代表的是二维数组的长度,4代表的是二维数组中每一个一位数组的长度。int[][] arr =new int[3][];//int[][] arr={{5,8,6,5},{4,5,2},{8,8,9}}表示方式 int[][] x; int x[][]; int[] x[];arr.length:二维数组的长度arr[0].length:二维数组中第一个一位数组的长度二维数组的遍历
for(int x=0;x<arr.length;x++){         for(int y=0;y<arr[x].length;y++)     {        sum=sum+arr[x][y];      }}

最后附上JDK使用文档API 下载


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表