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.pswp.cn/bicheng/72307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72307.shtml
英文地址,請注明出處:http://en.pswp.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…