學習Java的Day05

来源:https://www.cnblogs.com/ZhuX-H/archive/2020/06/29/13210047.html
-Advertisement-
Play Games

知識點 關鍵字,常用類(super,static,final): super 子類對父類的引用,只能在非靜態方法中使用 引用父類的成員變數的格式為 super.成員變數名稱 引用父類的非靜態方法的格式為 super.方法名(參數列表) 引用父類的構造方法的格式為 super(參數列表) final ...


知識點

關鍵字,常用類(super,static,final):

super

  • 子類對父類的引用,只能在非靜態方法中使用
  • 引用父類的成員變數的格式為 super.成員變數名稱
  • 引用父類的非靜態方法的格式為 super.方法名(參數列表)
  • 引用父類的構造方法的格式為 super(參數列表)

final

  • final修飾這個類就不能被繼承,但不影響創建對象,如系統的String類
  • final修飾的方法不能被重寫,但父類中沒有被final修飾方法,子類覆蓋後可以加final。
  • final修飾局部變數,只能夠賦值一次,當修飾的是引用的類型時,不能被重新賦值,但是可以修改對象的屬性
  • final修飾成員變數,最終的變數,常量,固定的值,一定要初始化,不能被二次賦值。

static(開發中慎用,會很耗記憶體

  • 靜態的,成員信息在類中在方法區中,常量池(常量值),靜態記憶體區(靜態成員信息)。
  • 不能修飾類,但是可以修飾方法,該方法是靜態方法,在類中,通過類區執行調用。
  • 被static修飾的變數,是靜態變數,在類中。靜態全局變數:靜態屬性-->在類中存儲,被所有對象共用。

思考:super,this 與 static 為什麼不能共存????

  static靜態的,是不變的,在java中static修飾成員屬性,方法時,表示該屬性/方法可以被類名直接調用,如工具類等

而this代表本類對象的引用,通常用與成員變數與局部變數重名時。

  super代表子類對父類滿參構造函數的初始化,也是需要產生對象才可以使用但是考慮到虛擬機載入順序為先載入類,當被實例化才產生對象。所以如果並存則表示類和對象同時載入,顯然是不合邏輯的。

 

代碼塊:

  • 局部代碼塊
    • 定義在方法中,用戶劃分區域的。( {}:作用域啊,劃定工作區間 )
  • 構造代碼塊
    • 構造代碼塊和方法併列,定義在類成員變數位置的代碼塊,每次創建對象的時候都會執行,優先於構造方法
    • 內容寫的是語句,聲明變數,不能實現功能體(方法)。
  • 靜態代碼塊
    • 定義在類的成員變數位置的用static修飾的代碼塊。
    • 它優先於當前類主方法執行、優先於構造代碼塊執行,當以任意形式第一次使用到該類時執行。
    • 該類不管創建多少對象,靜態代碼塊只執行一次。
    • 可用於給靜態變數賦值,用來給類進行初始化,初始化成員變數,載入一些成員信息。

  執行順序:父類靜態代碼塊>子類靜態代碼塊>main函數>構造代碼塊>構造方法

 

(註意:方法只能併列使用,不能嵌套使用!!!!!!!!!)

訪問修飾符

–-------------- public protected default private
同一類中

同一包中

(子類與無關類)

 
不同包的子類    
不同包中的無 關類      

 

註意:

  • 對於protected不同包中的子類只能在子類內部調用,在外部子類是無法調用成員變數和方法的

  • 在不同包下的無關類中,只能訪問public修飾的成員信息

  • 在不同包的子類中,子類的對象是可以訪問被protected修飾的父類的成員信息的

 

 

系統常用類:

API ---> Application Interface  應用程式介面

java中的五大常用包: java.lang、 java.util、 java.io、 java.net、 java.sql

object類

equals方法在非空對象引用上實現等價關係:

  • 自反性 :對於任何非空的參考值xx.equals(x)應該返回true
  • 它是對稱的 :對於任何非空引用值xyx.equals(y)應該返回true當且僅當y.equals(x)回報true
  • 傳遞性 :對於任何非空引用值xyz ,如果x.equals(y)回報truey.equals(z)回報true ,然後x.equals(z)應該返回true
  • 它是一致的 :對於任何非空引用值xy ,多次調用x.equals(y)始終返回true或始終返回false ,沒有設置中使用的信息equals比較上的對象被修改。
  • 對於任何非空的參考值xx.equals(null)應該返回false
  • equals類方法Object實現對象上差別可能性最大的相等關係; 也就是說,對於任何非空的參考值xy ,當且僅當xy引用相同的對象( x == y具有值true )時,該方法返回true
  • 請註意,無論何時覆蓋該方法,通常需要覆蓋hashCode方法,以便維護hashCode方法的通用合同,該方法規定相等的對象必須具有相等的哈希碼。

toString方法返回一個“textually代表”這個對象的字元串。 結果應該是一個簡明扼要的表達,容易讓人閱讀。 建議所有子類覆蓋此方法。

    該toString類方法Object返回一個由其中的對象是一個實例,該符號字元`的類的名稱的字元串@

    和對象的哈希碼的無符號的十六進位表示。

    換句話說,這個方法返回一個等於下列值的字元串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

string類

  •   String類代表字元串。 Java程式中的所有字元串文字(例如"abc" )都被實現為此類的實例。

  •   字元串不變; 它們的值在創建後不能被更改。 字元串緩衝區支持可變字元串。

  •    因為String對象是不可變的,它們可以被共用。

 

練習代碼:

/*
自己創建一個類,寫一個靜態方法,傳入一個int數組,得 到一個字元串[元素1,元素2,….]
 */
public class HomeWork02 {
    public static void main(String[] args) {
        int[]  arr = new  int[]{1,55,66,99,88,74,22,44,32,22};

        System.out.print("[");
        for (int  i = 0;i<arr.length;i++){

            if (i!=arr.length-1){
                System.out.print(arr[i]+",");
            }else {
                System.out.print(arr[i]);
            }
        }
        System.out.println("]");
    }
}

  

public class HomeWork01 {
    public static void main(String[] args) {
        // 在控制台輸入字元串,統計出大寫的字元的個數,小寫的字元個數,數字類型的字元個數,以及其他字元的個數
        Scanner sc = new Scanner(System.in);
        int big = 0;
        int small = 0;
        int num = 0;
        int other = 0;

        System.out.println("請輸入一串字元串");
        String str = sc.next();

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 65 && str.charAt(i) <= 90) {
                big++;
            } else if (str.charAt(i) >= 97 && str.charAt(i) <= 122) {
                small++;
            } else if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
                num++;
            } else {
                other++;
            }
        }
        System.out.println("大寫字母有:" + big + "個");
        System.out.println("小寫字母有:" + small + "個");
        System.out.println("數字有:" + num + "個");
        System.out.println("其他字元有:" + other + "個");
    }

}

  

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 小白是一名.net程式員,之前小白介紹了過了自己的博客系統http://www.ttblog.site/,用.net寫厭了,所以想學下java嘗嘗鮮,於是小白準備用spring boot來實現一個博客內容管理系統。 因為管理系統要有自己的數據源,但是又要從博客系統獲取博客內容,所以第一反應是要弄一個 ...
  • 初次看到原文我是有一些震撼的,原來作為開發人員,閑暇時間還算可以做這麼多有趣程式的開發。閱讀時暫且拋棄你所使用的語言的限制,你是否也能夠在“無聊”之時找到一個開發者的樂趣。 閱讀以下內容時重點關註項目的創意性,並結合自己的獨特經歷進行拓展,你一定也能夠找到編程的樂趣所在。很多項目都可以通過不同的技術 ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 知識點 • 企業資產介紹 • 財務分析方法 • 企業資產數據爬取 • 企業資產數據展示 企業資產介紹 企業的資產包括流動資產、固定資產、無形資產、股東權益等等,本次給大家介紹 ...
  • 主要梳理一下SpringBoot2.x的依賴關係和依賴的版本管理,依賴版本管理是開發和管理一個SpringBoot項目的前提。 SpringBoot其實是通過starter的形式,對spring-framework進行裝箱,消除了(但是相容和保留)原來的XML配置,目的是更加便捷地集成其他框架,打造 ...
  • 1.迭代器 迭代器為我們提供了統一遍歷容器(List/Map/Set)的方式 1.遍歷List或Set 2.遍歷Map 2.Collections工具類 類java.util.Collections提供對Set、List、Map進行排序、填充、查找元素的輔助方法 1.void sort(List): ...
  • 為了方便大家理解我把之前方案的圖片複製過來了,如下: 上圖的方案存在一個問題,就是我們今天文章要聊的內容。 這個問題就是當 MQ Consumer 收到消息後,就直接發佈 Event 了,如果是同步的,沒有問題。如果某個 EventListener 中處理失敗了,那麼這條消息將不會 ACK。 如果是 ...
  • 帶你捅破窗戶紙 Bash Shell 30min 過家家.zip 備註 : @博客園 : 1. 為什麼不支持 pdf 上傳了呀 2. 網站分類不好用 3. 排版OA工具升級下, 例如 markdown 寫出來好醜. 嘗試升級下呢 ? ...
  • 在項目開發中經常會遇到花錢抽獎類型的需求。但是老闆總是擔心用戶用小錢抽到大獎。這樣會導致項目虧損。下邊這段代碼可以有效制止抽獎項目虧錢。 個人獎池: 語言:thinkphp redis mysql 表:desire抽獎商品表 desire_log用戶抽獎獎品表 user_desire_log用戶抽獎 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...