【從零開始學Java筆記】Java基礎

来源:https://www.cnblogs.com/zllk/archive/2020/04/07/12656995.html
-Advertisement-
Play Games

大家可以關註作者的賬號,關註從零開始學Java筆記文集。也可以根據目錄前往作者的博客園博客進行學習。本片文件將基於黑馬程式員就業班視頻進行學習以及資料的分享,並記錄筆記和自己的看法。歡迎大家一起學習和討論。 "【從零開始學Java筆記】目錄" 這裡的Java基礎並不是真正的Java基礎,而是一些無法 ...


大家可以關註作者的賬號,關註從零開始學Java筆記文集。也可以根據目錄前往作者的博客園博客進行學習。本片文件將基於黑馬程式員就業班視頻進行學習以及資料的分享,並記錄筆記和自己的看法。歡迎大家一起學習和討論。

【從零開始學Java筆記】目錄

這裡的Java基礎並不是真正的Java基礎,而是一些無法分類的Java知識,如果這裡有不懂得知識沒有關係,可以繼續學習下去。

Java關鍵字

Java關鍵字是電腦語言里事先定義的,有特別意義的標識符,有時又叫保留字,還有特別意義的變數。Java的關鍵字對Java的編譯器有特殊的意義,他們用來表示一種數據類型,或者表示程式的結構等,關鍵字不能用作變數名、方法名、類名、包名和參數。
——來自java關鍵字總結及詳解

首先大家需要瞭解一下什麼是關鍵字,但是並不需要死記硬背,大致瞭解即可,因為後期常用的那幾個關鍵字會被經常使用,自然就記住了。

Java 命名規範

1、項目名全部小寫
2、包名全部小寫
3、類名首字母大寫,其餘組成詞首字母依次大寫
4、變數名、方法名首字母小寫,如果名稱由多個單片語成,除首字母外的每個單詞的首字母都要大寫
5、常量名全部大寫
6、所有命名規則必須遵循以下規則 :

  • 只能由字母、數字、下劃線、$符號組成
  • 不能以數字開頭
  • 不能使用Java中的關鍵字

什麼是包

就是類似文件夾的一個東西,我們一般把Java文件按照需要裝在不同的包下麵

包的特點

可以有多層,例如java.util.Scanner,java是一個包,util也是一個包,Scanner是包下的一個類
不同包下的文件名可以重覆,相同包下不可重覆
包的聲明必須是第一行代碼

不同包之間的互相訪問

1.使用類的全名(包名.類名)

java.util.Scanner sc = new java.util.Scanner(System.in);

但是這樣十分繁瑣,所有我們引出了第二個方法
2.使用關鍵字import將類導入

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

註意: *代表的是通配符,代表導入了這個包下所有的類,並沒有導入子包下的類

foreach迴圈

foreach:增強for迴圈,一般用於遍歷集合或者數組
格式:
for(元素的類型變數:集合或者數組對象) {
可以直接使用變數;
}
舉例:

import java.util.ArrayList;
import java.util.Collection;

public class ForeachDemo {
	public static void main(String[] args) {
		Collection<String> c = new ArrayList<String>();
		
		c.add("hello");
		c.add("world");
		c.add("java");
		
		for(String i:c) {
			System.out.println(i);
		}
	}
}
輸出結果:
hello
world
java

包裝類

由於基本數據類型只能做一些簡單的操作和運算,所以Java為我們封裝了基本數據類型,為每種基本數據類型提供了包裝類。包裝類就是封裝了基本數據類型的類,為我們提供了更多複雜的方法和一些變數

數據類型 包裝類
byte Byte
short Short
char Character
int Integer
long Long
foat Float
double Double
boolean Boolean

Integer:
String -> int
方式1: int intValue( )
方式2: static int parseInt(String s)
int -> String
方式1: + " "
方式2: String toString()

構造方法:
Integer(int value)
Integer(String s)

自動裝箱和拆箱

JDK1.5特性:自動裝箱和拆箱

//自動裝箱
//相當於: Integer i = new Integer(10);
Integer i = 10;

//自動拆箱
//相當於int. a = i. intValue();
int a = i;

應用場景

ArrayList list = new ArrayList();
list . add(1);//自動裝箱,list.add(new Integer(1));

正則表達式

正則表達式:就是一套規則,可以用於匹配字元串

boolean matches(String regex) :判斷當前字元串是否匹配指定的正則表達式,如果匹配則返回true,否則返回false

常用正則表達式,全部表達式可以在API-String類-matches()方法中找到,如何查閱API請查看相應章節博客。
以下是常用的正則表達式

字元
x 字元 x
\ 反斜線字元
字元類
[abc] a、b 或 c(簡單類)
[^abc] 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍
預定義字元類
. 任何字元(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次

實例:校驗手機號碼是否輸入正確


public class RegexDemo {
    /*  <br>     2020年3月26日已知
    中國電信號段
        133,149,153,173,174,177,180,181,189,199
    中國聯通號段
        130,131,132,145,146,155,156,166,175,176,185,186
    中國移動號段
        134(0-8),135,136,137,138,139,147,148,150,151,152,157,158,159,165,178,182,183,184,187,188,198
    上網卡專屬號段(用於上網和收發簡訊,不能打電話)
        如中國聯通的是145
    虛擬運營商
        電信:1700,1701,1702
        移動:1703,1705,1706
        聯通:1704,1707,1708,1709,171
    衛星通信: 1349 <br>     未知號段:141、142、143、144、154
    */
    public static void main(String[] args) {
        
        //10位
        String mobile = "1316667777";
        //11位
        String mobile1 = "13166687777";
        //12位
        String mobile2 = "131666777799";
        //開頭不對
        String mobile3 = "23166687777";
        //帶有字母
        String mobile4 = "131666a7777";
        
        System.out.println(mobile.matches("^[1](([3|5|8][\\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\\d]{8}$"));
        System.out.println(mobile1.matches("^[1](([3|5|8][\\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\\d]{8}$"));
        System.out.println(mobile2.matches("^[1](([3|5|8][\\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\\d]{8}$"));
        System.out.println(mobile3.matches("^[1](([3|5|8][\\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\\d]{8}$"));
        System.out.println(mobile4.matches("^[1](([3|5|8][\\d])|([4][4,5,6,7,8,9])|([6][2,5,6,7])|([7][^9])|([9][1,8,9]))[\\d]{8}$"));
    }
    
 
}

泛型

由於集合可以存儲任意類型的對象,當我們存儲了不同類型的對象,就有可能在轉換的時候出現類型轉換異常,所以java為瞭解決這個問題,給我們提供了一種機制,叫做泛型。
泛型是一種廣泛的類型,把明確數據類型的工作提前到了編譯時期,借鑒了數組的特點
泛型好處:

  • 避免了類型轉換的問題
    可以減少黃色警告線
    可以簡化我們代碼的書寫

什麼時候可以使用泛型?
當我們看到在API中看到某個方法後有,就可以使用泛型了

匿名對象

匿名對象:沒有名字的對象
匿名對象的應用場景:
當方法只調用一次的時候可以使用匿名對象
可以當作參數進行傳遞,但是無法在傳參之前做其他的事情
註意:匿名對象可以調用成員變數並賦值,但是賦值並沒有意義

內部類

什麼是內部類?

在 Java 中,可以將一個類定義在另一個類裡面或者一個方法裡面,這樣的類稱為內部類。廣泛意義上的內部類一般來說包括這三種:成員內部類、局部內部類和匿名內部類。在開始學習Java的時候,可能會覺得內部類沒有什麼意義,但是在後期的學習中會發現,內部類可以有效地提高代碼的效率,讓你的代碼變得高效,優美。

成員內部類、局部內部類和匿名內部類的共性

  • 內部類仍然是一個獨立的類,在編譯之後會內部類會被編譯成獨立的.class文件,但是前面冠以外部類的類名和$符號。
  • 內部類不能用普通的方式訪問。內部類是外部類的一個成員,因此內部類可以自由地訪問外部類的成員變數,無論是否是private的。

成員內部類

在類的成員位置,和成員變數以及成員方法所在的位置是一樣的
在內部類當中,可以直接訪問外部類的成員,包括私有成員

成員內部類的修飾符:
我們可以使用許可權修飾符修飾成員內部類,但是如果使用私有來修飾,則無法在其他類中訪問
我們可以使用static修飾成員內部類,不用再創建外部類的對象了
我們可以使用abstract fina 修飾成員內部類

局部內部類

在方法內,出了方法之後就無法使用

匿名內部類

可以把匿名內部類看成是一個沒有名字的局部內部類
定義在方法當中
必須在定義匿名內部類的時候創建他的對象

格式:
new 類/介面(){
如果是創建了繼承這個類的子類對象,我們可以重寫父類的方法
如果是創建了實現這個介面的子類對象,我們必須要實現該介面的所有方法
};
原理:而是創建了繼承這個類的子類對象或者是創建了實現這個介面的子類對象

匿名內部類的應用場景

作為參數進行傳遞


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

-Advertisement-
Play Games
更多相關文章
  • "TOC" Spring Boot整合Servlet(兩種方式) 1. 新建一個maven項目 創建完成後的結構圖: 2. 引入pom.xml依賴 第一種方式(通過註解掃描方式完成Servlet組件的註冊): 1. 通過註解掃描方式完成Servlet組件的註冊 1.1. 創建一個Servlet 1. ...
  • "TOC" Spring Boot 簡介 Spring Boot 是所有基於 Spring 開發的項目的起點。Spring Boot 的設計是為了讓你儘可能快的跑起來 Spring 應用程式並且儘可能減少你的配置文件。SpringBoot不是什麼新的框架,它只是預設配置了很多框架的使用方式。 Spr ...
  • 一,安裝Ubuntu WSL 1.Windows中設置WSL並安裝Ubuntu wsl “控制面板”——>"程式”——>"啟用或關閉Windows功能"中勾選如下,否則安裝後無法開啟 在Windows商店中搜索Ubuntu並下載安裝 2.更換為國內源 將Ubuntu的更新源換到國內已獲得更好的體驗, ...
  • 在Linux中,我們一般將環境變數信息配置到不同的文件中,常用的配置文件有 /etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc ~/.bash _logout 上面幾個配置主要是在互動式登錄Shell和互動式非登錄Shell有區別,會載入不同的配置。 ...
  • 筆者:風起怨江南 出處:https://www.cnblogs.com/mengjinxiang 筆者原創,文章歡迎轉載,如果喜歡請點贊+關註,感謝支持! 前言:最近一直在其他博客論壇上寫Python的相關技術博客->https://blog.csdn.net/JackMengJin,計劃還是在博客 ...
  • 2019python之年: 2019是個挫折之年,但又是幸運之年,這一年創業遭遇滑鐵盧,幾與破產,充滿著迷茫,路在何方?? 開始接觸python是在微信朋友圈,結緣於廣告,覺得很有意思,但一直沒有深入接觸,後來在機緣巧合下,在各方壓迫之下,於8月份決心開始學習python, 萬事開頭難,但決心已定, ...
  • 隊列 隊列是用數組或鏈表實現的,遵循先進先出規則的一個有序列表 使用數組模擬隊列 分析:雖然隊列中的元素已經全部出隊,但是由於我們的隊列是使用數組模擬的,而且每次入隊的時候,頭指定都後移,當我們入隊次數增加,總有一時刻,頭指針指向數組最大下標,儘管我們有出隊,但是任然不能入隊元素,我們可以使用數組模 ...
  • 大家可以關註作者的賬號,關註從零開始學Java筆記文集。也可以根據目錄前往作者的博客園博客進行學習。本片文件將基於黑馬程式員就業班視頻進行學習以及資料的分享,並記錄筆記和自己的看法。歡迎大家一起學習和討論。 "【從零開始學Java筆記】目錄" 首先要聲明一點,無論什麼語言都沒有高低貴賤之分,語言只是 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...