七月十九日

        下午我们并没有在教室上课,而是在室外进行拓展活动。 我们做了三个活动。 最让我记忆犹新的是第二个活动, 叫做空中板凳。 下午大热的天, 我们组5个人相互扶持着围在一起, 到后来应该说就是抱在一起 。那个汗啊!  应该怎么说呢?  不停的流淌。。。。    我们的左腿坐在左边的人的右腿上, 右腿给右边的人坐着。 呃~ 这还是要有相当扎实的马步功底的。

       在这个活动中,我们组的成员都不止一次的将要倒下,都是左右的同学扶持着。比如说吧,某坚持不住了,左右的同学都会抱着他的上身,让腿脚稍微休息下,掌握好重心,相互鼓励,如此方才坚持到最后。
      这又不禁让我想起了以前参加的野外拓展。最后一个项目是“人墙”,就是4米长宽的正方形墙,不借用任何工具要在规定的时间内全部过去,如还有一位同学未在规定的时间内过去就全部失败。那都是结结实实踩在别人肩上、头上、脸上过去的,最后留下高的瘦的,倒挂拉上去。
     那时我们是2个班一起去进行拓展的。以前我们2个班没有太多的交集,但进行过几天拓展后就让我感觉到我们2个班是一个整体。

       至于上午讲的数组概念 并讲解了几个例子 没多大印象

       数组
数组是相同类型的数据按顺序组成的一种复合数据类型
通过数组名加数组下标来使用数组中的数据。下标从0开始。
1. 声明数组
数组的声明格式:
数组元素类型     数组名[];
数组元素类型[]    数组名;
例:int MyIntArray[];
            int[]  MyIntArray;
可以声明任何类型的数组──原始类型或类类型
char s[];//或char[]  s;
Point  p? ?;    // where Point is a class
声明数组仅仅指定了数组的名字和数组元素类型,在使用数组前还必须为它分配内存空间,即创建数组。
2. 创建数组
在为数组分配内存空间时必须指明数组的长度。
格式:
数组名 = new  数组元素类型 [数组元素个数];
例:s = new char?4?; 
数组s获得了4个用来存放char型数据的内存空间
数组变量s中存放着这些内存单元的首地址

声明数组和创建数组可以一起完成:
int  MyIntArray[]=new int[10];
例:
int  arr[]=new int[5];

3. 数组元素的使用
一维数组通过下标访问自己的元素,如s[0];
下标从0开始,下标越界将发生异常;
所有的数组都有一个属性length,存储数组元素的个数,利用它可方便地完成很多操作;
float a[]=new float[6];
则a.length的值为6

4. 数组的初始化
创建数组后,系统会给每个数组元素一个默认的值。
元素类型是基本数据类型的数组,在创建数组空间时可给出各数组元素的初值,这时可省略new运算符。
int a[]={1,2,3,4,5,6,7,8,9,10};

给数组元素分配内存并为数组元素赋初值的过程称为数组初始化。初始化可分为动态初始化和静态初始化。
静态初始化
当数组元素的初始化值直接由括在大括号“{ }”之间的数据给出时,就称为静态初始化。
适用于数组的元素不多且初始元素有限时。往往和声明结合在一起使用。
其格式如下:
    array_type array_Name={element1[, element2…]};
动态初始化
先用new操作符为数组分配内存,然后才为每一个元素赋初值。

创建数组元素并初始化
对象数组(引用变量数组):对以某一类的对象为元素的数组而言,创建并初始化每个数组元素是必不可少的。
Student[] stu;        //定义一个Student类型数组
stu=new Student[10]; 
注意:
上述语句分配存储空间,创建Student类型数组,每个元素都是默认值为null的引用变量。
内存分配如下图所示:


如何创建数组元素?
执行对象的构造方法,即实例化对象。
for (int i=0;i<10;i++){
 stu[i]=new Student();    
  }
内存分配如图4-6所示:
5. 处理数组
处理数组元素时,会经常使用for循环。
所有数组元素都是同一类型的,可以使用循环以同样的方式反复处理;
由于数组的大小已知,使用for循环比较合理。

(1) 用随机数初始化数组
以下循环用0到99之间的随机整数初始化数组myList
(2) 输出数组
为输出数组,必须使用类似下面的循环,输出数组中的每一个元素。
(3) 对所有元素求和
(4) 查找最大元素
6. 增强的for 循环
在J2SE 5.0中,Java语言增加了一种循环结构,称为增强的for循环,不用下标变量就可以顺序地访问整个数组。

例1:输出数组中的最大及最小值    Arraymax.java
例2:读入6个整数,找出其中的最大者,并统计其
              出现的次数    TestArray.java
例3:数组元素的复制
              ArrCopy.java  (程序存在的问题?下页)
例4 :编程模仿扔硬币游戏  rengYingBi.java
例5:抽奖游戏:36选7(给方法传递数组参数)  
                RandomA1.java
例6:对象数组      ArrOb.java
7. 数组的复制
在Java中,可以使用赋值语句复制基本类型的变量,但不能复制数组。
将一个数组变量复制给另一个数组变量,实际上是一个数组的引用复制给另一个变量,使两个变量指向同样的内在地址。

复制数组有三种方法:
用循环语句逐个复制数组的元素

复制数组有三种方法:
2.  用System类中的静态方法arraycopy,不用循环

复制数组有三种方法:
用clone方法复制数组
clone方法是对象类Object中的方法,可以创建一个有单独内存空间的对象。
不是所有的对象都可以克隆。要成为一个可克隆的对象,它的类必须实现java.lang.Cloneable接口。
clone方法的返回值是Object类型,要使用强制类型转换为适当类型。
给方法传递数组参数
public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}

public class Test {
  public static void main(String[] args) {
    int x = 1; // x represents an int value
    int[] y = new int[10]; // y represents an array of int values
 
    m(x, y); // Invoke m with arguments x and y
 
    System.out.println("x is " + x);
    System.out.println("y[0] is " + y[0]);
  }
 
  public static void m(int number, int[] numbers) {
    number = 1001; // Assign a new value to number
    numbers[0] = 5555; // Assign a new value to numbers[0]
  }
}

调用 m(x, y)时, x 和 y 的值传递给 number和 numbers。 因为 y 包含的是数组的引用值, 所以numbers 包含同一数组的相同引用值。
例:TestPassArray.java图示
从方法返回数组
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = {1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
reverse 方法的运行过程
int[] list1 = new int[]{1, 2, 3, 4, 5, 6};
int[] list2 = reverse(list1);
练习
改写36选7的抽奖游戏程序,用方法实现抽奖操作,方法的返回值为以获奖号码为元素的数组。
改写求二维数组最大值的程序,用方法来求得二维数组的最大值,二维数组作为参数。
二维数组
可以使用二维数组表示矩阵或表格。
声明二维数组的语法:
数据类型[][]  数组名;
数据类型  数组名[][];
例:声明int型的二维数组变量matrix
int[][]  matrix;      或 :  int  matrix[][];
创建二维数组:
matrix=new int[5][5];
数组元素赋值:
matrix[2][1]=7; //每个下标必须放在一对方括号中

可以使用静态初始化来声明、创建和初始化二维数组。
二维数组
Java中没有真正的**数组,但因为数组元素可以声明为任何类型,所以可以建立数组的数组(的数组……),由此得到**数组;
n维数组是n-1维数组的数组;
声明**数组时使用类型及多对方括号,如:
int[] []      二维数组,每个元素是int类型的。
创建二维数组的格式
type arrayN[][]=new type[arrleng1][];
arrayN[0]=new type[arrleng2];
arrayN[1]=new type[arrleng2];
 ……  ……
arrayN[arrleng1-1]=new type[arrleng2];
创建非矩阵数组
int twoDim[][]=new int[4][];
twoDim[0]=new int[2];
twoDim[1]=new int[4];
twoDim[2]=new int[6];
twoDim[3]=new int[8];
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值