javaSE--五、数组

1、为什么需要数组

  • 变量的概念  在内存中开辟的用于存储某一固定数据类型数据的空间
  • 数组  在内存开辟的一连串的用于存储同一数据类型数据的空间

2、数组的基本使用语法

声明    类型[] 数组名;

分配空间   数组名=new 类型[长度];

赋值     数组名[下标]=数据值;   下标从0开始  用于比数组的元素个数少1

使用   数组名[下标];

3、数组的其他使用语法

 类型[]  数组名={数值列表};  声明  分配空间  赋初值

类型[] 数组名=new 类型[]{数值列表};

  • 类型[] 数组名;
  • 数组名=new 类型[]{数值列表};

4、数组的十大操作

  • 新增

单个元素的赋值    数组名[下标]=值;

数组所有元素的赋值

int[] nums=new int[5];

for(int i=0;i<nums.length;i++){

nums[i]=??;

}

 

  • 追加式的新增

//创建一个原数组

int[] nums={1,2,3,4};

//向 原数组中新增一个10

//扩容操作

//备份原数组

int[] tNums=nums;

//强制开辟空间的方式 进行原数组的扩容操作

nums=new int[nums.length+1];

//还原数据  将备份数组中的数据 存回到 扩容之后的原数组中

for (int i = 0; i < tNums.length; i++) {

nums[i]=tNums[i]; //将备份数组i下标的元素值 存放到 对应的扩容数组 对应下标位置

}

//新增数据

    nums[nums.length-1]=10;

  • 修改

先找出下标位置,再进行替换操作

  • 删除

先找出下标位置,备份,重置原数组

  • 单查  打标记

int flag=-1; //没找到    是否找到元素的标志  如果找到了用于保存找到元素所在的下标位置

for(int i=0;i<nums.length;i++){

    if(nums[i]==num){

        flag=i;

        break;

    }

}

if(flag==-1){

     //没找到

}else{

     //找到了 在  flag 下标位置

}

  • 全查

int[] nums={1,2,3,4,5};

for(int i=0;i<nums.length;i++){

System.out.println(nums[i]);

}

  • 求最大

先设一个存放最大值的变量(数组下标0),再循环

  • 求最小
  • 求平均
  • 求总和
  • 排序

5、值类型和引用类型

1)值类型 变量空间中存值  引用类型 变量空间中存地址

2)值类型包含

整形   byte  short  int  long

浮点数   float   double

字符   char

布尔   boolean

枚举  enum

3)除9大值类型外所有的类型均为引用类型

字符串  String

数组   任意类型的数组

系统定义的类   Scanner  Arrays  Random 等等

自定义的类   Test1   Test2  Test3..

注:null是引用类型特有的缺省值

4)当 值类型  引用类型 和  字符串 进行赋值改值操作时的差异性

  • 值类型数据操作 赋值完成后 两个变量再无关系 任意变量的值发生改变 都不影响另一个变量

int num=10;

int num1=num;

num=20;

System.out.println(num1);// 20

  •   引用类型数据 操作 赋值复制的是地址  两个变量拥有同样的地址 指向同一个存值空间  任意一方对数据进行更改 另一方都会同时受影响

int[] nums={10};

int[] nums1=nums;

nums[0]=20;

System.out.println(nums1[0]);

  • 字符串属于引用类型 但字符串池具有不可更改性 所以 当字符串变量重新赋值时 并非改变存值空间的数据  而是改变变量本身存储的地址 表现出类似于值类型的效果

String str1="abc";

String str2=str1;

str1="def";

System.out.println(str2);

  • 值类型数据作为参数传递时,传递的是值,在方法内所做的所有修改不影响原变量值。
  • 引用类型数据作为参数传递时,传递的是地址,所以在方法中进行的任意修改都会影响原数据。
  • 字符串虽然是引用类型,但具有不可更改性。

 

猜你喜欢

转载自blog.csdn.net/weixin_43619912/article/details/94725079