成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你了解Java選擇排序和垃圾回收機制

開發 后端
創建對象就會占據內存,如果程序在執行過程中不能再使用某個對象,這個對象是徒耗內存的垃圾。作為程序員不用關心回收垃圾對象問題,因為java虛擬機會自動回收垃圾對象所占用的內存空間。

[[430263]]

一、垃圾回收機制

1.創建對象就會占據內存,如果程序在執行過程中不能再使用某個對象,這個對象是徒耗內存的垃圾。作為程序員不用關心回收垃圾對象問題,因為java虛擬機會自動回收垃圾對象所占用的內存空間。

2.當一個對象成為垃圾后會暫時保留在內存,如果垃圾堆滿了,Java虛擬機有垃圾回收機制,收集到的垃圾對象所占的內存空間,會給垃圾收集器釋放。然而程序會有很多的存儲空間。也可以通過調用System.gc()方法讓java虛擬機進行垃圾回收,當一個對象在內存中被釋放,可以通過finalize()方法會被自動調用。

3.對象在內存狀態有三種:

可達狀態:當一個對象被創建后,有一個以上的引用變量指向它,這個對象就是處于可達狀態。

可恢復狀態:沒有任何引用變量指向這個對象。虛擬機進行垃圾回收之前,系統就會調用所有可恢復狀態對象finalize()進行清理。如果系統在調用finalize()方法時重新讓一個引用變量指向這個對象會再次變為可達狀態,否則,這個對象就進入不可達狀態。

不可達狀態:當對象與所有引用變量的關聯都被斷掉,系統已經調用所有對象的finalize()方法還是沒有使這個對象變成可達狀態時,那么這個對象將永久性地失去引用,最后形成不可達狀態。

4.java虛擬機垃圾回收的過程

例如以下代碼:

  1. class Person{ 
  2. //定義finalize方法在垃圾回收之前被調用 
  3. public void finalize(){ 
  4.         System.out.println("這個對象會被作為垃圾回收..."); 
  5. public class p9 { 
  6. /** 
  7.  * @param args 
  8.  */ 
  9. public static void main(String[] args) { 
  10. // TODO Auto-generated method stub 
  11.         //創建兩個Person的對象 
  12. Person p1=new Person(); 
  13. Person p2=new Person(); 
  14. //把對象設為null 
  15. p1=null
  16. p2=null
  17. //調用垃圾回收方法 
  18. System.gc(); 

輸出的結果是:

  1. 這個對象會被作為垃圾回收... 
  2.  
  3. 這個對象會被作為垃圾回收... 

二、Arrays類

1.Java提供了Arrays類方便用于對數組進行操作。

2.Arrays有以下功能:

數組賦值:通過Arrays.fill()方法用于數組填充;

數組排序:通過Arrays.sort()方法按數組所有元素進行排序,按從小到大的順序;

數組比較:通過Arrays.equals()方法判斷數組元素值是否相等;

查找數組元素:Arrays.binarySearch()方法通過二分法在已經排好序的數組中查找指定的元素,并返回該元素的下標;

數組轉換字符串:Arrays.toString()方法將數組轉換為字符串并輸出;

3.Arrays類例子

代碼如下所示:

  1. public static void main(String[] args) { 
  2. // TODO Auto-generated method stub 
  3. int[] a1 = new int[]{5, 2 , 3, 9}; 
  4.     int[] a2 = new int[]{5, 2 , 3, 9}; 
  5.     //Arrays.equals()方法判斷數組元素是否相等 
  6.     System.out.println("a1數組和a2數組是否相等:" + Arrays.equals(a1 , a2)); 
  7.     int[] b = Arrays.copyOf(a1, 6);  
  8.     System.out.println("a1數組和b數組是否相等:" + Arrays.equals(a1 , b)); 
  9.     //toString()方法將數組轉換字符串 
  10.     System.out.println("b數組的元素為:" + Arrays.toString(b)); 
  11.     //Array.fill()方法數組賦值 
  12.     Arrays.fill(b , 2, 4 , 1); 
  13.     System.out.println("b數組的元素為:" + Arrays.toString(b)); 
  14.     //Arrsays.sort()方法數組排序 
  15.     Arrays.sort(b); 
  16.     System.out.println("b數組的元素為:" + Arrays.toString(b)); 

輸出的結果是:

  1. a1數組和a2數組是否相等:true 
  2. a1數組和b數組是否相等:false 
  3. b數組的元素為:[5, 2, 3, 9, 0, 0] 
  4. b數組的元素為:[5, 2, 1, 1, 0, 0] 
  5. b數組的元素為:[0, 0, 1, 1, 2, 5] 

三、選擇排序法

1.首先找到最小元素所在位置的下標(索引),將這個元素與第一位上的元素進行交換。

2.選擇排序法案例

  1. public static void main(String[] args) { 
  2. // TODO Auto-generated method stub 
  3. int arr[]= {12,31,25,7,38};//定義一個數組 
  4.     for(int i=0;i<arr.length;i++) { 
  5.         int temp=i; 
  6.           //數組中從i開始的最小的元素所在位置的下標(索引)賦值給temp 
  7.         for(int j=i;j<arr.length;j++) { 
  8.             if(arr[j]<arr[temp]) { 
  9.                 temp=j; 
  10.             } 
  11.         } 
  12.         //上面獲取了數組中從i開始的最小值的下標(索引)temp,索引把第i位上的元素與其進行交換 
  13.         int temp1=arr[i]; 
  14.         arr[i]=arr[temp]; 
  15.         arr[temp]=temp1; 
  16.         System.out.println(arr[i]); 
  17.   } 

輸出結果是:

  1. 12 
  2. 25 
  3. 31 
  4. 38 

四、總結

 

本文主要介紹了java垃圾回收機制、Arrays類、選擇排序法。java的垃圾回收機制簡要的說明對象在內存中狀態分別有三種:可達狀態、可恢復狀態、不可達狀態。通過一個java虛擬機垃圾回收機制的案例幫助大家理解這個過程。Arrays類方便用于對數組的操作,介紹了Arrays的幾個功能。常用的選擇排序法,首先是找到最小元素的所在位置的索引,將這個元素與第一位上的元素進行交換。通過本文的學習,希望對大家有所幫助!

本文轉載自微信公眾號「Java進階學習交流」,可以通過以下二維碼關注。轉載本文請聯系Java進階學習交流公眾號。

 

責任編輯:武曉燕 來源: Java進階學習交流
相關推薦

2024-02-22 17:15:22

JS垃圾回收機制

2023-05-08 08:21:15

JavaNIO編程

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺

2020-11-17 11:10:21

CSS選擇器HTML

2021-01-26 23:46:32

JavaScript數據結構前端

2023-07-30 15:18:54

JavaScript屬性

2020-12-08 08:09:49

SVG圖標Web

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2021-03-09 14:04:01

JavaScriptCookie數據

2024-04-19 14:23:52

SwitchJavaScript開發

2021-03-05 18:04:15

JavaScript循環代碼

2024-01-30 13:47:45

2021-09-27 09:18:30

ListIterato接口方法

2021-02-26 20:01:57

SVG濾鏡元素

2021-06-24 09:05:08

JavaScript日期前端

2023-09-06 14:57:46

JavaScript編程語言

2020-11-10 10:48:10

JavaScript屬性對象

2021-01-29 18:41:16

JavaScript函數語法

2021-06-04 09:56:01

JavaScript 前端switch
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人老司机 | 久久国产成人 | 亚洲国产成人在线 | 日韩av中文 | 日本色综合 | 日韩三级在线观看 | 国产一区二区精品自拍 | 午夜免费av | 国产精品久久久久久久久免费樱桃 | 欧美在线日韩 | 羞羞色视频 | 一区二区三区亚洲精品国 | 最新日韩在线视频 | 精品国产乱码久久久久久影片 | 最新中文字幕 | 国产精品亚洲视频 | 视频一区二区在线观看 | 亚洲视频第一页 | 国产精品久久久久久久免费观看 | 国产日韩欧美 | 日韩在线中文字幕 | 亚洲视频二区 | 亚洲国产精品一区在线观看 | 亚洲精品中文字幕在线观看 | 久久亚洲春色中文字幕久久久 | 亚洲美女一区二区三区 | 人人干人人干人人干 | 精品在线观看一区 | 一级毛片大全免费播放 | 久久国产精品偷 | 成人在线视频一区 | 国产成人jvid在线播放 | 欧美成人影院在线 | 国产馆| 久久久免费观看视频 | 国产二区在线播放 | 99精品在线观看 | 91亚洲国产成人久久精品网站 | 天天干天天干 | 欧美久久久久久 | 91aiai|