当前位置: 首页 > news >正文

Java SE - 数组

目录

  • 1.数组的创建和初始化
  • 2.数组的遍历
  • 3.数组的使用
    • 3.1 将字符串逆序
    • 3.2 二分查找
    • 3.3 冒泡排序
  • 4.数组是引用类型
  • 5.二维数组的使用

1.数组的创建和初始化

public class Main{public static void main(String[] args) {//1.数组的创建:类型 + 数组名// new是一个关键字,表示在堆区开辟一块新的空间int[] array1 = new int[2];char[] array2 = new char[6];float[]  array3 = new float[5];//2.创建的同时初始化int[] array4 = new int[10];//默认为0char[] array5 = {'a','b','c','d','e','f'};}}

2.数组的遍历

public class Main{public static void main(String[] args) {int[] arrays = new int[10];//使用for循环初始化:1 - 10for (int i = 0;i < arrays.length;i++){arrays[i] = i + 1;}//遍历数组:输出1-10for (int j = 0;j<arrays.length;j++){System.out.print(arrays[j] + " ");}System.out.println();//换行System.out.println("--------------------");//使用for-each:将arrays数组的值赋给x后输出for (int x: arrays) {System.out.print(x + " ");}}}

程序输出结果如下:

在这里插入图片描述

3.数组的使用

3.1 将字符串逆序

import java.util.Arrays;public class Main{public static void reverse(char[] chars){//通过下标的方式进行访问int left = 0;//左下标int right = chars.length - 1;//有下标while(left < right){char tem = chars[left];chars[left] = chars[right];chars[right] = tem;left++;right--;}}public static void main(String[] args) {char[] chars = {'a','b','c','d','e','f'};reverse(chars);System.out.println(Arrays.toString(chars));}
}

Arrays是一个类,其中包含多种方法,以上调用的是toString重载的方法,参数类型是char[]。

3.2 二分查找

public class Main{//二分查找public static int BinarySort(int[] arrays,int t){int left = 0;//左下标int right = arrays.length - 1;//右下标while(left < right){int mid = (left + right)/2;//中间元素下标//中间元素小于目标元素,说明查找元素在右边if(arrays[mid] < t){left = mid + 1;//查找元素在左边}else if( arrays[mid] > t){right = mid - 1;}else{return mid;//找到返回下标}}return -1;//找不到返回-1}public static void main(String[] args) {int[] arrays = {1,2,3,4,5,6,7,8,9,10};int target = 5;int r =  BinarySort(arrays,target);if(r == -1){System.out.println("找不到查找的元素....");}else{System.out.println("找到了,下标为:" + r);}}
}

在这里插入图片描述

3.3 冒泡排序

public class Main{//冒泡排序public static void BubbleSort(int[] arrays){for (int i = 0; i < arrays.length - 1; i++) {for (int j = 0; j < arrays.length -1 - i; j++) {//比较if(arrays[j] > arrays[j+1]){int tem = arrays[j];arrays[j] = arrays[j+1];arrays[j+1] = tem;}}}}public static void main(String[] args) {int[] arrays = {10,9,8,7,6,5,4,3,2,1};//使用冒泡排序改为升序BubbleSort(arrays);//排序后输出for (int x : arrays){System.out.print(x + " ");}}}   

在这里插入图片描述
以上排序可以使用Array这一个类实现快速排序

在这里插入图片描述

public class Main{public static void main(String[] args) {int[] arrays = {10,9,8,7,6,5,4,3,2,1};Arrays.sort(arrays);//调用Arrays的sort方法//排序后输出for (int x : arrays){System.out.print(x + " ");}}
}

在这里插入图片描述

Arrays这一个类的方法可以查询以下链接:Arrays中的方法

4.数组是引用类型

JVM区域的划分
在这里插入图片描述

方法区用于存放虚拟机加载的类信息,静态变量,常量等数据,方法编译后的字节码文件存储该区域
堆区用于存放new关键字创建的对象,程序运行时开始使用,程序退出时释放;
虚拟机栈用于存放方法调用时开辟的栈帧,方法调用结束栈帧销毁;
本地方法栈与虚拟机栈的功能类似,本地方法栈存放的是native修饰的方法;
程序计算器用于存放下一条指令的地址。

创建一个数组时,使用new关键字开辟的空间是在堆区上的,此时数组名相当于一个引用,存放开辟空间的地址。

public class Main{public static void main(String[] args) {//arrays是一个引用int[] arrays = new int[10];}}

在这里插入图片描述
引用的作用是通过引用可以找到引用所指向的对象,访问对象中的成员变量。

public class Main{public static void main(String[] args) {//arrays是一个引用int[] arrays = new int[10];//通过下标的方式可以找到引用指向的对象arrays[0] = 1;arrays[1] = 2;arrays[2] = 3;//输出System.out.println(arrays[0]);System.out.println(arrays[1]);System.out.println(arrays[2]);}}

在这里插入图片描述
同类型的引用可以将引用进行赋值,时引用同时指向一块空间。

public class Main{public static void main(String[] args) {//arrays是一个引用int[] array = new int[3];//通过下标的方式可以找到引用指向的对象array[0] = 6;array[1] = 6;array[2] = 6;//将array这个引用赋值给arrays这个引用int[] array1 = array;//使用arrays1访问到成员与array是一致的System.out.println(array1[0]);System.out.println(array1[1]);System.out.println(array1[2]);}}

在这里插入图片描述

5.二维数组的使用

public class Main{//二维数组的使用public static void main(String[] args) {//创建数组int[][] arrays = new int[2][3];//初始化数组for (int i = 0;i < arrays.length;i++){for (int j = 0; j < arrays[i].length; j++) {arrays[i][j] = i + j;}}//遍历数组for (int[] tem : arrays){//将arrays引用赋给rowfor (int n : tem) {//将tem指向的成员赋给nSystem.out.print(n + " ");//输出n}System.out.println();}}
}

二维数组创建时行号不可省略,列可以省略,利用此特性可以创建不规则的二维数组。

public class Main{//不规则二维数组public static void main(String[] args) {int[][] arrays = new int[2][];//行为2,列创建时可以省略arrays[0] = new int[1];//第一行有1个元素arrays[1] = new int[3];//第二行有3个元素//初始化arrays[0][0] = 1;for (int i = 1; i <= arrays[1].length; i++) {arrays[1][i-1] = i + 1;}//输出for (int[] tem : arrays){for (int n : tem){System.out.print(n + " ");}System.out.println();}}}

在这里插入图片描述
在这里插入图片描述

相关文章:

  • svg预览器
  • 嵌入式学习Day35
  • Debian系统简介
  • 今日行情明日机会——20250610
  • 【WiFi扫描相关帧】
  • WHAT - 组件库开发场景 - 完全无样式的 UI 组件库 Headless UI
  • 从0到1:HBase安装与操作指南
  • Web应用压力测试详解
  • PostgreSQL 的扩展pg_surgery
  • PostgreSQL--安装方法
  • 6.10
  • 【Dv3Admin】系统视图角色菜单API文件解析
  • JxBrowser 7.43.2 版本发布啦!
  • srs linux
  • asio之读写
  • 解决克隆Github源码库时的Permission denied 问题
  • JAVA中的多线程
  • 对DOM操作 与 jQuery的简单理解(通俗
  • 【数组和二分查找】
  • 鹰盾播放器禁止录屏操作的深度技术解析与全栈实现方案
  • 东莞电商建站/详细的营销推广方案
  • 外贸先做网站还是开公司/平台推广引流
  • 手机网站宽度自适应/营业推广促销
  • o2o网站建设渠道/南昌seo网站排名
  • 网站营销教程/页面优化算法
  • 苏州网站开发公司兴田德润在哪儿/上海十大营销策划公司