數組初始化方式有多種,但無論那種方式,都應當先分配地址,才能進行賦值,數組初始化方式如下:
public class ArrayTest { /** * 數組的初始化形式 */ public static void main(String[] args) { int[] a; a=new int[5]; //初始化方式一 a=new int[]{1,5,6,3,2}; //初始方式二 /* * a={1,5,6}; //初始方式三錯誤,因爲這情況下int a[]並沒有分配空間,不能往裏面賦值 */ for(int m:a){ System.out.println(m); } System.out.println("-----------------------------"); } }
當採用clone方法,對數組進行初始化時,實際上是拷貝了一份數據副本,此時對副本的操作不會影響原數據,例:
public class ArrayTest { public static void assignArray(){ int[] scores; int[] exams; //exams=scores; 此處賦值錯誤,因爲scores數組未初始化,未分配地址 scores=new int[4]; exams=scores; //賦值成功,指向同一個內存地址,數組中的值爲0 System.out.println("未賦值:"); printArray(exams,"exams"); printArray(scores,"scores"); for(int i=0;i<scores.length;i++){ //length並非一個方法 scores[i]=i; } exams=scores; //賦值成功,指向同一個內存地址,數組中有值,但對其中一個進行改變時,另一個值也會變化 System.out.println("賦值後:"); printArray(exams,"exams"); printArray(scores,"scores"); exams[2]=11; //修改exams[2],scores數組的值也會變化,因爲兩者指向同一個地址 System.out.println("exams數組改變後:"); printArray(exams,"exams"); printArray(scores,"scores"); } /* * 通過Clone方法進行賦值 */ public static void assignArrayByClone(){ int[] scores; int[] exams; scores=new int[4]; for(int i=0;i<scores.length;i++){ scores[i]=i; } exams=scores.clone(); //賦值成功,拷貝了一份scores數據,兩者不指向同一個內存地址 //因此副本與原數組相互之間沒有影響,即當一個數組改變時,不會對另一個數組產生影響 System.out.println("賦值後:"); printArray(exams,"exams"); printArray(scores,"scores"); exams[2]=11; //修改exams[2],scores數組的值不會變化,因爲兩者指向的內存地址不同 System.out.println("exams數組改變後:"); printArray(exams,"exams"); printArray(scores,"scores"); scores[0]=99; System.out.println("scores數組改變後:"); printArray(exams,"exams"); printArray(scores,"scores"); } public static void printArray(int[] arr,String arrName){ System.out.println(arrName); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } System.out.println(); } public static void main(String[] args) { assignArray(); System.out.println("--------------------------"); assignArrayByClone(); } }
本文分享自華爲雲社區《10分鐘搞懂各種內存溢出案例!!(含完整源碼,建議收藏)》,作者:冰 河。 作爲程序員,多多少少都會遇到一些內存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個假程序員!哈哈,開個玩笑。今天,我
1. 引言 在現代軟件開發過程中,性能優化和故障排查是保證應用穩定運行的關鍵任務之一。Java作爲一種廣泛使用的編程語言,其生態中湧現出了許多優秀的監控和診斷工具,諸如:SkyWalking、Zipkin等,它們幫助開發者和運維人員
1.背景: 最近一段時間研發大佬們在積極的治理告警,經過一段時間的治理,現在告警情況已經有了很大的改觀,但難免還有漏網之魚;具體我們可以以下邊一個例子來看: 這是一個生產的UMP告警,通過這個告警我們發現XXX這個應用的堆內存使用率
一. 現狀問題 代碼評審 Code Review 是提高代碼質量、促進團隊合作、知識間共享的關鍵環節,對於系統代碼質量和穩定性都至關重要。 【人爲代碼評審(Code Review)】存在很多弊端 時間消耗大:代碼評審是一
本文分享自華爲雲社區《超詳細的Java後臺開發面試題之Spring IOC與AOP》,作者:GaussDB 數據庫。 一、前言 IOC和AOP是Spring中的兩個核心的概念,下面談談對這兩個概念的理解。 二、IOC(Inverse o
這是一篇適合Java工程師體質的AI開發教程。 本教程會教你寫一個簡單的junit4的Rule,該Rule在基於junit4的測試方法失敗後,自動向GPT發送錯誤信息並通過GPT分析得出代碼修改建議。 首先向AI問好 簡單的通過AI,讓它
這個其實是一個特別高頻的面試題,松哥也一直很想和大家仔細來聊一聊這個話題,網上關於這塊的文章很多,但是我一直覺得要把這個問題講清楚還有點難度,今天我來試一試,看能不能和小夥伴們把這個問題梳理清楚,當然,如果小夥伴們覺得看文章不過癮,松哥也有
背景 營銷系統中,客戶投訴是業務發展的一大阻礙,一般會過濾掉黑名單高風險賬號,並配合頻控策略,來減少客訴,進而增加營銷效率,減少營銷成本,提升營銷質量。 營銷系統一般是通過大數據分析建模,在CDP(客戶數據平臺,以客戶爲核心,圍繞數據融
作者:尹航 在前文《基於阿里雲服務網格流量泳道的全鏈路流量管理(一):嚴格模式流量泳道》、《基於阿里雲服務網格流量泳道的全鏈路流量管理(二):寬鬆模式流量泳道》中,我們介紹了流量泳道的概念、使用流量泳道進行全鏈路灰度管理的方案,以及阿里雲服
作者:太業 流式處理語言發展 早期流式處理概念: 20 世紀 70 年代,編程語言如 APL 提供了對數組的流式操作,這可以看作是流式處理語法的早期形式。 管道(Pipes)概念在 UNIX 系統中的引進使得可以通過命令行將一個命令的
轉載自牛肉胡辣湯 在大數據分析和處理的領域中,DolphinScheduler是一個開源的分佈式工作流調度系統,可以用於調度和管理複雜的工作流任務。本文將介紹如何使用Java中的URL類來調用DolphinScheduler的API,實現啓
一、背景 在日常部門OpsReview過程中,部門內多次遇到應用容器所在的宿主機磁盤繁忙導致的接口響應緩慢,TP99增高等影響服務性能的問題,其中比較有效的解決方案是開啓日誌的異步打印,可以有效避免同步日誌打印在磁盤IO高起的情況下拖慢業
一. 現狀問題 代碼評審 Code Review 是提高代碼質量、促進團隊合作、知識間共享的關鍵環節,對於系統代碼質量和穩定性都至關重要。 【人爲代碼評審(Code Review)】存在很多弊端 時間消耗大:代碼評審是一個耗時
文|苟振東(花名:盛知) Koupleless 項目 committer 螞蟻集團技術專家 本文 5789 字 閱讀 12 分鐘 本篇文章屬於 Koupleless 進階系列文章第二篇,默認讀者對 Koupleless 的基礎概念、能力都