Java學習第八天

来源:https://www.cnblogs.com/demain/archive/2019/08/03/11296397.html
-Advertisement-
Play Games

1、多態中成員的特點: 1:成員變數: 編譯時期看父類,運行結果看父類 2:成員方法: 編譯時期看父類,運行結果看子類(子類把方法重寫了) 3:靜態方法: 編譯時期看父類,運行結果看父類 2.Object:根類,超類,對所有對象共性的提取,所有 任何類,如果沒有書寫extends顯示繼承某個類,都默 ...


1、多態中成員的特點:
  1:成員變數: 編譯時期看父類,運行結果看父類
  2:成員方法: 編譯時期看父類,運行結果看子類(子類把方法重寫了)
  3:靜態方法: 編譯時期看父類,運行結果看父類


2.Object:根類,超類,對所有對象共性的提取,所有
    任何類,如果沒有書寫extends顯示繼承某個類,都預設直接繼承Object類
    Object類中所定義的方法,是所有對象都具備的方法(11個方法,可以自己查一下api吧)
  特點:
  Object類型可以存儲任何對象:
  作為參數,可以接受任何對象
  作為返回值,可以返回任何對象
  例如:
  boolean equals(Object obj);

3.當輸出一個對象時,預設調用了 toString()方法,預設toString()方法返回:類名@對象的哈希值

1.預設實現
int hash=ren1.hashCode();
System.out.println(Integer.toHexString(hash));

//得到對象對應的位元組碼
Class classz=ren1.getClass();//Person.class 被面向對象了 Class
String name = classz.getName();
System.out.println(name);
//最後結合輸出
System.out.println(ren1.getClass().getName()+"@"+Integer.toHexString(ren1.hashCode()));

2.通常重寫toString(),返回屬性的值
public String toString(){
  return name+","+age;
}

 

 4.模板設計模式:在實現一個功能時,功能的一部分是確定的,一部分是不確定的,確定的部分會用到不確定的部分

      那麼就把不確定的部分暴露出去,讓子類去實現

 1 例如:計算程式運行的時間
 2 abstract class TimeTool
 3 {
 4     public final void tongJiTime()
 5     {
 6         //在程式運行前記錄一個時間
 7         long start=System.currentTimeMillis();
 8 
 9         //功能代碼
10         fun();
11 
12          //在程式運行後記錄一個時間
13          long end=System.currentTimeMillis();
14          System.out.println("程式運行時間為:"+(end-start)+"毫秒");
15     }
16     public abstract void fun();
17 }
18 
19 class Test extends TimeTool
20 {
21     public void fun(){
22         for(int i=1;i<=3000;i++)
23         {
24             System.out.println(i);
25         }
26     }
27 }
28 class Demo4 
29 {
30     public static void main(String[] args) 
31     {
32         Test test = new Test();
33          test.tongJiTime();
34     }
35 }    

 

 5.內部類:在一個類的內部定義的類就叫內部類(把內部類看成成員),成員和成員之間可以相互使用

內部類的特點:
1.編譯後可生成獨立的位元組碼文件
2.內部類可直接訪問外部類的私有成員,為不破壞封裝
3.可為外部類提供必要的內部功能組件

 

6.內部類的位元組碼:外部類$內部類.class

7.什麼時候需要定義內部類?需要描述事物內部的事物

 

8.成員內部類:在類的內部定義,與實例變數、實例方法同級別的類
       外部類的一個實例部分,創建內部類對象時,必須依賴外部類對象
 
   特點:當外部類、內部類存在重名屬性時,會優先訪問內部類屬性
      成員內部類不能定義靜態成員

 1 class Outer{
 2 
 3 class Inner{
 4 
 5 }
 6 }
 7 
 8 class Outer{
 9 
10 static class Inner{
11 public static void show(){}
12 }
13 }
14 
15 Outer out=new Outer();
16 Inner in=out.new Inner();

    內部類訪問外部類對象: 外部類名.this

      內部類訪問外部類對象中的成員,外部類名.this.成員名


9.靜態內部類:內部類屬於成員,所以可以被static修飾,內部類中的方法是靜態的,那麼內部類必須是靜態的
      不依賴外部類對象,可直接創建或通過類名訪問,可聲明靜態成員

      只能直接訪問外部類的靜態成員(實例成員需實例化外部類對象)
      Outer.Inner inner=new Outer.Inner();
      Outer.Inner.show();

10.局部內部類:定義在外部類的方法中,作用範圍和創建對象範圍僅限於當前方法
       局部內部類訪問外部類當前方法中的局部變數時,因為無法保障變數的生命周期與自身相同,變數必須修飾為final
       限制類的使用範圍(jdk1.8開始,局部內部類使用的局部變數不需要使用final 修飾)


11.匿名內部類:沒有類名的局部內部類(一切特征都與局部內部類相同)
      特點:必須繼承一個父類或者實現一個介面
         定義類、實現類、創建對象的語法合併,只能創建一個該類的對象

         優點:減少代碼量
         缺點:可讀性較差

 1 適用於類和介面: new Object(){
 2 String name;
 3 public void show(){
 4 }
 5 }.show();
 6 
 7 Object obj= new Object(){
 8 String name;
 9 public void show(){
10 }
11 };
12 
13 
14 new inter(){
15 public void show(){
16 }
17 }.show();
18 
19 
20 inter tt=new inter(){
21 public void show(){
22 }
23 };

 

 


12.字元串: class final String extends Object

是常量,一旦定義了就不可以改變了
存儲在方法區的常量池
已經存在的字元串,再定義時直接使用已經存在的
重寫了equals()方法
String s=new String("hello");//產生兩個對象,堆、池中各存儲一個

  charAt(6)
  indexOf()
  lastIndexOf()
  contains()
  equals()
  equalsIgnoreCase()‘/
  startsWith()
  endsWith();


13.字元串獲取:
  獲取字元串的長度
  int length()
  獲取某一個位置上的字元
  char charAt(int index)
  獲取字元在字元串中的位置
  如果要找的字元或者字元串不存在,返回值為-1
  int indexOf(char ch)//返回字元在字元串中第一次出現的位置
  int indexOf(int ch, int fromIndex)//第二個參數用於指定開始找的位置

  int indexOf(String str) //獲取一個字元串在字元串中出現的位置
  int indexOf(String str, int fromIndex)//第二個參數用於指定開始找的位置

  int lastIndexOf(char ch)//最後一次出現的位置
14.字元串判斷:
  判斷是否包含一個字元串
  boolean contains(CharSequence s)
  判斷兩個字元串的內容是否相同
  boolean equals(Object anObject)
  忽略大小寫判斷兩個字元串的內容是否相同
  boolean equalsIgnoreCase(String anotherString)
  判斷是否以某字元串開頭
  boolean startsWith(String prefix)
  判斷是否以某字元串結尾
  boolean endsWith(String suffix)
15.字元串轉換:將字元數組轉換成字元串
  1:使用構造方法
   String(char[] value)
   String(char[] value, int offset, int count)
  2:使用靜態方法
   static String copyValueOf(char[] data)
   static String copyValueOf(char[] data, int offset, int count)
   將字元串轉成字元數組
   char[] toCharArray()

16.將位元組數組轉成字元串
   String(byte[] bytes)
   String(byte[] bytes, int offset, int length)
   String(byte[] bytes, String charsetName)//使用指定的編碼將位元組數組轉換成字元成
   將字元串轉成位元組數組
   byte[] getBytes()

   將基本數據類型轉換成字元串
   String.valueOf()
17.字元串替換:
   String replace(char oldChar, char newChar)

18.子串:
  String substring(int beginIndex)
  String substring(int beginIndex, int endIndex) //包含起始位置,不包含結束位置,到結束位置的前一位

19.轉換,去除空格,比較:
  大小寫轉換
  String toLowerCase()
  String toUpperCase()
  將字元串兩端的空格去掉
  String trim()
  按字典順序比較兩個字元串
  int compareTo(String anotherString)
20.切割: String[] split(String)


21.可變字元串:
  StringBuffer:可變長字元串,JDK1.0提供,運行效率慢、線程安全
  StringBuilder:可變長字元串,JDK5.0提供,運行效率快、線程不安全

22.BigDecimal:可精確計算浮點數


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在RocketMQ中,使用BrokerStartup作為啟動類,相較於NameServer的啟動,Broker作為RocketMQ的核心可複雜得多 【RocketMQ中NameServer的啟動源碼分析】 主函數作為其啟動的入口: 首先通過createBrokerController方法生成Brok ...
  • Bean 的生命周期指的是 Bean 的創建、初始化、銷毀的過程。Spring 提供了一些方法,可以讓開發自定義實現在生命周期過程中執行一些額外操作。 1、在註解 @Bean 中指定初始化和銷毀時執行的方法名。 2、實現初始化和銷毀介面 InitializingBean、DisposableBean ...
  • 1.定義: 在運行狀態中對於任意一個類都能夠知道這個類的所有屬性和方法,對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。 2.應用場景: 編碼階段不知道需要實例化的類名是哪個,需要在runtime從配置文件中載入 在runtime ...
  • 迭代器 迭代器可以用來遍歷字元串、列表、元組、集合、字典。 可以使用next()獲取下一個元素: 錯誤、異常處理 except語句 ecxcept語句用來捕獲、處理錯誤、異常。 as e as是關鍵字,e是e是捕獲的異常實例(對象),可以自己隨便取名。 如果異常處理中用不到捕獲的異常對象,可以不要a ...
  • Java 學習 day01 java的三大技術架構 Javase:java標準版,該體系的知識點主要是學習java基礎的知識點, 主要用於桌面應用軟體的開發。比如計算器,QQ軟體等。==市場上幾乎沒有人使用java去開發桌面應用程式,因為java在創立的時候定位該門語言是面向互聯網的一門語言。Jav ...
  • BeanFactory是Spring中非常重要的一個類,搞懂了它,你就知道了bean的初始化和摧毀過程,對於深入理解IOC有很大的幫助。 BeanFactory體繫結構 首先看一下使用IDEA生成的繼承層次圖(圖中去掉了ApplicationContext的繼承圖): 可以看到 下的介面主要分為三個 ...
  • Ural 1298 Knight 題解 [TOC] 題意 給定一個$n\times n(1\le n\le8)$的國際象棋棋盤和一個騎士(基本上相當於中國象棋的馬),問可否用經過每個格子$1$次。如果可以,輸出路徑,否則輸出 。 題解 考慮回溯。暴力程式十分好寫,但是會超時。 可以用啟髮式優化。 設 ...
  • 原文地址:https://yq.aliyun.com/articles/8611(肥俠)著作權歸原作者是所有。 概述 關於微服務的介紹,可以參考微服務那點事。 微服務是最近非常火熱的新概念,大家都在追,也都覺得很對,但是似乎沒有很充足的理論基礎說明這是正確的,給人的感覺是 不明覺厲 。前段時間看了M ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...