数组 泛型

数组的属性

1.长度length,

2.下标index,

3.元素个数size,

4.存储

数组的定义

一维数组:

数据类型[ ]   变量名=new 数据类型[length]      如  int[ ]  arr=new int[10]

数据类型[ ]   变量名={元素1,元素2,……}     如  int[ ]   array={a,1,12,ab,……}

二维数组:

数据类型[ ][ ]   变量名=new int[length1][length2]

如int[ ][ ] arr=new int[10][18]     10代表有10个一维数组  18代表每个一维数组里有18个元素

如int[ ][ ] arr={{一维数组1},{一维数组2},{一维数组3},……}

(一)静态数组的使用

1.下标的使用

arr[8]表示在一维数组中下标为8的数,即第9个数

arr[8][6]表示在二维数组中第9个一维数组中的第7个数

2.遍历

一维数组的遍历

for(int i=0;i<arr.length;i++){
int a=arr[i];
System.out.println(a);
}

二维数组的遍历

for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[0].length,j++)
int b=arr[i][j];
System.out.println(b);
}
//arr.length表示二维数组中一维数组的个数
//arr[0].length表示二维数组中每个一维数组的元素个数
//二维数组中每个一维数组的元素个数相等

3.存取

存:变量名[下标]=元素  如:arr[8]=99

取:数据类型  变量名=数组名[下标]

注意存取的过程中,下标的使用不要超过数组的长度,防止越界。

(二)动态数组arraylist的使用

构造方法:增加、获取、移除
根据使用者传入的长度(initialcapacity)进行初始化

1.首先需要创建一个MyArray类

public class MyArray(){
int length;
int index;
int size;
Object[] valueArray={ };

//构造方法
public MyArray(int initialCapacity){
if(inttialCapacity<=0){
 throw new IllegalArgumentException("参数非法   initialCapacity="+initialCapacity+"<=0");
}

length=inttialCapacity;
index=0;
size=0;
valueArray[]=new Object[length];
 //initialCapacity初始化长度

}

}

2.扩容方法

//初始化长度20,20扩容到30
public void add(Object e){
//初始下标为0,长度为20
//初始下标小于长度
//扩容前执行后三行代码
//index++直到下标大于初始长度时,调用if内代码
if(index>length){
int oldlength=length;//创建一个旧长度,将长度赋值给旧长度
int newlength=oldlength+(oldlength>>1);//创建一个新长度,旧长度的1.5倍为新长度
Object[] newArray=new Object[newlength];//创建一个新的数组对象

for(int i=0,i<oldlength,i++){
newArray[i]=valueArray[i];//将旧数组的元素依次存入新数组
}

valueArray=newArray;//新数组赋给旧数组
length=newlength;//新长度赋给旧长度
}
//旧数组的长度成功从20扩容到30
valueArray[index]=e;//继续存储,此时旧数组长度为30,index不会越界
index++;
size++;
}
public static void main(String[] args){
MyArray myarray=new MyArray(20);//初始化长度20
for(int i=0;i<30,i++){//存储30个元素,需要扩容
myarray.add("qwb");//调用add方法,括号内写参数,即元素为"qwb"
}
}

3.获取方法

public Object get(int index){

if(index<size){//判断下标是否在数组内
return valueArray[index];//返回所需获取的数组值
}
return null;//越界则输出一个空值
}
public static void main(String[] args) {
       //调用方法
        MyArray myarray=new MyArray(20);
        myarray.get(15);
        System.out.println(myarray.get(15));
       
    }

4.移除方法

public Object remove(int index){
if(index<size){
valueArray[index]=null;
}
return null;
}
public static void main(String[] args) {
       //调用方法
        MyArray myarray=new MyArray(20);
     
        myarray.remove(20);
        System.out.println( myarray.remove(20));
    }

(三)泛型的使用

(1)泛型:

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

(2)语法:

格式:类名 <通配符>

通配符任何单词字母都可以,通常用E,表示元素。

通配符可以声明参数类型以及返回值类型

基本数据类型封装类型(引用类型)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter/String
booleanBoolean

(3)举例:

ArrayList<Integar> list=new arraylist();
list.add(10);
//list.add("qwb");

当在<>内定义了数据类型int类后,之后的参数则必须是int类,不可以使字符类或者别的类型。

同理,也可以在<>内设置不同的封装类型,来对代码行为进行限制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值