20160714 数组

来源:互联网 发布:linux 添加组 编辑:程序博客网 时间:2024/06/08 17:09
class  笔记5{public static void main(String[] args)                       /*    数组定义:同一种类型数据的集合;好处:可以自动给数组中的元素从0编号,方便操作这些元素;格式一:元素类型 [] 数组名=new 元素类型 [元素个数或数组长度];         int    []  array=new    int      [5];格式二:元素类型 [] 数组名=new 元素类型 [] {};       int      []  array1=new int     [] {1,2,3,4,5};   int      []  array2={1,2,3,4};*//*{                                                    //数组的定义int [] array=new int [5];                        //格式1:System.out.println(array.length); int [] array1=new int []{1,2,3,4,5};             //格式2:System.out.println(array1.length);int [] array2={1,2,3,4};System.out.println(array2.length);        double [] douArray={1,2,3,4,5,6};System.out.println(douArray.length);double [] douArray1=new double []{4,5,6};System.out.println(douArray1.length);String [] strArray=new String [10];String [] strArray1={"123","432","345"};System.out.println(strArray1.length);}*//*       int [] iArray=new int [] {1,2,3,4,5};          //数组内容提取   int i= iArray[2];   System.out.println(i);      String [] strArray=new String[]{"111","222"};  String s=strArray[1];  System.out.println(s);*/  /*    java虚拟机内存结构划分:程序计数器(program Counter Resister),堆(Heap),栈(Stack),本地栈(Native Stack),方法区(Method Area)栈内存到堆内存:存放的是堆内存的地址    扩展!!!  */   //   System.out.println(strArray);    //输出结果:[Ljava.lang.String;@1db9742       //    int [] array3=new int[3];          //默认初始值//  System.out.println(array3[0]);      //输出结果:0     // int [] array4=new int[3];//  System.out.println(array4[3]);     //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3   "输出角标越界"   /*   int [] array5=new int[3];   array5[0]=123;  array5[1]=23;  array5[2]=3;  System.out.println(array5[0]); */ // int [] array6=null;               //空指针异常      Exception in thread "main" java.lang.NullPointerException  //System.out.println(array6[1]);     /* int [] array7=null;    if(array7!=null){  System.out.println(array7[1]);  }else{  System.out.println("is null");  }  if(array7==null){  System.out.println("is not null");  }*/{    // printArray();                               //只能某一个单独执行   addValue();}/*    public static void printArray(){    int[] array=new int []{1,2,3,4,5,6,7,8};for(int i=0;i<array.length;i++){if(i<5)System.out.println(array[i]);}}*/public static void addValue(){int [] array=new int [5];for(int i=0;i<array.length;i++){array[i]=2*i+1;System.out.print("*");}for(int j=0;j<array.length;j++){  System.out.print(array[j]);        //复制循环执行完毕,再执行输出循环}                                    //输出结果:*****13579}}
***************************************************************************************
<pre name="code" class="java">/**   判断数组内的最大,最小值  */class 笔记501 {public static void main(String[] args)                 //数组常见操作{int [] array={ 1,3,5,6,10,12,18,19};                          int maxValue=getMaxValue(array);                   //MaxSystem.out.println(maxValue);        int minValue=getMinValue(array);                   //MinSystem.out.println(minValue); sortAsc(array); for(int i=0;i<array.length;i++)                  //冒泡排序 { System.out.print(array[i]+",");     } System.out.println(); System.out.println("*****************");                //分隔     sortAsc1(array);  for(int i=0;i<array.length;i++)                  //选择排序 { System.out.print(array[i]+",");     }   System.out.println();                                   //分隔   System.out.println("***********************");  int index=binarySearch(array,0,array.length,20);          //二分查找  System.out.println(index);}            //列最大值public static int getMaxValue(int[]array){int tmp=-1;if(array!=null) {                                      //判断空指针int tmpValue=array[0];   for (int i=0;i<array.length ;i++ )          //为何i=0也可输出最大值,都一样   {  if(array[i]>tmpValue)       //进行两个值的比较,将大的值保留下来进行下一轮的比较           tmpValue=array[i];   }   tmp=tmpValue;}                                         return tmp;}                //列最小值public static int getMinValue(int [] array){int tmp=-1;    if(array!=null){int tmpValue=array[0];for (int i=0;i<array.length ;i++ )         //5,8,2,6,9{if(array[i]<tmpValue)                  //内部循环完赋值            tmpValue=array[i];}   tmp=tmpValue;    }return tmp;}/*冒泡排序    从小到大的排序*/    public static void sortAsc(int[] array)   {if(array!=null)  {    for(int i=0;i<array.length;i++){for(int j=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){int tmp;tmp=array[j];array[j]=array[j+1];array[j+1]=tmp;    }    }    }  }}   /*   选择排序          第一个逐渐对比到尾部   */    public static void sortAsc1(int[]array){if(array!=null){ for(int i=0;i<array.length;i++) { for(int j=i+1;j<array.length;j++) { if(array[i]>array[j]) { int tmp; tmp=array[i]; array[i]=array[j]; array[j]=tmp;     }     }     }    }    } /* 递归排序 */ /* 二分查找:  只适合于排序好的数列 1,3,5,6,10,12,18,19 目标:快速找到12所在的位置 1,3,5,6  10  12,18,19 第一次查找10-1210,12,18,1912-12这个数的脚标就是所需要查找的数字 */  public static int binarySearch(int[]array,int beginIndex,int endIndex,int findValue)                            //     数组        0          数组长度        18  {  if(array!=null)  {           int middleIndex=(beginIndex+endIndex)/2;     //middleIndex=4;               6   int middleValue=array[middleIndex];         //middleValue=array[4]=10;     array[6]=18;   if(middleValue==findValue)                   //                            18==18;   {   return middleIndex;                     //                            return 6;(最终结果)       }   else if(middleValue<findValue)      //10<18                            //递归,自己调用自己   {   return binarySearch(array,middleIndex,endIndex,findValue);                     //         4          8        18       }   else if(middleValue>findValue)   {                        return binarySearch(array,beginIndex,middleIndex,findValue);       }   else   {   return -1;                              //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8       }                                       // 例外;异议    通过                             越       界      }       else  {      return -1;  }      }}
**********************************************************************************
<pre name="code" class="java">/**  数组查找:(基本查找)  需求:查询出数组中元素是5的脚标,只返回第一个元素的脚标  结果:1.找到了 返回脚标       2.找不到 返回-1   二分查找:每次查找都是从数组的中间开始查找,数据效率提高两倍            前提条件:数组本身要保证有序的*/class  笔记502{public static void main(String[] args) {System.out.println("输出脚标:"+getIndex(9));int[][]array=new int[3][2];          //二维数组System.out.println(array);          //输出内存地址System.out.println(array[0]);       //输出内存地址System.out.println(array[0][0]);       //默认 0       //二维数组的遍历:   for (int y=0;y<array.length ;y++ )   {   for(int x=0;x<array[y].length;x++)   {   System.out.println(array[y][x]);       }   }           int[][]array=new int[3][]; array[0]=new int[1]; array[1]=new int[2]; array[2]=new int[3]; //如何给二维数组赋值 array        int[][]array={{1,2,3},{11,22},{110}};for (int x=0;x<array ; ){}}/*public static int getIndex(int num)                 //数组查找             //两个输出口{//定于数组int[]array=new int[] {2,3,6,5,7,8};for (int index=0;index<array.length ;index++ )    {if(array[index]==num){return index;    }    }return -1;    }*/       public static int getIndex(int num)                                  //只有一个输出口{   int i=-1;//定于数组int[]array=new int[] {2,3,6,5,7,8};for (int index=0;index<array.length ;index++ )    {if(array[index]==num){     i= index; break;                                 //没有break,有重复数字,输出最后的数字的脚标    }    }return i;                                   //退出当前循环,直接return值    }     /* 二维数组 格式1:int[][]array=new int[3][2]; 格式2:int[][]array=new int[3][]; array[0]=new int[1]; array[1]=new int[2]; array[2]=new int[3]; 格式3:int[][]array={{1,2,3},{11,22},{110}}; 二维数组的遍历:  */}
******************************************************************************
<pre name="code" class="java">/**进制转换十进制转换成16进制*/class  HexDemon{public static void main(String[] args) {/*int num=60;//3cwhile(num>0){     int tem=num & 15; if (tem>9) { //转换成A--F System.out.println((char)((tem-10)+'A')); } else { System.out.println(tem);     } num=num>>>4;}*/           toHex(60);  // toHex1(50);}       //十进制转换为16进制    //发现一个问题:反过来输出//解决思路:使用数组存起来,最后将数组倒序输出//什么数组?字符数组//4字节  32位//0000 0000 0000 0000 0000 0000 0000 0000    public static void toHex(int num){char[]c=new char[8];//在内存中开辟一个空间储存了八个字符的数组对象int index=0;while (num>0)     {  int tem=num&15;  if(tem>9)  {  //A-F  c[index]=(char)((tem-10)+'A');      }  else  {  //0-9  转换成字符0-9  c[index]=(char)(tem+'0');      }  index++;  num=num>>>4;     } //将数组倒序打印 for (int i=index-1;i>=0;i-- ) { System.out.println(c[i]); }    }/*0,1,2,3,4,5,6,7,8,9,11,12,13,14,15思路:率先定义好16进制的字符数组,位与15后*/   /*    public static void toHex1(int num){char[]c=new char[8];int index=0;while (num>0)     {  int tem=num&15;  if(tem>9)  {  //A-F  c[index]=(char)((tem-10)+'A');      }  else  {  //0-9  转换成字符0-9  c[index]=(char)(tem+'0');      }  index++;  num=num>>>4;     } //将数组倒序打印 for (int i=index-1;i>=0;i-- ) { System.out.println(c[i]); }    }*/}
***********************************************************************************

/**数据加密某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,然后将第一位和最后一位数字交换.请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来例:123456输出:654321     109876 609871*/class codetran {public static void main(String[] args) {tranCode(123456);}public static void tranCode(int num){        String aS = String.valueOf(num);//将基本数据型态转换成 String 的 static 方法         char[] asC = aS.toCharArray();//ToCharArray 将字符串转换为字符数组        int[]c=new int[8];int index=0;        for(int i=0;i<asC.length;i++){         System.out.println(asC[i]);index++;    }          System.out.println("************");          for (int i=index-1;i>=0;i-- )   {       System.out.print(asC[i]+" "); //System.out.print(index+" ");               } System.out.println(); System.out.println("************");              //以上部分完成数据倒序           for(int i=index-1;i>=0;i--){      c[i]=(asC[i]-48+5)%10;    System.out.print(c[i]+" ");   }  int ex;  ex=c[0];  c[0]=c[index-1];  c[index-1]=ex; System.out.println(); System.out.println("************");         for(int i=index-1;i>=0;i--){        System.out.print(c[i]+" ");   }                   }}






0 0
原创粉丝点击