日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

on java 8学习笔记

發布時間:2024/4/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 on java 8学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2022.2.15

第三章

  • new 關鍵字創建出來的對象位于堆中,而基本數據類型則會被創建在棧中

  • { int x = 12;{int x = 96; // 語法錯誤} }

    這種寫法在java中是錯的,但在c++里是允許的

  • 字段(有時叫作“數據成員”)和方法(有時叫作“成員函數”)

  • 如果變量作為類成員而沒被初始化過就會被java默認初始化,但是如果變量是類的方法中的,那么就不會被默認初始化

  • public class test {public double f(){return 1.0;}public static void main(String[] args){int x= (int) new test().f();} }

    進行強轉就不會報錯了

  • 有關于improt,我想看書的應該沒幾個是正常用記事本寫java的把,應該都是用的ide吧,我試著用記事本的import寫法發現不太行,然后我找到了這篇文章https://blog.csdn.net/weixin_40268421/article/details/111593086

  • 為什么要有static

    第一種情況是,有時候我們需要一小塊共享空間來保存某個特定的字段,而并不關心創建多少個對象,甚至有沒有創建對象。第二種情況是,你需要使用一個類的某個方法,而該方法和具體的對象無關;換句話說,你希望即便沒有生成任何該類的對象,依然可以調用其方法。

  • 由于所有的 Java 代碼文件都默認導入了java.lang,所以列表中的類我們都可以直接調用。

  • main()的參數是一個String對象的數組,雖然目前我們并不會使用args參數,但 Java 編譯器會強制你傳遞該參數,因為它用于獲取控制臺的輸入。

  • 第四章 操作符

  • 牢記一點吧,都是引用,而在java中引用實際上就是值

  • 出于效率原因,Integer會通過享元模式來緩存范圍在-128~127內的對象,因此多次調用Integer.valueOf(127)生成的其實是同一個對象。而在此范圍之外的值則不會這樣,比如每次調用Integer.valueOf(128)返回的都是不同的對象。因此需要特別注意,在進行==和!=的比較時,范圍不同的值生成對象的方式并不一樣,這會影響到比較的行為,從而產生不同的結果。另外,通過new Interger()生成的對象都是新創建的,無論其值處于什么范圍。所以通過不同方式創建的Integer對象,也會影響到比較的結果。——譯者注

  • 在Java 9及更新版本中已經棄用new Integer(),因為它的效率遠遠低于Integer.valueOf()。

  • .equal()的默認方法是只比較對象的引用,所以.equal()方法最好自己重寫一下

  • 在Java中,把int類型當作boolean類型并不合法

  • 基本浮點型轉化位整型,小數點后無論多大都不會被四舍五入,除非round方法

  • 基本數據類型在java算術中依舊存在溢出風險且不會報錯

  • 注意Java不允許將數字當作布爾值使用,雖然這在C和C++里是允許的

  • 第五章 控制流

  • for循環的步進部分都是出了循環然后步進再進行布爾表達式判定

  • java 類名 字符串1

    字符串1就是main中的參數

  • 關于0.0-1.0開區間閉區間那個,按作者的意思,因為可能性太小,所以不一定會出來0.0,即便它包括了0.0.

  • 第六章 初始化和清理

  • 之所以使用構造器方法這種形式創建和初始化對象,是為了避免對象的創建和初始化分離開導致的錯誤

  • 方法重載中基本數據類型的所占字節數如果小于了重載方法中占最小字節數的基本數據類型,則被傳入的基本數據類型會被轉化為這個重載方法中占最小字節數的類型,比如傳入的是int,最小最小字節數為long ,則會被轉化為long類型;如果傳入的數據類型比重載方法的參數類型更大,那么必須強制轉化成小的,不然報錯

  • 你可能會想:“為什么只通過參數列表來區分重載方法?為什么不根據方法的返回值來區分?”比如下面定義的兩個方法雖然具有相同的名字和參數,但很容易就能通過返回值區分開來:

    void f() {} int f() { return 1; }

    只有編譯器能從上下文中明確地判斷出語句的含義,這種方式才是可行的。比如在int x = f()中,x的類型能夠告訴編譯器,我們想要調用哪個版本的f(),但還可以調用f()并忽略它的返回值。這被稱為調用方法的副作用,此時我們不關心返回值,而只是想要方法調用的其他效果。因此,如果這樣調用方法:

    我想從另一個角度說一下吧,因為這本身就存在歧義,因為java中方法其實就是c語言中的函數,那么你見過哪個函數一個x值可以對應兩種不同的y值還有行為的,這又不是賭命

    f();

    此時Java如何確定應該調用哪個f()?閱讀代碼的人又該如何理解它呢?由于存在這些問題,我們不能使用返回值類型來區分重載方法。

  • this關鍵字只能在非靜態方法中使用。

    其實感覺吧構造器除外

  • this的使用

  • this可以讓你得到當前對象的引用

  • 盡量在本類調用方法時不用this.方法名()

  • return this 在方法中可以實現同一個對象不斷使用一個方法,例如

    person.方法名().方法名().方法名()
  • 將自身引用傳給外部類或者方法

  • 編譯器禁止在非構造器的普通方法里調用構造器。
  • 不能同時調用兩個構造器
  • 構造器調用必須出現在方法的最開始部分,否則編譯器會報錯。
  • 這里第三點指的應該時構造器方法

  • 靜態方法也可以創建自己的對象

    public class test {public static void f(){class a {public a(){System.out.println("hello");}}new a();}public static void main(String[] args){test.f();} }
  • public class test {int i =1;public test(int i){i=i;System.out.println(i);}public static void main(String[] args){new test(5);} }

    這么做是合法的

  • 其他

  • 有關于內存泄漏的概念https://zh.wikipedia.org/wiki/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F

    簡單來說就是已經不用的內存沒有還給系統

  • 有關于析構函數,雖然我還沒看https://docs.microsoft.com/zh-cn/cpp/cpp/destructors-cpp?view=msvc-170

  • 總結

    以上是生活随笔為你收集整理的on java 8学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。