Java基础-数组,集合创建方式

Java 中 new 关键字的作用

在 Java 中,new 关键字用于 在堆内存中分配空间 并创建对象。

  • 数组集合 在 Java 中都是对象,因此必须使用 new 来创建实例。
  • Java 和 C 之间的主要区别在于 内存管理对象的创建方式

Java 与 C 中数组 & 集合的创建方式对比

语言数组创建方式集合创建方式是否使用 new
Javaint[] arr = new int[5];List<Integer> list = new ArrayList<>();✅ 必须使用 new
Cint arr[5];int* ptr = (int*)malloc(sizeof(int) * 5);(使用动态分配)数组不需要 new,但动态分配需要 malloc

1. Java 中 new 的必要性

在 Java 中:

  • 数组集合 都是对象,因此必须用 new 来初始化。
  • Java 不会 自动分配数组空间(不像 C 允许 int arr[5];)。
  • new 负责在堆上分配内存,并返回对象的引用

(1)Java 数组创建

// 必须使用 new 来分配内存
int[] arr = new int[5]; 
arr[0] = 10;  // 正确

如果不使用 new,会报错:

int[] arr;  
arr[0] = 10; // ❌ 运行时报错:NullPointerException(未分配内存)

(2)Java 集合创建

// ArrayList 是一个对象,必须使用 new
List<String> list = new ArrayList<>(); 
list.add("Hello");

2. C 中 newmalloc(动态分配)

在 C 语言中:

  • 静态数组不需要 newmalloc
    int arr[5];  // 直接分配,不需要 new
    
  • 动态数组需要 malloc
    int* arr = (int*)malloc(5 * sizeof(int)); // C 中的动态分配
    

3. Java 与 C 的区别

语言是否需要 new主要区别
Java需要 new所有对象都在堆上,使用 new 创建。
C不需要 new数组可在栈上,动态分配时使用 malloc

4. 总结

💡 为什么 Java 需要 new

  • Java 所有对象(包括数组和集合)都是引用类型,必须用 new 分配堆内存。
  • C 允许在栈上创建数组,但 Java 数组 必须 new
  • Java 自动垃圾回收,而 C 需要 free() 释放 malloc 分配的内存。

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

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

相关文章

LeeCode题库第三十九题

39.组合总和 项目场景&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同…

大模型应用案例 | 大模型+金融运维,擎创携手某证券创新运维能力新范式

一、当大模型遇上金融运维&#xff1a;一场让告警处理“脱胎换骨”的变革 2022年底&#xff0c;ChatGPT的横空出世让AI技术彻底出圈&#xff1b;短短两年后&#xff0c;大模型已悄然潜入金融行业的“心脏地带”——运维系统。面对指数级暴增的告警信息、碎片化的处理流程&#…

【MongoDB】在Windows11下安装与使用

官网下载链接&#xff1a;Download MongoDB Community Server 官方参考文档&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型&#xff0c;其他默认 注意&#xff0c;此选…

阿里云轻量级服务器通过宝塔安装PgVector要点

设置环境变量&#xff1a; export PG_HOME/www/server/pgsql export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/www/server/pgsql/lib export PG_CONFIG/www/server/pgsql/bin/pg_config export PGDATA/www/server/pgsql/data PATH$PATH:$HOME/.local/bin:$HOME/bin:$PG_HOME/bin ali…

OpenSSL 基础使用流程

理解 OpenSSL 的基础使用流程是学习如何进行安全通信的关键&#xff0c;特别是在实现 SSL/TLS 连接时。以下是 OpenSSL 基础使用流程的一个简要总结&#xff0c;并附上一个简单的示例代码&#xff0c;帮助你理解如何通过 OpenSSL 建立一个基本的安全通信连接。 OpenSSL 基础使…

什么是最终一致性,它对后端系统的意义是什么

最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…

SQL命令详解之增删改数据

目录 简介 1 添加数据 1.1 基础语法 1.2 SQL 练习 2 修改数据 2.1 基础语法 2.2 SQL 练习 ​3 删除数据 3.1 基础语法 3.2 SQL 练习 总结 简介 在数据库操作中&#xff0c;增、删、改是最基础的操作&#xff0c;它们通常对应着SQL中的INSERT、DELETE和UPDATE命令。…

std::allocator_traits 能做但 std::allocator 不能的事情

&#x1f31f; std::allocator_traits 能做但 std::allocator 不能的事情 1️⃣ 适配自定义分配器 假设你要实现一个内存池 MyAllocator&#xff0c;而 STL 容器默认使用的是 std::allocator。 如果你希望 STL 容器可以使用你的 MyAllocator&#xff0c;你 不能直接用 std::a…

QT——c++界面编程库

非界面编程 QT编译的时候&#xff0c;依赖于 .pro 配置文件&#xff1a; SOURCES: 所有需要参与编译的 .cpp 源文件 HEADERS:所有需要参与编译的.h 头文件 QT&#xff1a;所有需要参与编译的 QT函数库 .pro文件一旦修改&#xff0c;注意需要键盘按 ctrls 才能加载最新的配置文…

基于专利合作地址匹配的数据构建区域协同矩阵

文章目录 地区地址提取完成的处理代码 在专利合作申请表中&#xff0c;有多家公司合作申请。在专利权人地址中&#xff0c; 有多个公司的地址信息。故想利用这里多个地址。想用这里的地址来代表区域之间的专利合作情况代表区域之间的协同、协作情况。 下图是专利合作表的一部分…

汽车小助手智能体

汽车小助手&#xff1a;智能驱动汽车服务新体验 链接&#xff1a;文心智能体平台AgentBuilder | 想象即现实 文心智能体平台AgentBuilder&#xff0c;是百度推出的基于文心大模型的智能体平台&#xff0c;支持广大开发者根据自身行业领域、应用场景&#xff0c;选取不同类型的…

各种传参形式

一、QueryString 前端请求&#xff1a;http://localhost:8080/test/user/find?id26&namezhangsan 后端接收&#xff1a; 1.参数接收&#xff1a; RequestMapping("/find") public void find(String id,String name){... }2.对象接收&#xff1a; RequestMa…

【vue-echarts】——03.配置项---tooltip

文章目录 一、tooltip提示框组件二、显示结果一、tooltip提示框组件 提示框组件,用于配置鼠标滑过或点击图表时的显示框 代码如下 Demo3View.vue <template><div class="about">

VSCode轻松调试运行.Net 8.0 Web API项目

1.背景 我一直都是用VS来开发.NetCore项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair 题目 分析一、pair1.1pair与vector的区别1.2 两者使用场景两者组合使用 二、set2.1核心特点2.2set的基本操作2.3 set vs unordered_set示例&#xff1a;统计唯一单词数代码 题目 分析 大佬写的很明白&#xff0c;看这儿 我讲讲…

游戏引擎学习第128天

开始 然而&#xff0c;我们仍然有一些工作要做&#xff0c;渲染部分并没有完全完成。虽然现在已经能够运行游戏&#xff0c;而且帧率已经可以接受&#xff0c;但仍然有一些东西需要进一步完善。正在使用调试构建编译版本&#xff0c;虽然调试版本的性能不如优化版本&#xff0…

多元数据直观表示(R语言)

一、实验目的&#xff1a; 通过上机试验&#xff0c;掌握R语言实施数据预处理及简单统计分析中的一些基本运算技巧与分析方法&#xff0c;进一步加深对R语言简单统计分析与图形展示的理解。 数据&#xff1a; 链接: https://pan.baidu.com/s/1kMdUWXuGCfZC06lklO5iXA 提取码: …

第8天:面向对象编程入门 - 类与对象

第8天&#xff1a;面向对象编程入门 - 类与对象 一、&#x1f4da; 今日学习目标 &#x1f3af; 掌握类与对象的定义与使用&#x1f527; 理解封装、继承、多态三大特性&#x1f4a1; 完成银行账户管理系统实战&#x1f6e0;️ 学会构造函数与析构函数的编写 二、⚙️ 核心知…

Hadoop之02:MapReduce编程模型

MapReduce编程模型 理解MapReduce编程模型独立完成一个MapReduce程序并运行成功了解MapReduce工程流程掌握并描述出shuffle全过程&#xff08;面试&#xff09;独立编写课堂及作业中的MR程序理解并解决数据倾斜 1. MapReduce编程模型 Hadoop架构图 Hadoop由HDFS分布式存储、M…

2.7 大模型RAG内容安全合规检查-大模型ACP模拟题-真题

单选题 在RAG应用中&#xff0c;输入内容合规检查的正确顺序是&#xff1f; A. 先处理模型生成&#xff0c;后检查用户输入 B. 先检查用户输入&#xff0c;后处理模型生成 ✅ C. 仅检查用户输入 D. 仅检查模型输出 解析&#xff1a;合规流程应优先过滤用户输入风险&#xff0…