数组基本概念和用法

数组:是相同数据类型的元素按一定顺序排列的集合

//1.相同的数据类型
//2.数组有大小
//3.数组有下标(有顺序)
//4.数组的长度是固定的
//5.定义数组时,不能指定长度
例子:int[] nums = new int[5]; 

注意:定义数组时不能指定数组的长度

数组访问方法:<数组名>[index]

数组元素index:从0开始递增

数组中的元素个数称为数组长度,所有数组均有一个length属性记录数组长度。

该类包含操作数组的各种方法:

Arrays.fill() //对指定数组的每个元素,填充指定的值

Arrays.sort()//对指定数组的每个元素进行升序排序

Arrays. binarySearch()//从指定数组中查找指定的元素,返回元素下标

System.arraycopy() 拷贝数组


BreakPoint(断点)

 在某一行代码上标记断点,debug环境下,程序一旦运行到断点就会停留在当前代码行.方便开发者观察内存数据的细节.

做法:通常在代码的行号上进行标记.

操作细节:

1.必须至少有一个断点,才能进入debug视图;
2.Run as 情况下,即使有再多的断点,也视作正常运行;
3.如果debug as>没有Java Application选项,检查

  Runas > 下是否有Java Application,检查main方法是否正确.

4.所谓表达式, 就是可以写在 = 后边的内容.

即使这个表达式一开始并没有出现在源码中.

//冒泡

/**
 * 冒泡排序
 */
package com.demo;
public class Maopao {
public static void main(String[] args) {
// TODO Auto-generated method stub
int numbers[]= {1,2,9,6,4,3,7,8,5};
int temp=0;
int size=numbers.length;
for(int i = 0 ; i < size; i ++)
        {
for(int j = 0 ;j < size-1-i ; j++)
{
if(numbers[j] > numbers[j+1])  //交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}System.out.println(numbers[i]);

        }
    }
}

/**
 * 判断奇偶数 和大小
 */
package com.demo;
import java.util.Arrays;
public class Shuzu1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num1= {1,2,5,6,9,11,12,16};
int[] num2= {8,13,5,6,11,2,1};
int countj=0;
int counto=0;
for(int i=0;i<num1.length;i++)
{
if(num1[i]!=0&&num1[i]%2==0)//0除外,能被2整除的数就是偶数
{
counto++;

else {
countj++;
}
 
}
System.out.println("偶数个数为"+counto+"奇数个数为"+countj);

int sum=0;
// int min,max; 
// min=max=num2[0];  
for(int i=0;i<num2.length;i++)
{
sum+=num2[i];
/* if(num2[i]>max)   // 判断最大值  
max=num2[i];  
if(num2[i]<min)   // 判断最小值  
min=num2[i];  */
}
//升序排序;
Arrays.sort(num2);
System.out.println("数组和"+sum);
// System.out.println("数组的最大值是:"+max); // 输出最大值  
// System.out.println("数组的最小值是:"+min); // 输出最小值  
System.out.println("Min:"+num2[0]+"   "+"Max:"+num2[6]); 
}
}

/**
 * 数组基本遍历
 */
package com.demo;
public class Shuzu2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[][][] arr= {{{"鼓楼区","秦淮区","江宁区"},{"园区","吴中区","相城区","沧浪区"}},
{{"西湖区","上城区","下城区"},{"鄞州区"}},
{{"A","B"},{"C","D"}}};
// System.out.println(arr[0][1][1]);
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length ;j++)
{
for(int k=0;k<arr[i][j].length ;k++)
{
System.out.print(arr[i][j][k]+"   ");
}
System.out.println();
}
System.out.println();
}
System.out.println();
for (String[][] s : arr) {                         
           for (String[] is2 : s) {  
               for (String i : is2) {  
                   System.out.print(i + "\t");  
               }  
               System.out.println();           
           }  
       }  
}
}
 

package com.array;
import java.util.Arrays;
public class TestArray05 {
static int[] arr = {2,3,5,12,34,56,23,11};
public static void main(String[] args) {

//定义一个数组  int[] arr = {2,3,5,12,34,56,23,11};
//定义一个方法,delete(int[] arr,int index)
//delete(arr,3);


int[] as = addValue(arr,1234);
as = addValue(as, 4567);
System.out.println(as.length);
for (int i = 0; i < as.length; i++) {
System.out.println(as[i]);
}
}
static int[] addValue(int[] arr,int value){
//判断arr数组是否有空间
if(value != 0){
if(arr[arr.length-1] != 0){
//数据没有空间
//新创建一个数组,新数组中包含元数组的数据 ,并且长度是原数组的2倍
int[] newArr = Arrays.copyOf(arr, arr.length*2);
newArr[arr.length] = value;
return newArr;
}else {
//数组还有空间
for (int i = 0; i < arr.length; i++) {
if(arr[i] == 0){
arr[i] = value;
break;
}
}
return arr;
}
}else {
System.out.println("数据有误!!!!");
}
return null;
}
static int[] addValue(int[] arr,int value,int index){
if(value != 0){
//判断数组有没有空余的空间
if(arr[arr.length-1] != 0){
//没有空间
}else {
//说明有空间
if(index <0 || index >= arr.length){
//数据超出范围
System.out.println("数组越界........");
}else  {
int count = 0;
//找到下标最大,且值不为零的
for (int i = arr.length-1; i >= 0; i--) {
if(arr[i] != 0){
count = i;
break;
}
}

//判断index是插入在数据区,还是空余区
if(index > count){
arr[index] = value;
}else {
for (int i = count; i >= index; i--) {
arr[i+1] = arr[i];
}

arr[index] = value;
}
}
}
}else {

System.out.println("数据错误!!!");
}
return null;
}
static void delete(int[] arr,int index){
if(index < 0 || index >= arr.length -1){
System.out.println("数据错误");
}else {
for (int i = index; i < arr.length-1; i++) {
arr[i] = arr[i+1];
}
arr[arr.length-1] = 0;
}
}
}

/**
 * 1.定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课,按存储顺序依次为:core C++,coreJava,Servlet,JSP和EJB。
   (1)循环给二维数组的每一个元素赋0~100之间的随机整数。
   (2)按照列表的方式输出这些学员的每门课程的成绩。
   (3)要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。
   (4)要求编写程序求所有学员的某门课程的平均分。


 */
package com.work;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//(1)循环给二维数组的每一个元素赋0~100之间的随机整数。
int[][]arr = new int[20][5];
int avescore=0;
/* for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length ;j++)
{
arr[i][j]=(int)(Math.random()*100);
System.out.print(arr[i][j]+"  ");
}
System.out.println();
}
System.out.println("=============================\n");*/
//(2)按照列表的方式输出这些学员的每门课程的成绩。
for(int i=0;i<20;i++)
{
for(int j=0;j<5;j++)
{
arr[i][j]=(int)(Math.random()*100);
System.out.print(arr[i][j]+"   ");
}
System.out.println();
}
//(3)要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。
int[] sum=new int[20];
for(int i=0;i<20;i++)
{
for(int j=0;j<5;j++)
{
sum[i]+=arr[i][j];
}
System.out.println("第"+i + "号学生总分:" + sum[i]);
}
//(4)要求编写程序求所有学员的某门课程的平均分。
int total=0;
for(int i=0;i<20;i++)
{
  for(int j=0;j<5;j++)
  {
   if(j==0) 
   {
    total+=arr[i][j];
   }
  }
}
System.out.println(total/20);
}
}

展开阅读全文

没有更多推荐了,返回首页