课外天地 李树青学习天地Java程序语言课件 → 课件6下载——Java数组


  共有20219人关注过本帖树形打印复制链接

主题:课件6下载——Java数组

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1945 积分:26736 威望:0 精华:34 注册:2003/12/30 16:34:32
课件6下载——Java数组  发帖心情 Post By:2006/2/26 21:21:34 [只看该作者]

Java的数组

数组是种有效表达集合元素的数据结构,同时也是种重要的引用类型

1 定义
1、1 变量声明
一般的使用方法为:
int[] narray=new int[10];
上述的定义应该理解如下:
首先表达式的左边定义一个数组的引用变量,它并不是数组,表达式的右边才是数组引用变量的值,即利用new操作符动态生成的真正的数组变量,它是种对象变量,拥有存储内部元素的能力。但是数组变量没有名称,所以必须通过引用变量来间接访问,所以引用变量的功能和传统指针变量的功能很相似。不过,引用变量的功能要较指针更加简单和安全,程序中不能直接对引用变量进行诸如指针变量般的地址运算。

引用变量和对象变量的这种设计方式,主要是因为变量内存存储的不同,对于基本类型,由于占用单元小,都存储在程序所拥有的栈空间中,而对于对象变量,通常都比较大,所以一般采用这种引用变量和对象变量分离的方式,将对象变量存储在程序后的堆空间中,程序内部通过引用变量间接访问它们。

说明:
可以将int[] narray写成int narray[],两种写法意义一样,但是第一种写法更加和一般变量的定义一致,而且在新的语言中逐渐废止了传统的int narray[]写法,如C#

上述写法可以分离为两行代码,使得意义更加清晰:
int[] narray;
narray=new int[10];
如果只写出第一行语句,并不代表生成了数组变量,只是生成了数组类型的引用变量。

当然,数组的类型除了基本类型外,也可以是引用类型,如String类型的字符串数组:
public class exec
{
        public static void main(String[] args)
        {
                String[] narray=new String[5];
                System.out.println(narray[0]);
        }
}
输出为null
但是要注意的是,此时数组的每个元素只是一个字符串类型的引用变量,而非字符串变量本身,所以打印结果为null,null为Java中的关键字,表示一个引用变量为空,没有指向诸如字符串或者数组的真实对象变量。

再如,如果每个数组元素可以是一个数组引用类型的话,就形成了数组的数组,即二维数组
public class exec
{
        public static void main(String[] args)
        {
                int[][] narray=new int[6][5];
                System.out.println(narray[0][0]);
        }
}
上述程序的理解和字符串数组很相似,只需把所有的int[]和String对换即可,而此时的int[]和String其实都表示数组元素的类型。

1、2 动态长度的数组
由于数组变量是利用new操作符动态生成的,所以可以生成动态长度的数组变量,如
public class exec
{
        public static void main(String[] args)
        {
                String str=javax.swing.JOptionPane.showInputDialog("Please input the size:");
                int len=Integer.parseInt(str);
                                
                int[] narray;
                narray=new int[len];
        }
}
但是一旦数组变量生成好后,就不能再次改变数组变量的长度了

1、3 数组初始化
Java数组也可以在创建的同时进行初始化,如
public class exec
{
        public static void main(String[] args)
        {
                int[] narray={1,2,3,4,5,6};
                for(int i=0;i<narray.length;i++)
                        System.out.println(narray);
        }
}
输出为:
1
2
3
4
5
6

这些写法都是不对的,如
int[5] narray={1,2,3,4,5,6};
int narray[5]={1,2,3,4,5,6};

2 使用
简单的数组循环方法为:
public class exec
{
        public static void main(String[] args)
        {
                int[] narray=new int[10];
                for(int i=0;i<narray.length;i++)
                        System.out.println(narray);
        }
}
输出全部为0(说明数组变量能够自动对整型类型的内部元素初始化为0)

一个例子(让用户指定数组长度,分别给每个数组元素赋值,最后算出平均数):
public class exec
{
   public static void main( String args[] )
   {
                String s=javax.swing.JOptionPane.showInputDialog("Please input the size:");
                int c=Integer.parseInt(s);
                int[] array=new int[c];
                int x=0;
                int y=0;
                
                for(int i=0;i<c;i++)
                {
                        s=javax.swing.JOptionPane.showInputDialog("Please input the number "+(i+1)+"#:");
                        x=Integer.parseInt(s);
                        array=x;
                }
                for(int i=0;i<c;i++)
                {
                        y=y+array;
                }
                y=y/c;
                System.out.println("The average is "+y);
   }
}

[此贴子已经被作者于2010-12-12 07:33:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hank
  2楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:4 积分:154 威望:0 精华:0 注册:2006/11/18 7:35:07
  发帖心情 Post By:2007/3/18 19:16:21 [只看该作者]

老师,你给的这个课件上最后那个例子里面,程序编译时有点错误。

                for(int i=0;i<c;i++)
                {
                        s=javax.swing.JOptionPane.showInputDialog("Please input the number "+(i+1)+"#:");
                        x=Integer.parseInt(s);
                        array=x;
                }
                for(int i=0;i<c;i++)
                {
                       y=y+array;
                }
我觉得应该将这两个语句改成:

for(int i=0;i<c;i++)
                {
                        s=javax.swing.JOptionPane.showInputDialog("Please input the number "+(i+1)+"#:");
                        x=Integer.parseInt(s);
                       array[i]=x;                }
                for(int i=0;i<c;i++)
                {
                       y=y+array[i];                }

[此贴子已经被admin于2010-12-12 07:33:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  3楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1945 积分:26736 威望:0 精华:34 注册:2003/12/30 16:34:32
你说的没错,多谢提醒  发帖心情 Post By:2007/3/18 21:23:00 [只看该作者]

你说得很正确!课件上传时,丢失了许多字符,多谢提醒


 回到顶部