java数组和向量

Java不提供数值与逻辑值之间的转换。如int x= 2;if(x)  不可以, 但是if(x != 0)

 

label1: for(I = 0;i<100;i++)

         {

                   switch(1%2){

                            case1: h=1;

                            break;

                            case0: h=0;

                            break;

                   }

                   if(i== 50){

                            breaklabel1;

                   }

}

 

该语句break是跳出label所处在的for循环,而不再是switch循环了

 

与C/C++不同的是java在数组的定义中并不为数组元素分配内存,因此方括号中[ ]不用指出数组中的元素的个数。和其他类型一样,说明并不创建对象本身。所以这些说明并不创建数组,他们只是引用变量,用于指向一个数组。

 

Java说明数组有两种方式,一个是int a[ ],还有是int [ ]a. 即方括号可以放在变量名的左边

 

Java 中 int a[5]   是错误的

Java 中没有静态的数组定义,数组的内存都是通过new动态分配的

但是可以int a[ ] = {1,2,3,4};  定义了一个含有4个元素的数组——静态初始化

Point [ ] points;

points = new Point[100];

points[1] = new Point();     ——动态初始化

//Point是一个类型

或者 int list[ ] = new int[10];   也行

Length是数组类中唯一的数据成员变量。 使用方法:string.length

 

注意:string s[ ];   s = new string[3]  和string s[ ] = newstring[3]; 一样

 

 

Java 可以创建非矩阵数组,如下:

 

Int Dim[][] = new int [4][];

Dim[0] = new int[2];

Dim[1] = new int[4];

Dim[2] = new int[6];

Dim[3] = new int[8];

 

数组形式如下

XX

XXXX

XXXXXX

XXXXXXXX

 

 

 

Elements[]从下标0的位置开始到length末尾的元素,复制在hold[]的下标0的位置

 

Vector myvector = new vector(100,50)  这个语句是初始化100个元素的空间,以后一旦空间用尽,会使元素变化成150,200,以50个增加。

 

添加元素:

Vector myvector = new vector();

for(int I = 0;i<10;i++)

{

         myvector.addElement(newRandom());

}

myvector.insertElementAt(“middle”,5);

 

删改元素:

setElementAt(Obect obj元素,int index)

把index处的元素改成obj的元素

removeElement(Obect obj)

将删除序列中第一个和obj相同的元素,后面的元素前移

removeElementAt(int index)

把index处的元素删去,后面的元素前移

removeAllElement()

清除向量序列中所有的元素,同时向量的大小设为0

 

元素的查找:

Object elementAt(int index)

该方法返回index处的元素

但是使用之前通常要进行强制类型转换

String str = (String)MyVector.elementAt(0);

 

boolean contains(Obect obj)

该方法检查向量序列中是否包含指定的对象元素obj

 

Int indexOf(Obect obj, int start_index)

Int lastindexOf(Obect obj, int start_index)

 

该方法从start_index的位置开始向后搜索,后一个方法是从前开始搜索,返回找到的第一个与指定对象obj相同的元素的下标。若对象不存在,则返回-1。

 

isEmpty( )是判断向量是否为空

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* * 基于数组向量实现 */ package dsa; public class Vector_Array implements Vector { private final int N = 1024;//数组的容量 private int n = 0;//向量的实际规模 private Object[] A;//对象数组 //构造函数 public Vector_Array() { A = new Object[N]; n = 0; } //返回向量元素数目 public int getSize() { return n; } //判断向量是否为空 public boolean isEmpty() { return (0 == n) ? true : false; } //取秩为r的元素 public Object getAtRank(int r)//O(1) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); return A[r]; } //将秩为r的元素替换为obj public Object replaceAtRank(int r, Object obj) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); Object bak = A[r]; A[r] = obj; return bak; } //插入obj,作为秩为r的元素;返回该元素 public Object insertAtRank(int r, Object obj) throws ExceptionBoundaryViolation { if (0 > r || r > n) throw new ExceptionBoundaryViolation("意外:秩越界"); if (n >= N) throw new ExceptionBoundaryViolation("意外:数组溢出"); for (int i=n; i>r; i--) A[i] = A[i-1];//后续元素顺次后移 A[r] = obj;//插入 n++;//更新当前规模 return obj; } //删除秩为r的元素 public Object removeAtRank(int r) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); Object bak = A[r]; for (int i=r; i<n; i++) A[i] = A[i+1];//后续元素顺次前移 n--;//更新当前规模 return bak; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值