JAVASE---數組的定義與使用

數組的基本概念

什么是數組

數組是具有相同類型元素的集合,在內存中連續存儲。

1. 數組中存放的元素其類型相同
2. 數組的空間是連在一起的
3. 每個空間有自己的編號,起始位置的編號為0,即數組的下標

數組的創建及初始化

數組的創建

T[] 數組名 = new T[N];

T代表每個元素的類型

N代表元素的個數/數組長度

int[] array1 = new int[10]; // 創建一個可以容納10個int類型元素的數組
double[] array2 = new double[5]; // 創建一個可以容納5個double類型元素的數組
String[] array3 = new double[3]; // 創建一個可以容納3個字符串元素的數組

數組的初始化

數組的初始化主要分為動態初始化以及靜態初始化。

動態初始化:在創建數組時,直接指定數組中元素的個數

int[] array = new int[10];

靜態初始化:在創建數組時不直接指定數據元素個數,而直接將具體的數據內容進行指定

T[] 數組名稱 = {data1, data2, data3, ..., datan};

靜態初始化雖然沒有指定數組的長度,編譯器在編譯時會根據{}中元素個數來確定數組的長度。
靜態初始化時, {}中數據類型必須與[]前數據類型一致。
靜態初始化可以簡寫,省去后面的new T[]。

如果沒有對數組進行初始化,數組中元素有其默認值,為各個類型的0值。

數組的使用

數組中元素訪問

數組在內存中是一段連續的空間,空間的編號都是從0開始的,依次遞增,該編號稱為數組的下標,數組可以通過下標訪問其任意位置的元素。

int[]array = new int[]{10, 20, 30, 40, 50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
// 也可以通過[]對數組中的元素進行修改
array[0] = 100;
System.out.println(array[0]);

數組是引用類型

初始JVM的內存分布

內存是一段連續的存儲空間,主要用來存儲程序運行時數據的。

1. 程序運行時代碼需要加載到內存
2. 程序運行產生的中間數據要存放在內存
3. 程序中的常量也要保存
4. 有些數據可能需要長時間存儲,而有些數據當方法運行結束后就要被銷毀

因此JVM也對所使用的內存按照功能的不同進行了劃分:

程序計數器 (PC Register): 只是一個很小的空間, 保存下一條執行的指令的地址
虛擬機棧(JVM Stack): 與方法調用相關的一些信息,每個方法在執行時,都會先創建一個棧幀,棧幀中包含有:局部變量表、操作數棧、動態鏈接、返回地址以及其他的一些信息,保存的都是與方法執行時相關的一些信息。比如:局部變量。當方法運行結束后,棧幀就被銷毀了,即棧幀中保存的數據也被銷毀了。
本地方法棧(Native Method Stack): 本地方法棧與虛擬機棧的作用類似. 只不過保存的內容是Native方法的局部變量. 在有些版本的 JVM 實現中(例如HotSpot), 本地方法棧和虛擬機棧是一起的
堆(Heap): JVM所管理的最大內存區域. 使用 new 創建的對象都是在堆上保存 (例如前面的 new int[]{1, 2,3} ),堆是隨著程序開始運行時而創建,隨著程序的退出而銷毀,堆中的數據只要還有在使用,就不會被銷毀。
方法區(Method Area): 用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據. 方法編譯出的的字節碼就是保存在這個區域

基本類型變量與引用類型變量的區別


?基本數據類型創建的變量,稱為基本變量,該變量空間中直接存放的是其所對應的值;
而引用數據類型創建的變量,一般稱為對象的引用,其空間中存儲的是對象所在空間的地址

?a,b就是基本數據類型,array是引用類型。其實本質相同都存放的是數據只是數據類型不同而已。

再談引用變量

public static void func() {
int[] array1 = new int[3];
array1[0] = 10;
array1[1] = 20;
array1[2] = 30;
int[] array2 = new int[]{1,2,3,4,5};
array2[0] = 100;
array2[1] = 200;
array1 = array2;
array1[2] = 300;
array1[3] = 400;
array2[4] = 500;
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
}

?

?認識null

null 在 Java 中表示 "空引用" , 也就是一個不指向對象的引用.

總結: 所謂的 "引用" 本質上只是存了一個地址. Java 將數組設定成引用類型, 這樣的話后續進行數組參數傳參, 其實只是將數組的地址傳入到函數形參中. 這樣可以避免對整個數組的拷貝(數組可能比較長, 那么拷貝開銷就會很大).

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mybatis高級特性

文章目錄 數據庫事務管理批處理插件擴展持久化和ORM緩存機制 數據庫事務管理 通過注解方式&#xff1a; 在需要進行事務管理的方法上添加Transactional注解&#xff0c;該注解可以用于類或方法上。在配置文件中開啟事務管理器&#xff0c;并指定事務管理器的類型和連接池等相關…

Java SpringBoot Vue智能停車系統

基礎環境 JDK1.8、Maven、Mysql、IntelliJ IDEA 內置功能 系統管理&#xff1a;角色管理、接口管理、系統菜單、全局配置 賬號管理&#xff1a;用戶管理、合作單位 系統監控&#xff1a;監控大屏、日志監控 財務管理&#xff1a;訂單列表 停車記錄&#xff1a;停車記錄 車輛管…

Labview選項卡之實現被選擇選項卡工作

文章目錄 前言一、使用選項卡二、實現被選擇選項卡工作1、需求2、分析3、實現①、前面板②、程序框圖 三、效果展示四、源碼自取 前言 有些時候&#xff0c;我們做界面&#xff0c;需要好多個界面切換。如果是同一個 VI 里界面切換&#xff0c;一般都是選項卡了。切換不同選項…

使用phpstorm開發調試thinkphp

1.環境準備 1.開發工具下載&#xff1a;PhpStorm: PHP IDE and Code Editor from JetBrains 2.PHP下載&#xff1a;PHP: Downloads 3. PHP擴展&#xff1a;PECL :: Package search 4.用與調試的xdebug模塊&#xff1a; Xdebug: Downloads xdebug模塊&#xff0c;如果是php8以…

23.8.16日總結

原先寫的評論是每級評論用縮進來區分&#xff0c;所以最多設置的是九級評論&#xff0c;修改了排版和格式&#xff1a; 還有管理員頁面&#xff0c;查看文章時可以進行點贊&#xff0c;收藏的操作&#xff0c;現在進行了修改&#xff0c;將相關操作隱藏。 還有點擊查看未發布…

js如何獲取字符串大小是幾M

js如何獲取字符串大小是幾M 在JavaScript中&#xff0c;可以使用以下方法來獲取字符串的大小&#xff08;以字節為單位&#xff09;&#xff1a; function getStringSizeInBytes(str) {// 使用UTF-8編碼計算字符串的字節長度let totalBytes new Blob([str]).size;// 將字節長…

14-矩陣相乘及其運算法則

矩陣與向量的乘法 在這一篇文章中我們就將基于上一篇重新審視矩陣的這個視點來理解矩陣的乘法&#xff0c;那么在這一篇&#xff0c;我們主要來看一下矩陣和向量的乘法。這里這個線性方程組是上一小節給大家舉的模擬的一個非常簡單的小型經濟系統的例子&#xff0c;我們可以把…

文件的導入與導出

文章目錄 一、需求二、分析1. Excel 表格數據導出2. Excel 表格數據導入一、需求 在我們日常開發中,會有文件的導入導出的需求,如何在 vue 項目中寫導入導出功能呢 二、分析 以 Excel 表格數據導出為例 1. Excel 表格數據導出 調用接口將返回的數據進行 Blob 轉換,附: 接…

logstash日志換行處理小解

logstash主用于日志實時數據收集、解析&#xff0c;并將數據轉發的工具&#xff0c;內置的功能也相當強大。但&#xff0c;同時意味著&#xff0c;他可能接收到各種情況的數據。 此處&#xff0c;我們主要講解我實際使用中&#xff0c;碰到的一個小問題&#xff0c;換行(\n)。…

redis 和 mongodb 比較

Redis和MongoDB是兩種不同類型的數據庫&#xff0c;它們在數據存儲和查詢方式、數據模型以及適用場景等方面有一些明顯的區別。下面是Redis和MongoDB之間的一些比較&#xff1a; 數據模型&#xff1a; Redis&#xff1a;Redis是一個鍵值存儲系統&#xff0c;支持多種數據結構如…

FPGA應用學習筆記--時鐘域的控制 亞穩態的解決

時鐘域就是同一個時鐘的區域&#xff0c;體現在laways語句邊緣觸發語句中&#xff0c;設計規模增大就會導致時鐘不同步&#xff0c;有時差&#xff0c;就要設計多時鐘域。 會經過與門的延時產生的新時鐘域&#xff0c;這種其實不推薦使用&#xff0c;但在ascl里面很常見 在處理…

八大排序超詳解(動圖+源碼)

&#x1f493;博主個人主頁:不是笨小孩&#x1f440; ?專欄分類:數據結構與算法&#x1f440; 刷題專欄&#x1f440; C語言&#x1f440; &#x1f69a;代碼倉庫:笨小孩的代碼庫&#x1f440; ?社區&#xff1a;不是笨小孩&#x1f440; &#x1f339;歡迎大家三連關注&…

虛幻5中Lumen提供哪些功能以及如何工作的

虛幻引擎 5 中的 Lumen 是一個完全動態的全局照明和反射系統。它可以在虛幻引擎 5 中使用&#xff0c;因此創作者無需自行設置。它是為下一代控制臺和建筑可視化等高端可視化而設計的。那么它提供了哪些功能以及如何工作&#xff1f; 全局照明 當光離開光源時&#xff0c;它會…

負載均衡搭建

LVS-DR部署 [客戶端] node1 192.168.157.148 [lvs] node2 192.168.157.142 [web服務器] node3 192.168.157.145 node4 192.168.157.146&#xff08;1&#xff09;[lvs] yum install -y ipvsadm.x86_64 配置LVS負載均衡服務 &#xff08;1&#xff09;手動添加LVS轉發1&#xff…

系統架構設計專業技能 · 軟件工程之軟件測試與維護(六)【系統架構設計師】

系列文章目錄 系統架構設計專業技能 網絡規劃與設計&#xff08;三&#xff09;【系統架構設計師】 系統架構設計專業技能 系統安全分析與設計&#xff08;四&#xff09;【系統架構設計師】 系統架構設計高級技能 軟件架構設計&#xff08;一&#xff09;【系統架構設計師…

MAVEN利器:一文帶你了解MAVEN以及如何配置

前言&#xff1a; 強大的構建工具——Maven。作為Java生態系統中的重要組成部分&#xff0c;Maven為開發人員提供了一種簡單而高效的方式來構建、管理和發布Java項目。無論是小型項目還是大型企業級應用&#xff0c;Maven都能幫助開發人員輕松處理依賴管理、編譯、測試和部署等…

YOLOV7改進:加入RCS-OSA模塊,提升檢測速度

1.該文章屬于YOLOV5/YOLOV7/YOLOV8改進專欄,包含大量的改進方式,主要以2023年的最新文章和2022年的文章提出改進方式。 2.提供更加詳細的改進方法,如將注意力機制添加到網絡的不同位置,便于做實驗,也可以當做論文的創新點。 2.漲點效果:RCS-OSA模塊更加輕量化,有效提升檢…

Spring Boot業務代碼中使用@Transactional事務失效踩坑點總結

1.概述 接著之前我們對Spring AOP以及基于AOP實現事務控制的上文&#xff0c;今天我們來看看平時在項目業務開發中使用聲明式事務Transactional的失效場景&#xff0c;并分析其失效原因&#xff0c;從而幫助開發人員盡量避免踩坑。 我們知道 Spring 聲明式事務功能提供了極其…

uniapp條件編譯

uniapp條件編譯 uni-app 將已經將可以跨平臺兼容處理的組件及 API 等進行了封裝&#xff0c;但是部分平臺的特性無法跨平臺。 由此&#xff0c;uni-app 提供了條件編譯的方案&#xff0c;來處理不同平臺的特定或差異。 寫法 #ifdef&#xff1a; 僅在某平臺存在#ifndef&#xf…

Kafka 01——Kafka的安裝及簡單入門使用

Kafka 01——Kafka的安裝及簡單入門使用 1. 下載安裝1.1 JDK的安裝1.2 Zookeeper的安裝1.2.1 關于Zookeeper版本的選擇1.2.2 下載、安裝Zookeeper 1.3 kafka的安裝1.3.1 下載1.3.2 解壓1.3.3 修改配置文件 2. 啟動 kafka2.1 Kafka啟動2.2 啟動 kafka 遇到的問題2.2.1 問題12.2.…