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

Javase学习文档------数组

Java 数组是 Java 编程中非常基础和重要的一个知识点。

以下是 Java 数组的主要学习内容:

数组的几个特点
数组在声明时必须指定长度,且长度不可变:数组的长度在声明时就需要确定,一旦确定就不能修改。因此,在使用数组时需要仔细考虑数组大小,以免出现数组越界等问题。
数组可以包含任意类型的数据:Java 数组可以包含任意类型的数据,包括基本数据类型(如 int、double 等)和引用类型(如 String、Object 等)。
数组元素按照顺序存储:数组中的所有元素按照声明时的顺序依次存储,可以通过下标来访问和修改数组元素。
数组是一种对象类型:在 Java 中,数组也是一种对象类型,也就是说数组变量存储的是一个对象的引用。
数组长度可以通过 length 属性获取:数组具有一个 length 属性,可以用于获取数组的长度,例如:int[] nums = {1, 2, 3}; System.out.println(nums.length); // 输出 3

需要注意的是,数组是一种静态数据结构,其大小在声明时就已经确定,因此无法动态地添加或删除元素。同时,数组也存在许多操作上的限制,如无法直接进行插入或删除操作,而只能通过复制元素的方式实现。因此,在设计数据结构时需要根据实际需求选择合适的数据结构。

定义数组:声明数组时需要指定数组长度和元素类型,可以使用数组初始化器或者循环对数组进行初始化。

int[] num1 = new int[length];
int[] num2 = new int[]{123};
String[] names = {"Alice", "Bob", "Charlie"};

访问数组元素:通过下标访问数组元素,下标从0开始计数。例如:a[0] 表示数组 a 的第一个元素。

   String[] names = {"Alice", "Bob", "Charlie"};
        System.out.println(names[0]);
        System.out.println(names[1]);
        System.out.println(names[2]);
    }

数组遍历:循环结构(如:for、while)或 foreach 循环来遍历数组中的所有元素。

//for循环
String[] names = {"Alice", "Bob", "Charlie"};
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
//增强for循环 foreach
 String[] names = {"Alice", "Bob", "Charlie"};
        for (String name : names) {
            System.out.println(name);
        }

数组的排序:Java 提供了 Arrays.sort() 方法,可以对数组进行排序操作。

 int[] nums = new int[]{3,2,1};
        Arrays.sort(nums);
        for (int i : nums) {
            System.out.println(i);
        }
    }

数组的查找:可以使用循环遍历或二分查找等算法实现。

 public static int search(int[] nums, int target) {
        // 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算
        if (target < nums[0] || target > nums[nums.length - 1]) {
            return -1;
        }
        int leftNode = 0;//左边下标
        int rightNode = nums.length - 1;//右边下标
        while (leftNode <= rightNode) {  //或者用 while(leftNode < rightNode)因为left == right的时候,在[leftNode, rightNode)是无效的空间,所以使用 <
            int midNdoe = ((rightNode - leftNode) >> 1) + leftNode;// 等同于(left + right)/2   -->防止溢出
            if (target == nums[midNdoe]) {
                return midNdoe;
            } else if (target > nums[midNdoe]) {
                leftNode = midNdoe + 1;//把左边下标移动 缩小空间
            } else {
                rightNode = midNdoe - 1; //把左边下标移动 缩小空间  若用另一种方法则 rightNode = midNode [target 在左区间,在[left, middle)中]
            }
        }
        return -1;
    }

http://www.kler.cn/a/8185.html

相关文章:

  • 计算机毕业设计PyFlink+Hadoop广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 Spark Hive 深度学习 机器学
  • java后端传时间戳给前端的三种方式
  • Unity中有什么情况下是需要用UniTask替代其他异步方式的吗?
  • 三元和二元序列出现的频率降序病可视化条形图——统计excel某个分组列
  • 【读书笔记】《论语别裁》寂寞的享受
  • 靜態IP與DHCP的區別和用法
  • 使用spring boot拦截器实现青少年模式
  • Nuxt项目动态路由带参接参
  • 【从零开始学习 UVM】12.3、UVM RAL(续更) —— RAL Classes Methods
  • java微服务商城高并发秒杀项目--008.订单服务继承Sentinel以及sentinel安装dashboard
  • SMPL Model转换为bvh格式 (SMPL to BVH ) Python
  • 说说如何借助webpack来优化前端性能?
  • 2023年第十四届蓝桥杯将至,来看看第十三届蓝桥杯javaB组题目如何
  • leetcode459. 重复的子字符串
  • 【学习笔记】启示录 - 打造用户喜爱的产品(阅读摘录)
  • C++ 98/03 应该学习哪些知识19
  • python 实现二叉搜索树的方法有哪些?
  • Unity中将项目通用的公共模块封装成类库dll
  • 如何让chatGPT变成中文-ChatGPT怎么完整输出
  • Spark 之 解析json的复杂和嵌套数据结构
  • 身临其境数字世界:探索VR全景元宇宙展厅
  • 前端学习:HTML链接
  • Linux小黑板(14):基于环形队列的生成消费者模型
  • 4款【新概念APP】对比+免费下载
  • 【开发工程师的运维小知识】docker安装gitlab
  • 【SQL Server】数据库开发指南(一)数据库设计