数组初始化

数组的初始化问题 数组的初始化问题 文章目录数组的初始化问题1. 结论2. 验证2.1 无括号的情况2.2 只给整型数组中部分元素赋值的情况2.3 只给字符数组中部分元素赋值的情况 1. 结论 如果有括号会编译器会对数组进行初始化,否则不会。 char a[10]; 的定义方式程序不会对数组进行初始化。 char a[10] = { }; 数组全部初始化为\0,如果是整型数组初始化为0。 char a[10]... 阅读详情

数组

数组是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。定义数组是是通过方括号 [] 来实现的,只需要在类型名后面加一个方括号即可:

int [] a;

这样就给拥有了对数组的一个引用,还没有分配任何空间,而编译器又不允许指定数组的大小,那么为了给数组分配存储空间,就需要使用初始化表达式了,这种初始化操作是由一堆花括号来实现的,如下:

public static void main(String[] args) {
    //可以通过花括号进行初始化
    int[] a = {1, 2, 3};
    //可以将一个数组的值赋给另一个数组
    int[] a1 = a;
    //数组遍历
    for (int i = 0; i < a1.length; i++) {
        System.out.println("下标为:" + i + ",数值为:" + a1[i]);
    }
}

打印结果:
下标为:0,数值为:1
下标为:1,数值为:2
下标为:2,数值为:3

Java 数组计数是从 0 个元素开始,所以能使用的最大下标数是 length - 1,一旦超过边界数,那么就会出现运行时异常。

new 关键字

如果不确定数组里面有多少个元素,那么可以直接用 new 关键字在数组里创建元素,使用 Random.nextInt() 方法随机指定大小,如下:

 public static void main(String[] args) {
      //如果是基本类型的数组
      int[] b = new int[new Random().nextInt(20)];
      //数组长度
      System.out.println("基本数组 b 的长度为:" + b.length);
      for(int i = 0; i < b.length; i++){
          System.out.println(b[i]);
      }

      //如果是对象数组
      Integer[] c = new Integer[new Random().nextInt(20)];
      //数组长度
      System.out.println("对象数组 c 的长度为:" + c.length);
      for(int i = 0; i < c.length; i++){
          System.out.println(c[i]);
      }
  }

打印结果:
基本类型数组 b 的长度为:2
0
0
对象数组 c 的长度为:3
null
null
null

可以基本类型数组的元素都会有一个基本数据类型的初始值(例如 int 类型的初始值为 0),但是非基本类型数组的元素的初始值为 null,这个时候就还需要对数组元素进行赋值操作:

for(int i = 0; i < c.length; i++){
    //对非基本类型的数组元素赋值
    c[i] = new Random().nextInt(20);
}

如果试图使用数组中的空引用,那么运行时就会产生异常。也可以通过结合花括号来初始化对象数组:

//通过花括号来初始化对象数组
Integer[] d = new Integer[]{1, 2, 3};

可变参数列表

我们调用有参方法的时候,通常每个参数只有一个,但是也可以是多个,这种情况有两种写法,如下:

public static void main(String[] args) {
   test(new String[]{"1","2"});
   test2("1", "2");
   test2(new String[]{"1","2"});
}

/**
 * 写法一,需要传入数组
 * @param str
 */
public static void test(String[] str) {
    for (String s : str) {
        System.out.println(s);
    }
}

/**
 * 写法二,可变参数列表,不用编写数组语法
 * @param str
 */
public static void test2(String... str) {
    for (String s : str) {
        System.out.println(s);
    }
}

第一种写法必须要传入数组作为参数,但是第二种写法,既可以传入数组也可以直接输入一组参数,再也不用显式地去编写数组了。

同时,可变参数列表还兼容了自动包装机制:

public static void main(String[] args) {
    test3(1, 2, 3);
}
 /**
 * 可变参数列表,类型为 Integer
 * @param nums
 */
public static void test3(Integer... nums) {
    for (Integer i : nums) {
        System.out.println(i);
    }
}

可以看到调用的时候,传入的是基本类型,但是编译器将其自动装箱。

欢迎关注公众号 一盐难进:

在这里插入图片描述

C++(11):花括号列表初始化 d2,虽然我们定义了Data(int oa, bool ob),这个构造函数其实参数更匹配,但是还是调用了initializer_list构造。也就是使用花括号构造时,initializer_list构造有绝对的优先权,编译器会想尽办法使用initializer_list构造。编译器还会优先使用initializer_list构造,然后在int -> bool时,由于类型收窄,所以给了编译错误。d6,同d4,还是调用了initializer_list构造、d3,正常的调用了拷贝构造。 阅读详情

相关推荐

河道水位标尺识别预警 yolov7

河道水位标尺识别预警系统通过python+yolov7网络模型技术,河道水位标尺识别预警算法对河道水位标尺进行实时监测,当河道水位出现异常情况时,河道水位标尺识别预警算法将自动发出警报提示后台管理人员及时采取措施。YOLO系列算法是一类典型的one-stage目标检测算法,其利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好,所以在工业界也十分受欢迎。Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分为 7x7=49 个网格(grid),每

燧机科技的博客 2303

c++初始化列表

初始化列表 类的成员变量有两种初始化方式: 1.构造函数体内 赋值; 2.初始化列表—&amp;amp;gt;定义阶段,因为private里是变量的声明。 初始化列表以一个冒号开始,接着一个逗号分割数据列表,每个数据成员都放在一个括号中进行初始化。 #include&amp;amp;lt;iostream&amp;amp;gt; using namespace std; class Time//时间类 { public: T...

sophia__yu的博客 1302

从量子兔AlphaPi硬件拆解到ESP32-C3库开发实战

本文详细拆解了量子兔AlphaPi开发板的硬件构成,重点分析了其核心ESP32-C3芯片及外围传感器。通过逆向工程揭示了GPIO引脚定义与通信协议,并实战演示了如何从零开发MicroPython库,驱动按键、加速度计及LED点阵,最终整合成一个互动平衡球游戏项目,展现了开源硬件在教育与二次开发中的潜力。

weixin_29164497的博客 460

数组初始化:指定初始化项目

翻阅笔记系列 看以前的笔记,感觉就是 我以前还了解过这个。。。//1.指定初始化项目(C99) int arr[6] = {0,0,0,0,0,266}; //传统语法 int arr[6] = { [5] = 266 }; //C99规定,初始化列表中使用带有方括号的元素下标可以指定某个特定元素。指定部分为0.//如果多次对一个元素进行初始化,则最后一次有效。如: int arr[6] =

tianjing0805的博客 2782

医学图像中的小目标病灶检测难题:我的硕士研究总结与思考

医学图像中的小目标检测和分割,主要指在CT、MRI、超声等医学影像中识别和分割微小病灶或细小结构。这些小目标通常体积小、边界模糊、特征不明显,却往往是关键病灶,例如肺部小结节、脑微出血、乳腺微钙化等。

weixin_45638136的博客 2370

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

构造函数中的初始化列表

对于日期类,我们可以使用如下构造函数 Date(int year = 1900, int month = 1, int day = 1) {//这里的构造函数没有判断日期合法性,仅用来举例 _year = year; _month = month; _day = day; } 显然这是没有问题的。但我们要知道,在构造函数的函数体内进行的是成员变量的赋值,而成员变量的初始化则是在初始化列表中进行的。 初始化的格式:以 冒号开始,每一行是一个成员变量,后面跟着括号,括号里面放初始值,每

LiangXiay的博客 754

差分放大电路的计算

反馈,对于运算放大电路来说,运放工作在线性区,所以这里一定是负反馈,没有反馈(开环)或者是正反馈,那是比较器电路而不是放大电路,这时候运放工作在饱和区或称为非线性工作区,正因为饱和,输出才是电源电压的幅值。图2是一种带正反馈的运放电路,这里就不能叫运算放大电路了,因为运放的开环放大倍数理想是无限大,当然实际中不可能无限大,所以如下结构是迟滞电压比较器,运放工作在非线性区或饱和区。实际应用电路中,我们为了简化计算,也是用最简方法计算,经常使用的电路也是上述电路,令电阻相等关系,简化计算。

qq_40170041的博客 354

C++ 新特性 | C++ 11 | 列表初始化

int _y;return 0;

个人技术博客 659

如何在多 GPU 配置上运行 Unsloth:数据并行或模型并行

当工作负载受限于内存(模型或批次无法放入单张显卡)、或受限于计算且计算与通信比率较高时(即每块 GPU 的额外计算量超过同步参数的开销,如在 DDP 中,或超过传递激活值的开销,如在模型并行中),多 GPU 配置才开始显现优势。在松散连接的显卡上(尤其是 PCIe 版本的 H100 或 A100),额外的设备间数据传输会导致性能显著低于单 GPU 运行。让我们厘清概念,明确说明如何通过模型并行(将模型拆分到多个 GPU)或数据并行(在每个 GPU 上复制模型)来跨多 GPU 运行 Unsloth。

人工智能领域专家 647

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1085

JAVA中数组的初始化

数组的初始化常见的两种方法 1.静态初始化 2.动态初始化 格式: 1.动态初始化格式: 数据类型 [ ] 数组名称 = new 数据类型[数组长度] 2.静态初始化格式: 数据类型 [ ] 数组名称 = new 数据类型[ ]{元素1,元素2,元素3…} 3.静态初始化省略格式: 数据类型 [ ] 数组名称 = {元素1,元素2,元素3…} 动态初始化: public class Dynamic...

chen404897439的博客 12万+

Prometheus+Grafana+alertmanager+PrometheusAlert监控告警 实现飞书告警

以上 是以grafana做的邮件告警,但是感觉邮件很少人看。下面是以webhook 可以接入。启动alertmanager (设置 开机在启动)下载prometheusalter 配置文件。这里的告警是基于grafana上搭建的。我们启动PrometheusAlert。写完之后进行重启Prometheus。prometheus 的告警规则。测试 基于我们生产环境做的文档。然后在grafana上导模板。上导入模板就可以 直接引用。访问 grafana页面。重启一下grafana。

墨痕诉清风的博客 859

Java基础之数组的初始化

Java基础总结 一、数组初始化 1、数组初始化概念 ​ Java是静态语言,因此Java的数组也是静态的。就是说数组在被初始化后数组的长度是不可改变的。而Java的数组初始化就是给数组对象分配内存空间并且给每个数组元素给予初始值。 ​ 数组的几种初始化方式: ​ 静态初始化:程序员决定数组元素的初始值,系统决定长度。 String[] names = new String[]{"张三","李四"...

OneForAll 5万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C语言 数组的初始化 数组不初始化会怎样 数组的默认初始值

数组初始化

zhongxuewei的博客 6155

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java中数组的初始化

一、什么是初始化 在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量来访问数组元素。所谓数组初始化就是让数组名指向数组对象的过程,该过程主要分为两个步骤,一是对数组对象进行初始化,即为数组中的元素分配内存空间和赋值,二是对数组名进行初始化,即为数组名赋值为...

qq_36243386的博客 1670

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

初始化 数组 java_如何用Java初始化数组

初始化 数组 javaToday we will learn how to initialize an array in java. An array in java is a container that can hold a fixed number of values of the same type. The values can be of the primitive type like...

从零开始的教程世界 3859

java数组 初始化_用Java初始化数组

java数组 初始化 具有使用C或FORTRAN等语言进行编程的经验的人熟悉数组的概念。 它们基本上是一个连续的内存块,每个位置都是某种类型:整数,浮点数或您所拥有的。 Java中的情况与此类似,但有一些额外的折痕。 一个例子数组 让我们用Java制作一个由10个整数组成的数组: int [ ] ia = new int [ 10 ] ; 上面的代码是怎么回事? 从左到右: ...

cumj63710的博客 4411

C++ 数组的初始化

在 C++ 中,数组的初始化方式会根据数组维度(一维或多维)有所不同。

2301_82286809的博客 2273

Java数组初始化

1.Java 数组初始化的两种方法:         静态初始化: 程序员在初始化数组时为数组每个元素赋值;     动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。 public class ArrayInit { public static void main(String[] args) { //静态初始化数组:方法一 String

wawlian说 5万+

c语言将数组初始化为1_C语言数组如何初始化

1.一维数组的初始化1.1 未初始化的一维数组一维数组的成员在没有初始化时,数组成员的值都是未知的,一旦访问到未知的值,可能导致不可预料的情况,严重时可以导致软件运行异常。下面,将没有初始化的数组对应的值打印1. #include 2.3. int main(int argc,char *argv[])4. {5. int numbers[5];6.7. int i = 0;8. for(i = ...

weixin_42468240的博客 6181

java数组初始化 new_java 数组初始化

一维数组1) int[] a; //声明,没有初始化2) int[] a=new int[5]; //初始化为默认值,int型为03) int[] a={1,2,3,4,5}; //初始化为给定值4) int[]a=new int[]{1,2,3,4,5}; //同(3)int[] a=new int[5]{1,2,3,4,5}; //错误,如果提供了数组初始化...

weixin_39531374的博客 3027

指针数组的初始化

http://see.xidian.edu.cn/cpp/biancheng/view/152.html  二维数组 http://blog.youkuaiyun.com/chenshijun0101/article/details/6640377  二维数组的初始化 http://zhidao.baidu.com/link?url=vyfuS7PW30wuN4dVrZl8eMWF4KSpGUhrb2

芒果布丁00的博客 1万+

对象数组的初始化

对象数组:数组中每个元素为一个对象。在建立数组时,可以在定义数组时提供实参以实现初始化。1、如果构造函数只有一个参数,可以直接在等号后面的花括号内提供实参,如:          Student stu【3】={10,20,30};2、如果构造函数有多个参数,在定义时在花括号中分别写出构造函数名并在括号内指定实参。如下:构造函数有3个参数,分别代表学号,年龄,成绩,在定义时可以:         ...

ukston_C的博客 2万+

java 初始化数组_java如何实现数组初始化

java实现数组初始化的方法:1、动态初始化,格式【数据类型 [ ] 数组名称 = new 数据类型[数组长度]】;2、静态初始化,格式【数据类型 [ ] 数组名称 = new 数据类型[ ]{元素1,元素2,元素3…}】。java实现数组初始化的方法:1、静态初始化2、动态初始化格式:1、动态初始化格式:数据类型 [ ] 数组名称 = new 数据类型[数组长度]2、静态初始化格式:数据类型 [...

weixin_35660371的博客 2913
上一篇: 构造器初始化
下一篇: Java类库:包
一盐难进
博客等级 码龄9年 2粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值