java一维数组的理解

来源:互联网 发布:中国4g网络协会 编辑:程序博客网 时间:2024/05/21 09:02

本人新人学习,如有问题请指教,谢谢。

在学习java时候,数组对于我们来说是很重要的,因为好多的集合和字符串等等都和他有关。

java数组是对象,所以是继承Object类的,他也是有Object的方法的,引用类型。可以存储基本类型和引用类型

一.初始化

三种初始化 1. 类名/基本类型  [  ]   数组名称 =  new 类名/基本类型 [   index    ];

//这里面的index必须是正整数,表示这个数组的个数

2. 类名/基本类型  [  ]   数组名称 =  new 类名/基本类型 [    ]{        };

//大括号里面可以直接放入要存入的对象或基本类型数据,之间用,隔开

3.最简单的 类名/基本类型  [  ]   数组名称= {   };

//大括号里面可以直接放入要存入的对象或基本类型数据,之间用,隔开

如:int [ ]  money= new int[  8];     int [ ]  money= new int[  ]{ 12, 13 ,14 };    int [  ]  money={12,15,16,};


二.特点

数组的长度是固定的,从上面的初始化也能看出来,不管用哪种初始化都会将数组的长度固定下来了 ,也能看出数组的类型是统一的,是整型就是整型,是引用类型就是引用类型,就应为这些特征,就有java中的StringBuffer和集合。数组相当于蜜蜂的巢穴,每个地方放一个对象,但每个对象都有个下标(相当于给他贴了个标签),紧记下标是从0开始的,所长度为n的时候,最大下标是n-1.


三:数组运算

数组会使用才能有价值

l数组遍历(依次输出数组中的每一个元素)

遍历就想成,一遍遍拿数据

public class A{//定义一个类来完成遍历

public static void main(String [] args){//定义主方法

int [ ]  i= {1,2,3,4,5};//以这个数组为例 最终为[1,2,3,4,5]这中形式

System.out.print("[");

for(int j=0;j<i.length;j++){//要从0开始,执行到数字长度-1就行

if(j==i.length-1){//最后一个没有逗号的

System.out.print(i [ j ]);

}

else{

System.out.print(i [ j ]+" , ");

}

}

System.out.print("]");

}

}

l数组获取最值(获取数组中的最大值最小值)

以最大值为例,最小一样


public B{

public static void main(String [] args){

int [ ]  i= {1,3,3,5,4};// 获取这个数组最大值并输出

int max=i [ 0 ];//主要思想是用最大的与每个 元素相比,元素大的,赋值给大的变量

for(int j=1;j<i.length;j++){//从1开始应为0下标已经赋值了。

if(max<i [ j ]){//这里的for语言可以用增强for  for(int j: i){    }

max=i [ j ];

}

System.out.print(max);

}

}

}

//以上是对象比较,请重写对象类的equals方法,并且将=改为equals方法


l数组元素逆序 (就是把元素对调)

想一想,这个做中结果是不是将做后面的放在最前面了,其他的按照对应顺序,对调了。那可以这么想,我们可以

同时将前后两个元素对调,直到中间停止。根据数组是下标起作用,我们可以写两个“指针”,这两个指针一个指向小的一个指向大的,一个加,令一个同时减,最终肯定到中间,那么时候停止了,一个小,一个大,那么如果小的都大于大的了,还需要移动吗?所以代码如下:


public class C{

public static void main(String [] args){

int [ ]  i= {1,3,3,5,4};

for(int minPoint=0,maxPoint=i.length-1; minPoint>maxPoint; minPoint++,maxPoint--){

int temp=i[ minPoint ];

i [minPoint]=i[maxPoint];

i[maxPoint]=temp;

}

//这个地方调用上面A类去掉主方法的普通方法

}

}

l数组查表法(根据键盘录入索引,查找对应星期)

import java.util.Scanner;

public class D{

public static void main(String [] args){

int String[ ]={ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

System.out.println("请输入对应的星期数字,0是星期日");

Scanner sc= new Scanner(System.in);

int weekDay= sc.nextIn();

if(weekDay<0||weekDay>=7){

System.out.println("您输入的星期的数字有误");

}

System.out.println(i[ weekDay]);

}

}



l数组元素查找(查找指定元素第一次在数组中出现的索引-就是下标)

public class E{

public static void main(String [] args){

int [ ]  i= {1,3,3,5,4};

int number=3; //以这个数为例查找 i数组

for(int j=0;j<i.length;j++){

if(number==i [ j ])

System.out.println(j);

System.out.println("没找到这个数");


}

}

}



l数组排序

数组排序有很多中 ,我这里写一个选择排序,原理是第一个数开始,分别与后面的数比较,将最小的留下,第二个再与后面的比较,最终比较完毕。

public class F{

public static void main(String [] args){

int [ ] arr= {1,3,5,4,8,1,2};

for(int i=0;i<arr.length;i++){

for(int j=i+1;j<arr.length;j++){

if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;

}

}

}

}

}


l打印下列图形
----*                        
---* *                         
--* * *
-* * * *
* * * * *


class G {
public static void main(String[] args) {
int i=1,j,x;
for(;i<=5;i++){//控制“-” 打印的数和行数之和是5固定 
for(j=1;j<=5-i;j++){
System.out.print("-");
}
for(x=1;x<=i;x++){//控制“* ” 打印的数和行数相等
System.out.print("* ");
}
System.out.println();
}
}
}


0 0