4.Java数组的定义
问题:一个班有50个人,如何在程序中输出所有同学的学号?
数组的定义:一组能够存储相同数据类型的变量的集合。
数组一定要有长度。
数组中每个数据称为元素,
数组元素位置从0开始,
数组中的位置称为下标。
//所有数组都有的一个属性:长度system . out . println ( scores . length);
当我们有一组 相同类型的数据 的数据需要存储,如果此时需要单个变量来存储,我们要定义诺干个变量名,这样会非常繁琐,并不利以维护。
5.数组的赋值方式(四种)
//new
栈内存:大小固定,用于储存局部临时变量(基本数据类型)和引用变量
堆内存:大小不固定:对象
第一种
使用默认的初始值来初始化数组中的每一个元素 |
---|
语法:数组元素类型 [ ] 数组名 = new 数组元素类型[数组中元素的个数(数组长度) ] |
如: int [ ] scores = new int [3]; |
第二种
先声明,然后再赋予默认的初始值。 |
---|
语法:数组元素类型[ ]数组名; 数组名=new数组元素类型[ 数组中元素个数 (数组的长度 ) ]; |
如: int [ ] scores ; 和 Scores = new int [3]; |
第三种
先声明,然后再使用指定的值进行初始化 。 |
---|
语法: 数组元素类型[ ]数组名=new数组元素类型[ ] { 元素1,元素2,…}; |
如: int [ ]scores=new int [ ] {12,56,33}; |
第四种
将第三种写法可以化简为(使用数组常量给数组进行赋值) |
---|
语法:数组元素类型[ ]数组名= { 元素1,元素2… }; |
如: int [ ] scores={ 23,66,88 }; |
.
7.数组的遍历
求数组的长度:
X.length
通过下标来访问数组中的元素。
下标:从0开始,到数组长度-1;
如:int [ ]scores={12,3,23};
访问最后一个元素:int lastElement=scores[scores.length-1];
遍历:依次取出数组中的每一个元素。
遍历方式 1普通的for循环
语法:
for ( int i=0 ; i< 数组长度 ; i ++){
//i:循环变量,同样:也是数组的下标 ( 取值范围[ 0 ,数组长度 ) )
数组在元素类型=数组名[ i ];
}
8.增强for循环与可变参数
1.5以后将java新增foteach循环和可变参数。
遍历方式 2:使用增强for循环【foreach循环】
语法:
for(数组中元素的类型 变量名:数组名){
数组中元素类型 临时变量=变量;
}
结合方法定义,可以用可变参数来代替数组作为参数。
Public stastic void print(int...变量名){
//可变参数在使用时作为数组使用。
}
例:
Import java .util.Scanner;
Public class Test7{
Pubilc static void main (String[] arge){
int [ ] scores={59,75,83,232,33};
System.out.println(“数组的长度”+score . length);
Public stastic void print( int[ ] x){
//遍历数组for遍历
Int len=scores.length;
For(int i=0,i<len ; i++){
Int score=scores [ i];
System .out.println(score);
}
}
//foreach遍历,元素类型是int,表示把:后面的scores的元素依次赋值给int 型的x。
for(int x : scores){
System.out.println( x);
}
Public stastic void print2( int[ ] x){
//遍历数组for遍历
Int len=scores.length;
For(int i=0,i<len ; i++){
Int score=scores [ i];
System .out.println(score);
}
}
// jdk1.5可变参数,x是可变参数,
//可变参数只能是参数列表中的最后一个
//可变参数可以作为数组使用
方法调用的时候,for循环print(scores);输入数组
可变参数时候,print(11,22,22);直接输入元素
Public stastic void print2(int...x){
Int len=scores.length;
For(int i=0,i<len ; i++){
System .out.println(x[i]);
}
}
9.数组要注意的问题
使用数组要注意的问题:
空指针异常(NullpointerException)
// java.lang.NullPointException
//当一个变量为null(没有赋值)时,我们去调用了该变量的属性和方法
数组越界异常(ArrayindexOutofBoundsException)
10.数组示例
1.猜数游戏,从键盘中任意输入一个数据,判断数列中是否包含次数。
Import java .util.Scanner;
Public clsaa Test8{
Public stastic void main(String[ ] args){
Int[ ]nums={30,17,6,22,27};
//接收键盘输入对象
Scanner input = new Scanner(System .in) ;
System.out.println(“请输入你要的书50字以内”);
//接收并存储键盘输入数为int类型
Int userNum = input.nextInt();
Bollean flag=fallse;
For(int x :nums){
If(userNum==x){
//System.out.println(“猜对了”);改为
flag=ture;
Break;
}
}
If(flag){
System.out.println(“恭喜你。猜对了”);
}else{
System.oit.printlin(“继续努力”);
}
}
}
2.0版本加入伪随机数
Import Java.util.Scanner;
Import java.util.Random;//生成伪随机数
Pubilc class test{
Public stastic void main(String []args){
Int [] num=new int[5];
Random r=new Random();//创建一个可以生成随机数的工具
Int len=nums.length;
for(int i=0 ; i<=len ; i++){
num[ i ]=r.nextInt(20);//随机生成20以内的数。
}
}
}
2.打印正三角形
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
FFFFFFFFFFF
GGGGGGGGGGGGG
Import java .util.Scanner;
Public class Test{
Pubilc static void main (String[] arge){
char[ ] cs={‘A’,’B’,’C’,’D’,’E’,’F’,’G’};
Int len=cs.length;
//外层循环,定行数
For(int i=1;i<=len;i++){
For( int j = i ; j < len ; j++){
System.out.print(“ ”) ;
}
For( int j = 1 ; j < =i *2-1 ; j++ ){
System.out .print(cs[i-1]);
}
System.out.println();
}
}
}
多维数组示例:
程序员大赛,有3个班级各三名学员参赛,记录每个学员的成绩,并计算每个班的平均分。
//Java中没有真正的多维数组,多维数组的表达形式是数组中的元素还是数组
Import . java . util . scanner ;
Public clsaa test{
Public stastic void main (String [] args){
Int[]={{12,34,55},{22,6,66},{22,99,77}};
Int classLen=scores.length;
for (int i=0;i<=classLen ; i++){
Int sum=0;
Int count = scores[ i ].length;//每个班的数组长度
For(int j=0; j<count ; j++){
Sum+=scores[ i ][ j ];
}
Int avg = sum/count;
System .out .println (“第”+(i+1)+”班的平均成绩是:”+avg ) ;
}
}
}
11.最大最小值算法:
最大值:
在一个数列中找出最大的数
最小值:
在一个数列中找出最小的数
Import java.util.Scanner;
Public class Test{
Public stastic void main (String []args){
Int[ ] num={12,55,66,22,44,85,1,10};
Int max=max ( num ) ; //定义max函数
System.out.println(“数列中的最大值是”+max);
Int min =min( num);
System.out.println(“数列中的最小值是”+min);
}
//求数列中的最大值
Public stastic int max( int[ ] num){
Int max =num [0];//打擂台式,先立个靶子
for( int i=1 ; i < len ; i++ ){
If(num[ i ]>max){
num [ i ]=max+num[ i ];
max =num[ i ] - max ;
num[ i ]=num[ i]-max;
}
}
return max ;
}
//其数列中的最小值
Public stastic int min (int [ ]num){
Int min =num [0];//打擂台式,先立个靶子
for( int i=1 ; i < len ; i++ ){
If(num[ i ]>min ){
num [ i ]=min +num[ i ];
min =num[ i ] - max ;
num[ i ]=num[ i]-min ;
}
}
return min ;
}