一元数组与二元数组

一元数组

数组的声明

1,类型 [] 数组名
2,类型 数组名 []
分配空间
数组名=new 类型 [长度];

注意:1,2步可以合在一起写
    char cs[]=new char[5];

数组赋值

数组名 [下标]=数值;
例如:
cs[0]=1;
cs[1]=2;
......

or
int[] arr = new int[]{1,1,1,1,1,1}; 
or
类型 [] 数组名={值,值,......};

  变形:
   Scanner sc=new Scanner(System.in);
   for(int i=0;i<cs.length;i++){
    cs[i]=(char)sc.nextByte();
   }

数组使用小练习:

package pp;

public class p {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  // int[] arr = new int[]{1,1,1,1,1,1};
  int[] arr = new int[5];
  int[] b = new int[5];
  arr[0] = 5;
  b[0] = 6;
  b[3] = 15;

  System.out.println("arr[0] = " + arr[0]);
  System.out.println("arr[3] = " + arr[3]);

  arr = b;// 更改arr的指向

  System.out.println("arr[0] = " + arr[0]);
  System.out.println("arr[3] = " + arr[3]);
  System.out.println("b[3] = " + b[3]);
  System.out.println("b[0] = " + b[0]);

  b = null;// b无指向

  System.out.println("arr[0] = " + arr[0]);
  System.out.println("arr[3] = " + arr[3]);
//   System.out.println("b[3] = "+b[3]);//以视为垃圾
//   System.out.println("b[0] = "+b[0]);

 }

}


进制转换

  1. import java.awt.print.Printable;  
  2. import java.util.Arrays;  
  3. import java.util.Scanner;  
  4.   
  5. import javax.swing.text.DefaultEditorKit.InsertBreakAction;  
  6.   
  7. import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;  
  8.   
  9. /* 需求:  
  10.  * 获取一个整数的X进制的表现形式  
  11.  * */  
  12. public class Main   
  13. {  
  14.     public static void main(String[] args)  
  15.     {  
  16.         Scanner cin = new Scanner(System.in);  
  17.         int num = cin.nextInt();  
  18.           
  19.         int ary[] = new int[8];  
  20.         getx(num,ary,15,4);//16进制  
  21.         System.out.println("16进制表现形式如下:");  
  22.         print(ary);  
  23.           
  24.         int bry[] = new int[12];  
  25.         int num1 = cin.nextInt();  
  26.         getx(num1,bry,7,3);//8进制  
  27.         System.out.println("8进制表现形式如下:");  
  28.         print8(bry);  
  29.           
  30.           
  31.         System.out.println("6的2进制表现形式如下:");  
  32.         System.out.println(Integer.toBinaryString(6));  
  33.         System.out.println("-6的2进制表现形式如下:");  
  34.         System.out.println(Integer.toBinaryString(-6));  
  35.       
  36.         cin.close();  
  37.     }  
  38.     public static void print(int[] ary)  
  39.     {  
  40.         int i;  
  41.         for(i = 7;i>=0;i--)  
  42.         {  
  43.             if(ary[i]!=0)  
  44.                 break;  
  45.         }  
  46.         for(int j = i;j>=0;j--)  
  47.         {  
  48.             if(ary[j]>9)  
  49.             switch (ary[j])   
  50.             {  
  51.             case 10:System.out.print("A");  
  52.                 break;  
  53.             case 11:System.out.print("B");  
  54.             break;  
  55.             case 12:System.out.print("C");  
  56.             break;  
  57.             case 13:System.out.print("D");  
  58.             break;  
  59.             case 14:System.out.print("E");  
  60.             break;  
  61.             case 15:System.out.print("F");  
  62.             break;  
  63.             default:  
  64.                 break;  
  65.             }  
  66.             else {  
  67.                 System.out.print(ary[j]);;  
  68.             }  
  69.               
  70.         }  
  71.         System.out.println();  
  72.     }  
  73.     public static void print8(int bry[])  
  74.     {  
  75.         int i;  
  76.         for(i = 10;i>=0;i--)  
  77.         {  
  78.             if(bry[i]!=0)  
  79.                 break;  
  80.         }  
  81.         for(int j = i;j>=0;j--)  
  82.         {  
  83.             System.out.print(bry[j]);  
  84.         }  
  85.         System.out.println();  
  86.     }  
  87.      public static void getx(int num,int ary[],int mod,int wz)  
  88.     {  
  89.         int l = 0;  
  90.       
  91.         for(int i = 0;i<8;i++)  
  92.         {  
  93.             int t = num & mod;//16进制的最大值  
  94.             ary[l++] = t;  
  95.             num = num >>> wz;//4个二进制位表示一个16进制位  
  96.         }  
  97.     }  
  98. }  

二维数组:
int arr[][] = new int[3][2];//数组初始null,元素的初始值都是0  
这个二维数组,这个二维数组中有3个一维数组,每个一维数组有2个元素
  1. int arr[][] = new int[4][];  
  2.   
  3.   
  4. arr[0] = new int[5];  
  5. arr[1] = new int[3];  
  6. arr[2] = new int[8];  
  7. arr[2] = new int[1];  
这个二维数组,有4个一维数组,数组[0] 中有5个元素,数组[1] 中有3个元素.....

打印二维数组中的下标为1的一维数组的下标为1的元素:System.out.print(arr[1][1]);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主要内容: 1. 数组的定义 2. 数组的分类[按维数] 3. 数组的用法 4. 数组的常见操作 java中的foreach实现方式 一维数组 1. 定义:省略 2. 用法: 声明并赋值: //方法一:先声明,再赋值 int [] arr=new int[5]; arr[0]=10; arr[4]=100; arr[5]=10;//语法无误,编译时报错:java.lang.ArrayIndexOutOfBoundsException System.out.println(arr[5]);//语法无误,编译时报错:错误同上 //方法二:使用for循环动态赋值 //导入java.util.*;包 Scanner input=new Scanner(System.in); int [] arr=new int[5]; for(int i=0;i<arr.length;i++) { System.out.println("请输入第"+(i+1)+"个值"); arr[i]=input.nextInt(); } //方法三:声明时赋值 int [] arr=new int[]{23,45,56,67}; int [] arr1={23,45,56,67}; int [] arr2= new int[5]{23,45,56,67};//错误,此时不能给确定的长度 输出: int [] arr=new int[]{23,45,56,67}; //方法一:使用for循环输出 for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } //方法二:使用foreach输出:此为JDK5.0 新特性 for(int item : arr) { System.out.println(item); } 常见算法: 1. 求一维数组中的最大[小]值 2. 求一维数组中的总和,平均值 3. 添加,删除,修改,搜索等 具体请参考本人FTP\\5.0S1\\JAVA\\数组完整操作范例。[重复让人如此崩溃!] 二维数组 1. 定义:省略 2. 用法: 声明并赋值: //声明时赋值 int [][]arr={ {1,2,3}, {4,5,6}, {7,8,9} }; 输出: //方法一:使用嵌套for循环输出二维数组 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } //方法二:使用嵌套foreach输出二维数组 for(int row[] :arr) //此时不难看出,二维数组可以看作是每个元素都是一个一维数组的一维数组 { for(int item: row) { System.out.print(item+ " "); } System.out.println(); } 补充: //动态创建规则二维数组 int R=10;//行 int N=5;//列 int [][]arr=new int ­[N]; //动态创建不规则二维数组 int arr[][]; arr=new int[2][]; arr[0]=new int[10]; arr[1]=new int[5]; 赋值都一样:此处省略! 算法体验:杨辉三角 int i,j; int a[][]=new int[10][10]; //给每行的第一列,及对角线处均赋值为1 for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } //从arr[2][1]=a[1][0]+a[1][1]; //推出:a[i][j]=a[i-1][j-1]+a[i-1][j]; //即元素等于两肩之和 for(i=2;i<10;i++) { for(j=1;j<i;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++) { System.out.print(a[i][j]+" "); } System.out.println(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值