java基礎知識總結(1)

来源:http://www.cnblogs.com/niuniunvshen/archive/2016/09/23/5902100.html
-Advertisement-
Play Games

定義類: 訪問修飾符 class 類名{ } 訪問修飾符如:public 、priate是可選的 class是聲明類的關鍵字 按照命名規範,類名首字母大寫 例:創建“人”類,關鍵代碼: public class Person{ } ********************************** ...


定義類: 訪問修飾符 class 類名{ }   訪問修飾符如:public 、priate是可選的 class是聲明類的關鍵字 按照命名規範,類名首字母大寫   例:創建“人”類,關鍵代碼: public class Person{ } ********************************************************** 定義屬性: 訪問修飾符 數據類型 屬性名;   訪問修飾符士可選的 除了訪問修飾符之外,其他的語法和聲明變數是一致的   例:創建“人”類,名為“人”類添加相應屬性,關鍵代碼: public class Person{ public String name; public String gender; public int age; }   ********************************************************** 定義方法: 訪問修飾符 返回類型 方法名稱(參數類型 參數名1,參數類型 參數名2,……){ }   訪問修飾符是可選的 返回類型可以是void,在定義方法時,返回類型為void時,表明沒有返回值,方法體中不必使用“return”關鍵字返回具體數據,但是可以使用“return”關鍵字退出方法 返回類型不為“void”,那麼在方法體中一定要使用“return”關鍵字返回對應類型的結果,否則程式會有編譯錯誤 小括弧中的“參數類型 參數名1,參數類型 參數名2,……”稱為參數列表 當需要在方法執行的時候為方法傳遞參數時才需要參數列表,如果不需要傳遞參數時就可以省略,不過小括弧不可以省略,傳遞多個參數時,以半形的括弧進行分隔   例:在“人”類中定義方法,描述人工作的行為,關鍵代碼: public class Person{ public String name; public String gender; public int age; public void work( ){ System.out.println(this.name+"的工作理念:為夢想而努力奮鬥); } }   ********************************************************** 創建和使用對象: 1、創建對象 類名 對象名 = new 類名();   new 是關鍵字 左邊的類名為對象的數據類型 右邊的類名()稱為類的構造方法   例:創建Person類的對象,關鍵代碼: Person lilei = new Person( );     2、使用對象 對象名 . 屬性             //引用對象的屬性 對象名 . 方法名         //引用對象的方法   例:對象屬性賦值並調用方法 public static void main(String[] args){ Person lilei = new Person( ); lilei.name = "李雷"; lilei.gender = "男"; lilei.age = 22; lilei.work( ); }   ********************************************************** 成員方法: 1、帶參數的方法   創建work()方法時定義的參數叫做形式參數,簡稱形參。調用方法時傳入的參數叫做實際參數,簡稱實參。   2、方法重載: 方法名相同,參數列表不同,就形成了方法重載   特點:在同一個類中,方法名相同,參數的個數或類型不同 ********************************************************** 成員變數: 1、成員變數:類中的屬性,直接在類中定義的變數,定義在方法的外部。PS:成員變數可以在聲明時賦初始值,如果沒有賦值,java會給它一個預設值,基本數據類型的值為0,引用類型的值為null 2、局部變數:定義在方法中的變數,一般情況下,在使用前需要賦值,否則會編譯出錯 ********************************************************** 構造方法: 主要作用是進行一些數據的初始化 訪問修飾符 方法名(參數列表){方法體}   構造方法沒有返回值 預設構造方法沒有參數,因此參數列表可選(預設構造無參方法的快捷鍵:Alt+/) 構造方法的方法名與類名相同 如果寫了帶參的構造方法,必須要生成一個無參的構造方法   例:為Person類定義一個構造方法,關鍵代碼: public class Person{ public Person(){ this.name = "李雷"; } }   在一個類中可以定義多個重載的構造方法   this關鍵字是對一個對象的預設引用,每個實例方法內部,都有一個this引用變數,指向調用這個方法的對象 因為this是在對象內部指代自身的引用,所以this只能調用實例變數、實例方法和構造方法。this不能調用類變數和類方法,this也不能調用局部變數。 1)使用this調用成員變數,解決成員變數和局部變數的同名衝突。 2)使用this調用成員方法 3)使用this調用重載的構造方法,只能在構造方法中使用,且必須是構造方法第一條語句 例: public Penguin(String name,String sex){ this.name = name; this.sex = sex; } public Penguin(String name, int health, int love, String sex){ this(name,sex); this.health = health; this.love = love; }   ********************************************************** 封裝的步驟: 封裝: 用OOP方式完成變數的聲明、賦值、使用 完成2次(聲明、賦值、使用):1、封裝的類 聲明 賦值 使用 2、封裝類裡面屬性的聲明 賦值 使用   1、修改屬性的可見性 將Person類中的屬性由public修改為private即可。   例:請將Person類的屬性私有化,關鍵代碼: public class Person{ private String name; private String gender; private int age; }   2、設置setter/getter()方法   例:請為Person類中的私有屬性添加setter/getter()方法,關鍵代碼: public class PrivatePerson{ private String name; private String gender; private int age; public String getName(){ return name; } public void setName(String name){ this.name = name; } public String getGender(){ return gender; } public void setGender(String gender){ this.gender = gender; } public int getAge(){ return age; } public void setAge(int age){ this.age = age; } }   3、設置屬性的存取限制 此時,屬性仍然沒有限製作用,需要進一步利用條件判斷語句進行限制 例見myeclipse -->practise-->SetPerson   ********************************************************** 定義包: package 包名   package是關鍵字 報的聲明必須是java源文件中的第一條非註釋性語句,而且一個源文件只能有一個包聲明語句,設計的包需要與文件系統結構相對應。因此,在命名包時,要遵守以下編碼規範: a、一個唯一的包名首碼通常是全部小寫的ASCII字母,並且是一個頂級功能變數名稱com、edu、gov、net、及org,通常使用組織的網路功能變數名稱的逆序。例如,如果功能變數名稱為javagroup.net,可以聲明包名為“pacage net.javagroup.mypackage" b、包名的後續部分依不同機構各自內部的規範不同而不同。這類命名規範可能以特定目錄名的組成來區分部門、項目、機器或註冊名,如“package net.javagroup.research.powerproject"   ********************************************************** 包的使用: 包從大到小寫:網址倒過來 1、聲明包的含義是聲明當前類所處的位置 2、導入包的含義是聲明在當前類中要使用到的其他類所處的位置   //講Person類放入pack1包中 package cn.bdqn.pack1; public class Person{ ……省略代碼 } //將PersonTest類放入pack2包中 //使用Person類時,需要使用import將其導入 package cn.bdqn.pack2; import cn.bdqn.pack1.Person; public class PersonTest{ public static void main(String[] atgs){ ……省略代碼 } }   ********************************************************** 類成員的訪問修飾符: 作用域:   同一個類中   同一個包中   子類   任何地方 private     可以     不可以    不可以   不可以 預設修飾符     可以     可以    不可以   不可以 protected    可以     可以     可以     不可以 public        可以     可以     可以    可以 ********************************************************** static關鍵字的修飾屬性: static修飾的屬性稱為靜態變數或者類變數,沒有使用static修飾的屬性稱為實例變數。   例:將Person類的name、gender和age屬性保留,新建一個static修飾的屬性,並調用 ,關鍵代碼: public Person{ public String name; public String gender; public static int age; public static int PERSON_LIVE; //……省略代碼 } //以上為Person類代碼,以下為調用代碼 //……省略代碼 Person hanbing = new Person(); hanbing.name = "韓冰"; hanbing.gender = "女"; hanbing.age = 22; Person.PERSON_LIVE = 1;   實際開發中,static關鍵字修飾屬性的最常用場景就是定義使用final關鍵字修飾的常量。使用final關鍵字修飾常量在整個程式運行時都不能被改變,和具體的對象沒有關係,因此使用static修飾, 如“static final  int PERSON_LIVE=1"   PS:  1、常量名一般由大寫字母組成 2、聲明常量時一定要賦初值   ********************************************************** static關鍵字的修飾方法: static修飾的方法稱為靜態方法或者類方法,不用static關鍵字修改的方法稱為實例方法。   例:將Person中的showDetails()方法使用static關鍵字修飾,並調用 ,關鍵代碼: public Person{ public String name; public String gender; public static int age; public static void showDetails(String name,String gender,int age){ System.out.println("姓名是:"+name+",性別為:"+gender+",年齡是:"+age); } } //以上為Person類代碼,以下為調用代碼 public class PersonTest{ public static void main(String[] args){ Person liudun = new Person(); Person.showDetails("劉頓","男",23); } }   1、在靜態方法中不能直接訪問實例變數和實例方法。 2、在實例方法中可以直接調用類中定義的靜態變數和靜態方法 ********************************************************** 4種基本行為: 1)訪問修飾符:公共的 私有的 受保護的 預設的 2)返回類型: 有:變數的定義 數據類型 變數名 沒有:void 3)方法名:和類名的規範類似 a、方法名首字母小寫 b、方法名由多個單片語成,從第二個單詞開始,首字母大寫 c、方法名要有意義 4)參數: 有:變數的聲明部分(boolean flag) 沒有:() 5)方法體:作用域{ } a、併列:多個方法可以併列 b、嵌套:方法不能嵌套;可以嵌套流程式控制制 {if ( ) { }} 第一種基本行為:訪問修飾符 沒有返回類型 方法名(沒有){ } 例:public void add( ){ } 第二種基本行為:訪問修飾符 沒有返回類型 方法名(有){ } 例:public void add (int num1,int num2){ } 1、變數聲明的過程:形參 形式上的參數 2、變數賦值的過程:實參 實際上的參數 第三種基本行為:訪問修飾符 有返回類型 方法名(沒有){ } 例:public int add( ){ } 1、關鍵字:return 後面寫的是變數名,返回類型位置寫的是變數的數據類型 2、return後面不能再寫代碼了 第四種基本行為:訪問修飾符 有返回類型 方法名(有){ } 把第二種和第三種合在一起 例:public int add(int num1,int num2){ }   ********************************************************** 繼承的語法: 訪問修飾符 class <SubClass> extends <SuperClass>{ }   在java中,繼承通過extends關鍵字實現,其中SubClass稱為子類,SuperClass稱為父類或基類。 訪問修飾符如果是public,那麼該類在整個項目可見。 不寫訪問修飾符,則該類只在當前包可見。   在java中,子類可以從父類中繼承以下內容: 可以繼承public和protected修飾的屬性和方法,不論子類和父類是否在同一個包里 可以繼承預設訪問修飾符修飾的屬性和方法,但是子類和父類必須在同一個包里 無法繼承父類的構造方法   ********************************************************** super使用的語法: 訪問父類構造方法:super(參數) 訪問父類屬性/方法:super.<父類屬性/方法>   super只能出現在子類(子類的方法和構造方法)中,而不是其他位置 super用於訪問父類的成員,如父類的屬性、方法、構造方法。 具有訪問許可權的限制,如無法通過super訪問private ********************************************************** 實例化子類對象: 在java中,一個類的構造方法在如下兩種情況中總是會執行: 1、創建該類的對象(實例化) 2、創建該類的子類的對象(子類的實例化) 因此,子類在實例化時,會首先執行其父類的構造方法,然後才執行子類的構造方法。   子類繼承父類時構造方法的調用規則如下: 1、如果子類的構造方法中沒有通過super顯示調用父類的有參構造方法,也沒有通過this顯示調用自身的其他構造方法,則系統會預設先調用父類的無參構造方法。在這種情況下,是否寫super()語句,效果是一樣的。 2、如果子類的構造方法中通過super顯示調用父類的有參構造方法,那麼將執行父類相應的構造方法,而不執行父類無參構造方法。 3、如果子類的構造方法中通過this顯示調用自身的其他構造方法,在相應構造方法中應用以上兩條規則 如果存在多級繼承關係,在創建一個子類對象時,以上規則會多次向更高一級父類應用,一直到執行頂級父類Object類的無參構造方法為止。 ********************************************************** Object類: Object類是所有類的父類。在java中,所有java類都直接或間接的繼承了java.lang.Object類   關鍵代碼: public class Person{ } //兩種寫法等價 public class Person extends Object{ }   **********************************************************                         Object類的部分方法 方法 說明 toString() 返回當前對象本身的有關信息,按字元串對象返回 equals() 比較兩個對象是否是同一個對象,若是,返回true clone() 生成當前對象的一個副本,並返回 hashCode() 返回該對象的哈希代碼值 getClass() 獲取當前對象所屬的類信息,返回Class對象 ********************************************************** 方法重寫和方法重載的區別:   比較項   位置   方法名   參數表     返回值       訪問修飾符 方法重寫  子類   相同     相同    相同或是其子類   不能比父類更嚴格 方法重載  同類   相同    不相同      無關         無關 ********************************************************** 多態: 例:寵物類Pet,有幾個子類,寵物類定義了看病的方法toHospital(),子類分別重寫看病方法,關鍵代碼: class Pet{ public void toHospital(){ system.out.println(“寵物看病!”) } } class Dog extends Pet{ public void toHostipal(){ system.out.println(“小鳥看病”) } } public class Test{ public static void main(String[] args){ Pet pet; pet = new Dog(); pet.toHospital(); pet = new Bird(); pet.toHospital(); } }   示例中,Pet類一般聲明為抽象方法,因為其本身實例化沒有任何意義,toHopital()方法聲明為抽象類。   抽象類不能被實例化 子類如果不是抽象類,則必須重寫抽象類中的全部抽象方法 abstract修飾符不能和final修飾符一起使用 abstract修飾的抽象方法沒有方法體 private關鍵字不能修飾抽象方法 ********************************************************** 抽象方法: 抽象方法沒有方法體 抽象方法必須在抽象類里 抽象方法必須在子類中被實現,除非子類是抽象類 ********************************************************** 向上轉型的語法: 子類到父類的轉換稱為向上轉型 <父類型><引用變數名> = new <子類型>();   將一個父類的引用指向一個子類對象,稱為向上轉型,自動進行類型轉換 此時通過父類引用變數調用的方法時子類覆蓋或繼承父類的方法,不是父類的方法 此時通過父類引用變數無法調用子類特有的方法   ********************************************************** 向下轉型的語法: <子類型><引用變數名> = (<子類型>)<父類型的引用變數> ********************************************************** instanceof運算符: 用於判斷一個對象是否屬於一個類 在向下轉型的過程中,如果沒有轉換為真實子類類型,會出現類型轉換異常   例:判斷寵物類型,關鍵代碼: public class Test{ public static void main(String[] args){ Pet pet = new Bird(); pet.toHospital(); if(pet instanceof Dog){ Dog dog = (Dog) pet; dog.catchingFlyDisc(); }else if(pet instanceof Bird){ Bird biird = (Bird) pet; bird.fly(); } } }   使用instanceof時,對象的類型必須和instanceof後面的參數所指定的類在繼承上有上下級關係,否則會出現編譯錯誤。 ********************************************************** 多態的應用: 1、使用父類作為方法的形參 例:一個主人類,在該類中定義控制動物叫的方法。  關鍵代碼: class Host{ public void letCry(Animal animal){ animal.cry(); } } public class Test{ public static void main (String[] args){ Host host = new Host; Animal animal; animal = new Dog(); host.letCry(animal); animal = new Cat(); host.letCry(animal); animal = new Duck(); host.letCry(animal); } }   2、使用父類作為方法的返回值 使用父類作為方法的返回值,也是Java中實現和使用多態的主要方式 例:主人送出三種動物,送出的動物可以叫。  關鍵代碼: class Host{ public Animal donateAnimal(String type){ Animal animal; if(type=="dog"){ animal = new Dog(); }else if(type=="cat"){ animal = new Cat(); }else{ animal = new Duck(); } return animal; } } public class Test{ public static void main(String[] args){ Host host = new Host; Animal animal; animal = host.donateAnimal("dog"); animal.cry(); animal = host.donateAnimal("cat"); animal.cry(); } }                                                                    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2016年9月22日凌晨,微信宣佈“小程式”問世,當然只是開始內測了,微信公眾平臺對200個服務號發送了小程式內測邀請。那麼什麼是“小程式”呢,來看微信之父怎麼說 看完之後,相信大家大概都有些明白了吧,對於開發者來說或許都有些小激動吧,畢竟多關註一些新東西沒什麼不好。那麼問題是“小程式”只有200個 ...
  • 開頭不講"Hello Word",讀盡詩書也枉然 : Word 操作組件介紹 - Spire.Doc 【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5898368.html 序 本打算過幾天簡單介紹下組件 Spire.XLS,突然發現園友率先發佈了 ...
  • 原文地址:http://yacare.iteye.com/blog/2010049 很多伙伴在更新VS2010,或者卸載VS2012安裝2010後,建立Win32 Console Project/MFC項目時會出現"LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: ...
  • 招聘鏈接:https://job.cnblogs.com/offer/53380/ 工作地點:北京-海澱 工作年限:1年 學歷要求:本科 招聘分類:移動開發工程師 工資範圍:面議 1、扎實的 C#基礎 2、熟練掌握 xaml 頁面開發,懂得響應式佈局 3、至少1年 uwp開發經驗 4、掌握 C/C+ ...
  • 1 java數據類型。8種基本類型,3種引用類型 基本類型(也稱:原始類型):byte、short、int、long、char、float、double、boolean 引用類型:類,介面,數組 2 java基本數據類型 Java 基本類型共有八種,基本類型可以分為三類,字元類型char,布爾類型b ...
  • 像我們搞電腦這塊的,都知道這麼一件事,當前的電腦編程語言主要分為兩大塊,一為面向過程,二為面向對象。Java就是一門純面向對象的語言。學習了一個月左右的Java,在下對於Java當中的類和對象有了基本的認識。接下來我就來談談自己的看法,各位大神勿噴,新手小白敬上。 既然談到類和對象,首先,我們要 ...
  • Atitit 自動化gui 與 發帖機 技術 1.1. Gui tech1 1.2. 自動化軟體測試1 1.3. selenium attilax1 1.4. 圖形腳本語言Sikuli1 1.5. Dom1 1.6. Jsbridge1 1.7. Browser tech1 1.1. Gui tec ...
  • Atitit.ide技術原理與實踐attilax總結 1.1. 語法著色1 1.2. 智能提示1 1.3. 類成員outline..func list1 1.4. 類型推導(type inference): 1 1.5. Remote debug1 1.6. debugging api包一個gui就 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...