激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java基礎之toString的序列化 匿名對象 復雜度精解

Java基礎之toString的序列化 匿名對象 復雜度精解

2022-01-19 10:51愛內卷的王同學 Java教程

序列化即為把內存中的對象轉換為字節(jié)寫入文件或通過網絡傳輸到遠端服務器,本章節(jié)將帶你了解Java toString的序列化 匿名對象 復雜度,需要的朋友可以參考下

toString的序列化、匿名對象、復雜度

 

序列化

toString 方法的原理就是序列化,他可以幫助我們講一個抽象的對象變得具體,譬如把對象里面的名字、年齡、身高等信息具象為字符串。(總之,序列化:將對象轉化為字符串;反序列化:將字符串轉化為對象)。

 

匿名對象

匿名對象適用于只想使用一次的情況,因為匿名對象是沒有引用的,每次用都要重新new 一遍對象,很麻煩。

class Person {
  public void eat{
      //略
  }
  public void show{
      //內容略
  }
}
//主函數略寫
new Person.eat();//此即為匿名函數的寫法
new Person.show();

 

復雜度

復雜度是衡量一個計算機運行效率的東西,分為時間復雜度和空間復雜度,空間復雜度衡量的是一個程序所占用儲存空間,時間復雜度衡量的是一個程序的運行時間(當然,不是那種真實的時間),但是當下,計算機的內存空間已經發(fā)展到了一定的高度,所以不需要再去關注這個東西了。

時間復雜度

我們是不可能能真正去測算一個程序的執(zhí)行時間的,因為,每個計算機的性能不同,執(zhí)行的時間快慢也不同。一個算法所花費的時間是正比于語句的執(zhí)行次數的。

所以,算法中的基本操作的執(zhí)行次數,為算法時間復雜度。

以下為時間復雜度示例,一起來具體分析。

Java基礎之toString的序列化 匿名對象 復雜度精解

上面已經講過了,時間復雜度的定義就是 算法中的基本操作的執(zhí)行次數,所以我們算一下上面這段代碼每段語句的執(zhí)行次數就可以求出(上面的圖片已經標注),所以這段代碼的時間復雜度為:N^2 + 2N + 10。(1 太小,可以忽略)。

大O的漸進表示法

用參數 1 取代式子中的常數項在修改后函數中只保留最高項如果最高項的系數不為 1 ,那么就把他前面的系數去掉

(其實歸根到底就是 ,對于一個有不同項的式子(譬如:N^2+2N+10 變 N^2) ,去掉最高項以外的其他項 , 去掉最高項的常數,但是如果其時間復雜度僅僅是一個常數,直接轉為O(1)即可)

時間復雜度的分類

時間復雜度被分為三類(可以以數組的查找為例)

第一類:最好情況(1次找到,即假定我們要找的是數組的第一個元素)

第二類:最壞情況(最后一個找到,即假設我們要找的是數組的最后一個元素,N次)

第三類:平均情況(中間找到,即假設我們要找到的是數組的中間元素,N/2次)

但是,平時我們嘴里面常說的時間復雜度其實是最壞的情況,所以,以上以查找數組為例的時間復雜度應該為:O(N)。

計算時間 復雜度的方法

既要看程序的執(zhí)行次數,也要看程序的具體的執(zhí)行內容而定。

示例 1

Java基礎之toString的序列化 匿名對象 復雜度精解

如上圖,要求計算冒泡排序的時間復雜度。這里要算出 最好情況和最壞情況 ,最好情況也就是順序,一次性的只有圖中的第一個框子的程序進行執(zhí)行,第二個框子里的程序根本沒執(zhí)行所以不納入考慮范圍。因此,最好情況為:O(N)。

但是最壞情況就是逆序,從大到小的那種,這樣的話,第二個框子必須每次都執(zhí)行。即為:N(N-1),因此根據剛剛上面的規(guī)則,去掉最高項以外的其他項之后,最壞情況為:O(N^2)。

示例 2

Java基礎之toString的序列化 匿名對象 復雜度精解

如上圖,是二分查找的代碼,這個代碼要計算它的時間復雜度,就必須知道里面循環(huán)執(zhí)行的次數,而下圖,以四個元素的數組為例進行查找,最終發(fā)現規(guī)律(注意,這里要算的時間復雜度考慮最壞情況,也就是說我們不管數組里有幾個元素查找的都是最后一個元素)。如圖,分支處的判斷與賦值其實就是進入循環(huán)里面所做的事情,也就是說有幾個分支,循環(huán)就執(zhí)行了幾次,下圖那個,四個元素,三個分支,所以,循環(huán)執(zhí)行了三次,其時間復雜度也是 3 。最后的到用n 表示出來的n ,但是下圖中的值其實并不準確,根據上面說過的原理,我們可以略去 1 那個常數。然后log 里面的 2 也是能夠去掉的,用 log n 特指 二分查找的時間復雜度。

Java基礎之toString的序列化 匿名對象 復雜度精解

示例3

計算遞歸的時間復雜度,公式:時間復雜度 = 遞歸的次數 * 遞歸執(zhí)行的次數。

//階乘遞歸
long factorial(int n) {
  return n < 2 ? n :factorial(n-1)*n;
}//求此段代碼的時間復雜度
//  n     a
//  2     2*1
//  3     3*1
//綜上,找出的規(guī)律說明輸入多少
//時間復雜度就是多少。
//因此,答案為O(N)
//計算斐波那契數列的時間復雜度
int fibonacci(int n) {
  return n < 2 ? n :fibonacci(n-1)+fibonacci(n-2);
}
//

空間復雜度

空間復雜度不是看程序占多少字節(jié),這個是沒有意義的,但是如果我們要計算空間復雜度的話,其實求的是變量的個數。

Java基礎之toString的序列化 匿名對象 復雜度精解

如上圖,冒泡排序的空間復雜度是O(1),之所以是這樣子的是因為函數參數里面的那個 int[] array,他其實并不算在內,因為這是一個必須空間,就是說,要存這N 個數據就必須是要開辟的,這種必須空間不納入考慮范圍。但是循環(huán)里面的那個 sort 變量是納入考慮范圍,因為這才是實實在在創(chuàng)建的變量,又因為這個變量在for 循環(huán)里面,僅僅是每次循環(huán)賦一次值,并不是每次循環(huán)都創(chuàng)建一次,所以 時間復雜度為 1。

Java基礎之toString的序列化 匿名對象 復雜度精解

同樣的,上圖起到決定空間復雜度的變量即為圖中畫紅線的變量。容量一律用N 來表示,故為O(N)。

Java基礎之toString的序列化 匿名對象 復雜度精解

此處遞歸代碼的空間復雜度為O(N),因為每次遞歸都會開辟函數的棧幀,這個棧幀里面存有值,因為上面的代碼的遞歸次數是 N 次,所以它也就開辟了 N 次,也就有了N 個值。

到此這篇關于Java基礎之toString的序列化 匿名對象 復雜度精解的文章就介紹到這了,更多相關Java toString內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_54693675/article/details/119846561

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
主站蜘蛛池模板: 成人三级视频在线观看 | 欧美精品一区自拍a毛片在线视频 | 欧美黄色看 | 成人在线观看免费高清 | 中文字幕在线日韩 | 亚洲精品久久久久久久久久久 | 久久毛片免费 | 日日狠狠久久偷偷四色综合免费 | 天天草天天干天天 | 国外成人在线视频网站 | 久久久久久久久成人 | 国产精品成aⅴ人片在线观看 | 精品国产一区二区三区四 | 欧美国产成人在线 | 在线观看国产一区二区三区 | 日本一区二区免费在线播放 | 美女亚洲 | 毛片a级毛片免费播放100 | 久久精品99国产国产精 | 国产成人精品午夜视频' | 精品一区二区三区日本 | 日韩黄色片在线观看 | 嫩嫩的freehdxxx| 在线免费观看毛片 | 182tv成人福利视频免费看 | 91亚洲精品一区二区福利 | 日本网站一区二区三区 | 久草在线综合 | 欧美一级片一区 | 成人资源在线观看 | 亚洲天堂ww | 天天操很很操 | av电影网在线观看 | 福利一区二区三区视频在线观看 | 久久久久成人精品亚洲国产 | 得得啪在线视频 | 黄色影院网站 | 国产又白又嫩又紧又爽18p | 久久国产亚洲视频 | 青青青在线免费 | 黄色一级片免费观看 |