我在VScode学Java(Java一维数组)

news2024/11/24 22:37:16

我的个人博客主页:如果'\'真能转义1️⃣说1️⃣的博客主页
关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java)


我在VScode学Java(Java一维数组)

Java 一维数组

声明数组:先声明,后使用

动态分配内存

创建数组:分配数据存储的物理空间是在堆上

处理数组内容

For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

越界访问数组 --->警告

二分查找:

左闭右闭区间的:

左闭右开区间的:

排序:

询问cursor

自带方法:

一些术语:

根据学习和书籍上的内容总结一下:


Java 一维数组

Java数组下标是从零开始的,Java数组下标访问运算符[ ].
Java数组是引用数据类型,长度属性为 length。
(1)Java和其他高级语言都提供了一种使用一个统一的数组名和不同的下标来唯一确定数组 (array)中的元素的数据结构。
(2)可以用一个标识符封装存储一个元素个数固定且元素类型相同的基本类型数据序列或者对象序列。(是一个简单的线性序列,因此访问速度很快。)

   
    根据数组的维度,可以分为一维数组、二维数组、多维数组等。
    数组元素的默认值:

  1.         对于基本数据类型 0,0.0,‘\u000’
  2.         对于引用元素数据类型string,object等为 null。
  3.         对于Boolean类型,为false

    数组的长度:数组名.length。

    数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 array.length-1。

int[] intArray = new int[5];
System.out.println(intArray[0]); // 输出0
double[] doubleArray = new double[5];
System.out.println(doubleArray[0]); // 输出0.0
char[] charArray = new char[5];
System.out.println(charArray[0]); // 输出空字符
boolean[] boolArray = new boolean[5];
System.out.println(boolArray[0]); // 输出false
String[] strArray = new String[5];
System.out.println(strArray[0]); // 输出null


声明数组:先声明,后使用

在Java语言中,采用 ( 数据类型  [ ] 数组名 ) 的形式,而( 数据类型  数组名 [ ] )是保留了C/C++的形式。如今越来越多的语言的风格都采用了第一种的形式了。

//elementType[ ] arrayRefVar;(元素类型[ ] 数组引用变量;)
double [] douarray;
int inarr[];

动态分配内存

Java还提供了其他的方法,例如ArrayListLinkedList。这些类允许您在运行时添加和删除元素,而无需手动管理内存分配。

//java.util.Scanner类从用户读取输入。Scanner类允许您从标准输入读取用户输入。
import java.util.ArrayList;

public class MyClass {
    public static void main(String[] args) {
        ArrayList<Integer> intList = new ArrayList<Integer>();
        intList.add(1);
        intList.add(2);
        intList.add(3);
        System.out.println(intList); // 输出 [1, 2, 3]
    }
}

创建数组:分配数据存储的物理空间是在堆上

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 ~ array.length-1。

 Java语言是通过使用new操作符来创建数组

arrayRefVar = new dataType[arraySize];
 // 定义数组
   double[] myList = new double[10];  //size=10   

//或者不直接给定
   int n = sc.nextInt();
   int[] intArray = new int[n];

处理数组内容

一般使用基本的三大循环或者 For-Each 循环。

For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

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

// 使用for-each循环输出数组元素
for (int i : intArray) {
    System.out.println(i);
}

不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。

越界访问数组 --->警告

警告 越界访问数组是经常会出现的程序设计错误,它会抛出一个运行错误ArrayIndexOut0fBoundsException。为了避免错误的发生,在使用时应确保所使用的下标不超过arrayRefVar.length-1。

主要原因:是在循环中该使用<的地方误用<=时会犯的错误。

二分查找:

左闭右闭区间的:

public class BinarySearch {
    public static int binarySearch(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        return -1;
    }

左闭右开区间的:

public class BinarySearch {
    public static int binarySearch(int[] arr, int target) {
        int left = 0;
        int right = arr.length;

        while (left < right) {
            int mid = left + (right - left) / 2;

            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }

        return -1;
    }

排序:

询问cursor

自带方法:

(1)Arrays.sort():该方法使用快速排序算法对数组进行排序。时间复杂度为O(nlogn)。

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

(2)Collections.sort():该方法使用归并排序算法对列表进行排序。时间复杂度为O(nlogn)

List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5));
Collections.sort(list);
System.out.println(list);

一些术语:

anonymous array (匿名数组)

array initializer(数组初始化语法)

binary search (二分查找)

index (下标)

indexed variable(下标变量)

insertion sort (插入排序)

linear search(线性查找)

selection sort (选择排序)

根据学习和书籍上的内容总结一下:

  • 声明数组变量并不会给数组分配任何空间。数组变量不是基本数据类型变量。数组变量包含的是对数组的引用。当创建一个数组时,若它的元素是基本数据类型的数值,那么该数组的初始值的默认值和改数据类型是一致的。
  • 只有创建数组后才能给数组元素赋值。可以使用new操作符创建数组,语法如下:newelementType[array.Size] (数据类型[数组大小])。
  • 数组中的每个元素都是使用语法arravRefVarlindex1 (数组引用变量[下标])表示的。下标必须是一个整数或一个整数表达式。
  • 创建数组之后,它的大小就不能改变,使用array.length就可以得到数组的大小。由于数组的下标总是从0开始,所以,最后一个下标总是array.length-1。如果试图引用数组界外的元素,就会发生越界错误。千万不要用下标1访问数组的第一个元素,其实际上对于该元素的下标应该是0。这个错误称为下标过1错误(index off-by-one error)。
  • Java有一个称为数组初始化语法 (array initializer)的表达式,它将数组的声明、创建和初始化合并为一条语句,其语法为:
    元素类型[] 数组引用变量={value0,value1,.·,valuek}
  • 将数组参数传递给方法时,实际上传递的是数组的引用,更准确地说,被调用的方法可以修改调用者的原始数组的元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/476936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最长连续子序列---双指针

一、最长连续不重复子序列 核心思路&#xff1a; 遍历数组a中的每一个元素a[i], 对于每一个i&#xff0c;找到j使得双指针[j, i]维护的是以a[i]结尾的最长连续不重复子序列&#xff0c;长度为i - j 1, 将这一长度与r的较大者更新给r。 对于每一个i&#xff0c;如何确定…

XR技术在手术中的应用调研

虚拟现实、增强现实、混合现实等概念和技术是最近几年发展起来的&#xff0c;相信你对去年大火的元宇宙深有感触&#xff0c;元宇宙属于虚拟现实的技术范畴&#xff0c;头号玩家电影也让虚拟现实走进大众的视野中。早在2015年&#xff0c;笔者参加一次展会时就有接触&#xff0…

【数据库复习】第四章数据库恢复技术

一、事务 定义 一个数据库操作序列 一个不可分割的工作单位&#xff08;要么全做&#xff0c;要么不做&#xff09; 恢复和并发控制的基本单位 事务和程序比较 在关系数据库中&#xff0c;一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。 一个程序通常包含…

java倒序输出数字的方法

1.在输入框中输入一个整数&#xff0c;比如要输入“5”&#xff0c;需要输出倒序&#xff0c;可以使用数字键盘进行输入&#xff0c;也可以使用文本编辑器进行输入。 2.在命令行中输入“6”&#xff0c;如图所示。 3.选择一个字符串作为例子。使用字符串编辑器中的 reverse命令…

这个 Chrome 插件,让你的 ChatGPT 不再报错

ChatGPT的官网最近几天报错越来越频繁了&#xff0c;相信大家都发现了。 一旦你离开页面时间比较久&#xff0c;再度返回跟它进行对话&#xff0c;就会出现如下报错&#xff1a; 虽然这个报错信息以前也出现过&#xff0c;但现在的频率确实过高&#xff0c;对于每天需要使用 C…

“火灾不分昼夜,安全在我心中”——五一前厂房消防检查纪实

检查人员: Scott, Jason, Willson, Hanson 检查时间: 2023年4月28日 检查地点: 1厂房、2厂房室内外 检查内容: 一、室内外消火栓: 室内栓外观正常&#xff1b; 室外栓: 栓体防冻防尘套破损、遗失&#xff0c;消防栓缺少防撞保护&#xff1b; 按规定距离厂房外墙不宜小于5…

gitlab部署及整合Jenkins持续构建(四)sonarqube9.9安装和使用(一步一坑)

文章目录 postgresql13.0安装1、配置postgresql数据库2、进入postgresql创建数据库 代码质量管理平台--sonarqube安装1、前置依赖下载2、安装unzip并解压sonarqube并移动到/usr/local&#xff1a;3、修改sonarqube相应的配置4、新增用户&#xff0c;并将目录所属权赋予该用户&a…

回村准备结婚了~

小伙伴们大家好&#xff0c;我是阿秀。 这几天是一年一度的五一假期&#xff0c;前几年因为疫情的存在&#xff0c;很多人的五一假期都只能憋在家里&#xff0c;不知道今年各位有没有出去游玩的计划和打算&#xff1f; 昨晚刷朋友圈看到很多人都在晒行程的&#xff0c;有打算去…

【MATLAB数据处理实用案例详解(19)】——利用神经模糊控制实现对洗衣机的控制

目录 一、问题描述二、洗衣机模糊控制三、运行结果四、完整代码 一、问题描述 20世纪90年代初期&#xff0c;日本松下公司推出了神经模糊控制全自动洗衣机这种洗衣机能够自动判断衣物质地的软硬程度、衣量多少、脏污程度和性质等&#xff0c;应用神经模糊控制技术&#xff0c;…

JavaScript实现输入成绩,输出成绩等级的代码

以下为实现输入成绩&#xff0c;输出成绩等级&#xff08;switch语句&#xff09;的代码和运行截图 目录 前言 一、实现输入成绩&#xff0c;输出成绩等级 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录…

C#底层库--自定义进制转换器(可去除特殊字符,非Convert.ToString方式)

系列文章 C#底层库–程序日志记录类 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csd…

从南极到你家,易开得,一支“中国芯”的奇幻漂流

2023年的AWE&#xff0c;精彩程度比我想象中还要夸张&#xff01; 一方面是热度空前&#xff0c;现场人头攒动&#xff0c;有一家老中幼三代一起来观展的&#xff0c;有经销商、客户来问价采购的&#xff0c;还有行业媒体举着单反、手机、摄像机激情拍照的&#xff0c;让我们正…

4月30日第壹简报,星期日,农历三月十一

4月30日第壹简报&#xff0c;星期日&#xff0c;农历三月十一坚持阅读&#xff0c;静待花开1. 五一小长假首日全国铁路迎客流高峰&#xff0c;创铁路单日客流历史新高&#xff0c;旅游订单量较春节假期首日增长668%。2. 六大国有银行一季报业绩披露&#xff1a;共赚近3600亿元&…

chatgpt 数据相关应用论文策略简介

hatGPT等预训练大模型&#xff0c;一个核心能力就是经过海量语料的训练加上强化学习的引导&#xff0c;其具有强大的接近人类的文本生成能力。这个能力的一大用途&#xff0c;就是可以为我们生产数据或者标注数据&#xff0c;再基于这些数据训练我们自己的模型。 On the Feasi…

B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能

B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能 文章目录 B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能每博一文案1. Cookie 的概述2. session 与 Cookie 之间的联系&#xff1a;3. Cookie 的作用&#xff…

Android 9.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(一)

1.前言 在9.0的系统rom产品定制化开发中,在原生系统SystemUI下拉状态栏的通知栏的通知背景默认是白色四角的背景, 由于在产品设计中,需要把四角背景默认改成圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景, 然后通知显示流程,设置默认下拉状态栏UI中的…

LaTeX基础文本排版命令

LaTeX基础文本排版命令 1. 字体大小2. 字体的粗体与斜体2.1. 粗体2.2 斜体2.3 同时启用粗体和斜体 3. 空格长度4. 高度与宽度尺寸 在LaTeX中&#xff0c;文本排版可以通过简单的命令实现&#xff0c;这些命令可以控制字体大小、粗体与斜体、空格、行高和宽度等方面&#xff0c;…

【C++】模板进阶:非类型模板参数模板的特化模板分离编译

文章目录 1. 非类型模板参数2. 模板的特化1. 概念2. 函数模板特化3.类模板特化 3. 模板分离编译4. 模板总结 在之前的博客中我们初次接触到了泛型编程和模板的概念 【C】模板初阶&#xff0c;当时只讲了一些基本的用法&#xff0c;现在做一些补充 1. 非类型模板参数 模板参数…

js判断是否为null,undefined,NaN,空串或者空对象

js判断是否为null&#xff0c;undefined&#xff0c;NaN&#xff0c;空串或者空对象 这里写目录标题 js判断是否为null&#xff0c;undefined&#xff0c;NaN&#xff0c;空串或者空对象特殊值nullundefinedNaN空字符串&#xff08;""&#xff09;空对象&#xff08;…

【Linux】4. 开发工具的使用(yum/vim)

前言 工具的本质就是指令 在介绍工具之前先介绍一下互联网生态 Linux 软件包管理器 yum 1. 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以…