java听课笔记2(数组)

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 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值