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

2020-04-07 16:09:00來源:博客園 閱讀 ()

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

【從零開始學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 類/接口(){
如果是創建了繼承這個類的子類對象,我們可以重寫父類的方法
如果是創建了實現這個接口的子類對象,我們必須要實現該接口的所有方法
};
原理:而是創建了繼承這個類的子類對象或者是創建了實現這個接口的子類對象

匿名內部類的應用場景

作為參數進行傳遞


原文鏈接:https://www.cnblogs.com/zllk/p/12656995.html
如有疑問請與原作者聯系

標簽:對象操作解決常用forAV

版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有

上一篇:【從零開始學Java筆記】關鍵字super和this

下一篇:【從零開始學Java筆記】學生管理系統

韩国三级在线看免费