JavaSE:基礎語法

来源:https://www.cnblogs.com/ygstudy/archive/2023/01/03/17020869.html
-Advertisement-
Play Games

JavaSE:基礎語法 註釋 Java中的註釋有三種: 單行註釋:只能註釋當前行,以//開始,直到行結束 ​ //輸出HelloWorld! 多行註釋:註釋一段文字,以/ * 開始以 * / 結束! ​ /* 這是我們Java程式的主入口, main方法也是程式的主線程。 */ 文檔註釋:用於生產A ...


JavaSE:基礎語法

註釋

Java中的註釋有三種:

  • 單行註釋:只能註釋當前行,以//開始,直到行結束

//輸出HelloWorld!

  • 多行註釋:註釋一段文字,以/ * 開始以 * / 結束!

/* 這是我們Java程式的主入口, main方法也是程式的主線程。 */

  • 文檔註釋:用於生產API文檔,配合JavaDoc。

    /**再按回車鍵生成文檔註釋

平時我們編寫代碼,在代碼量比較少的時候,我們還可以看懂自己寫的,但是當項目結構一旦複雜起

來,我們就需要用到一個註釋了,註釋就類似於我們上學時候寫的筆記,我們看著筆記就知道自己寫的

什麼東西了!平時我們一定要養成編寫註釋的習慣。

標識符

Java語言中,對於變數,常量,函數,語句塊也有名字,我們統統稱之為Java標識符。標識符是用來給類、對象、方法、變數、介面和自定義數據類型命名的。

關於 Java 標識符,有以下幾點需要註意:

  • 所有的標識符都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始

  • 首字元之後可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字元組合

  • 不能使用關鍵字作為變數名或方法名。

  • 標識符是大小寫敏感的

  • 合法標識符舉例:age、$salary、_value、__1_value

  • 非法標識符舉例:123abc、-salary、#abc

關鍵字

Java關鍵字是對Java編譯器有特殊含義的字元串,是編譯器和程式員的一個約定,程式員利用關鍵字來告訴編譯器其聲明的變數類型、類、方法特性等信息。Java語言共定義瞭如下所示的關鍵字。

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
關鍵字 含義
abstract 表明類或者成員方法具有抽象屬性
assert 斷言,用來進行程式調試
boolean 基本數據類型之一,聲明布爾類型的關鍵字
break 提前跳出一個塊
byte 基本數據類型之一,位元組類型
case 用在switch語句之中,表示其中的一個分支
catch 用在異常處理中,用來捕捉異常
char 基本數據類型之一,字元類型
class 聲明一個類
const 保留關鍵字,沒有具體含義
continue 回到一個塊的開始處
default 預設,例如,用在switch語句中,表明一個預設的分支。Java8 中也作用於聲明介面函數的預設實現
do 用在do-while迴圈結構中
double 基本數據類型之一,雙精度浮點數類型
else 用在條件語句中,表明當條件不成立時的分支
enum 枚舉
extends 表明一個類型是另一個類型的子類型。對於類,可以是另一個類或者抽象類;對於介面,可以是另一個介面
final 用來說明最終屬性,表明一個類不能派生出子類,或者成員方法不能被覆蓋,或者成員域的值不能被改變,用來定義常量
finally 用於處理異常情況,用來聲明一個基本肯定會被執行到的語句塊
float 基本數據類型之一,單精度浮點數類型
for 一種迴圈結構的引導詞
goto 保留關鍵字,沒有具體含義
if 條件語句的引導詞
implements 表明一個類實現了給定的介面
import 表明要訪問指定的類或包
instanceof 用來測試一個對象是否是指定類型的實例對象
int 基本數據類型之一,整數類型
interface 介面
long 基本數據類型之一,長整數類型
native 用來聲明一個方法是由與電腦相關的語言(如C/C++/FORTRAN語言)實現的
new 用來創建新實例對象
package
private 一種訪問控制方式:私用模式
protected 一種訪問控制方式:保護模式
public 一種訪問控制方式:共用模式
return 從成員方法中返回數據
short 基本數據類型之一,短整數類型
static 表明具有靜態屬性
strictfp 用來聲明FP_strict(單精度或雙精度浮點數)表達式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754?fromModule=lemma_inlink)算術規範
super 表明當前對象的父類型的引用或者父類型的構造方法
switch 分支語句結構的引導詞
synchronized 表明一段代碼需要同步執行
this 指向當前實例對象的引用
throw 拋出一個異常
throws 聲明在當前定義的成員方法中所有需要拋出的異常
transient 聲明不用序列化的成員域
try 嘗試一個可能拋出異常的程式塊
void 聲明當前成員方法沒有返回值
volatile 表明兩個或者多個變數必須同步地發生變化
while 用在迴圈結構中

數據類型

Java是一種強類型語言,每個變數都必須聲明其類型。

強弱類型語言:

強類型語言:也稱為強類型定義語言。要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用。也就是說,一旦一個變數被指定了某個數據類型,如果不經過轉換,那麼它就永遠是這個數據類型了。安全性高,運行效率相對較慢,魚和熊掌不可兼得!Java、.NET、C++等都是強制類型定義的。

弱類型語言:也稱為弱類型定義語言。與強類型定義相反。像vb,php等就屬於弱類型語言· 在VBScript中,可以將字元串‘12’和整數3進行連接得到字元串‘123’,也可以把它看成整數123,而不需要顯示轉換。

Java的數據類型分為兩大類:基本類型(primitive type)和引用類型 (reference type)

基本數據類型:

數值類型:

整數類型:

​ byte占1個位元組 範圍:-128-127

​ short占2個位元組 範圍:-32768-32767

​ int占4個位元組 範圍:-2147483648-2147483647

​ long占8個位元組 範圍:-9223372036854775808-9223372036854775807

浮點類型:

​ float占4個位元組

​ double占8個位元組

字元類型:

​ char占2個位元組

boolean類型:

​ 占一位只有true或者false兩個

引用類型:

​ 類,介面,數組

註意:

字元串String類型也是一個類也屬於引用類型。引用類型的大小統一為4個位元組記錄其引用對象的地址。java語言的整數類型預設為int浮點類型預設double。

浮點數使用總結:

  1. 預設是double。

  2. 浮點數存在舍入誤差,很多數字不能精確表示。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。

  3. 避免比較中使用浮點數。

類型轉換

由於Java是強類型語言,所以要進行有些運算的時候的,需要用到類型轉換。

數據類型轉換必須滿足如下規則:

  • 不能對boolean類型進行類型轉換。

  • 不能把對象類型轉換成不相關類的對象。

  • 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。

  • 轉換過程中可能導致溢出或損失精度,例如:

    int i =128; 
    byte b = (byte)i;
    

    因為 byte 類型是 8 位,最大值為127,所以當 int 強制轉換為 byte 類型時,值 128 時候就會導致溢出。

  • 浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入。

    (int)23.7 == 23; 
    (int)-45.89f == -45
    

    自動類型轉換

    自動類型轉換:容量小的數據類型可以自動轉換為容量大的數據類型。

    例如: short數據類型的位數為16位,就可以自動轉換位數為32的int類型,同樣float數據類型的位數為32,可以自動轉換為64位的double類型。

強制類型轉換

​ 強制類型轉換的語法格式: (type)var ,運算符“()”中的type表示將值var想要轉換成的目標數據類型。 條件是轉換的數據類型必須是 相容的。

註意:當將一種類型強制轉換成另一種類型,而又超出了目標類型的表示範圍,就會被截斷成為一個完全不同的值,溢出。

變數

變數是什麼:就是可以變化的量!

我們通過變數來操縱存儲空間中的數據,變數就是指代這個存儲空間!空間位置是確定的,但是裡面放置什麼值不確定!

這就好像我們家裡有一個大衣櫃,裡面有十分多的小格子,我們給格子上貼上標簽,放衣服,放鞋子,放手錶等等,此時我們知道了哪裡該放什麼,但是,我們並不知道裡面到底放的是什麼牌子的鞋子,是衣服還是褲子。那個標簽就相當於我們的變數,我們給他起了個名字,但是裡面要放什麼需要我們自己去放。

Java是一種強類型語言,每個變數都必須聲明其類型。

註意事項:

  • 每個變數都有類型,類型可以是基本類型,也可以是引用類型。

  • 變數名必須是合法的標識符。

  • 變數聲明是一條完整的語句,因此每一個聲明都必須以分號結束。

變數作用域

變數根據作用域可劃分為三種:

  • 類變數(靜態變數: static variable):獨立於方法之外的變數,用 static 修飾。

  • 實例變數(成員變數:member variable):獨立於方法之外的變數,不過沒有 static 修飾。

  • 局部變數(lacal variable):類的方法中的變數。在使用前必須先聲明和初始化(賦初值)。局部變數沒有預設值,所以局部變數被聲明後,必須經過初始化,才可以使用。

常量

常量(Constant):初始化(initialize)後不能再改變值!不會變動的值。常量名一般使用大寫字元。

註意命名規範:

  1. 所有變數、方法、類名:見名知意

  2. 類成員變數:首字母小寫和駝峰原則 : monthSalary

  3. 局部變數:首字母小寫和駝峰原則

  4. 常量:大寫字母和下劃線:MAX_VALUE

  5. 類名:首字母大寫和駝峰原則: Man, GoodMan

  6. 方法名:首字母小寫和駝峰原則: run(), runRun()

運算符

Java 語言支持如下運算符:

  • 算術運算符: +,-,*,/,%,++,--

  • 賦值運算符 =

  • 關係運算符: >,<,>=,<=,==,!= instanceof

  • 邏輯運算符: &&,||,!

  • 位運算符: &,|,^,~ , >>,<<,>>>

  • 條件運算符 ?:

  • 擴展賦值運算符:+=,-=,*=,/=

註意:

在整數運算中:如果兩個操作數有一個為Long, 則結果也為long沒有long時,結果為int。即使操作數全為shot,byte,結果也是int。

在浮點數運算中:如果兩個操作數有一個為double, 則結果為double.只有兩個操作數都是float, 則結果才為float。

在取模運算中:負數%負數=負數;負數%正數=負數;正數%負數=正數;

自增自減運算中:

public static void main(String[] args) { 
	int a = 3; int b = a++; //執行完後,b=3。先給b賦值,再自增。 
	int c = ++a; //執行完後,c=5。先自增,再給b賦值 
}

在邏輯運算中:邏輯與和邏輯或採用短路的方式(&& ||)。從左到右計算,如果確定值則不會再計算下去。在兩個操作數都為true時,結果才為true,但是當得到第一個操作為false時,其結果就必定是false,這時候就不會再判斷第二個操作了。

邏輯與(&&)只要有一個為false, 則直接返回false。

邏輯或(||)只要有一個為true, 則直接返回true。

在位運算中:右移一位相當於除2取商。左移一位相當於乘2。

在字元串連接運算中:“+” 運算符兩側的操作數中只要有一個是字元串(String)類型,系統會自動將另一個操作數轉換為字元串然後再進行連接。

在三目條件運算中:x ? y : z 其中x為boolean類型表達式,先計算x的值,若為true,則整個三目運算的結果為表達式y的值,否則整個運算結果為表達式z的值。

包機制

存在這樣一個問題:當定義了多個類的時候,可能會發生類名的重覆問題。

解決方式:在java中採用包機制處理開發者定義的類名衝突問題。

就好比我們平時的用電腦,一個文件夾下不能存在同名的文件,我們要是有這樣的需求,但是又不想換名字,我們就可以考慮使用新建一個文件夾來存放!在我們的Java中也是這樣的。

為了能夠使用某一個包的成員,我們需要在 Java 程式中明確導入該包。使用 "import" 語句可完成此功能。


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

-Advertisement-
Play Games
更多相關文章
  • 同步和非同步 同步和非同步是指程式的執行方式。在同步執行中,程式會按順序一個接一個地執行任務,直到當前任務完成。而在非同步執行中,程式會在等待當前任務完成的同時,執行其他任務。 同步執行意味著程式會阻塞,等待任務完成,而非同步執行則意味著程式不會阻塞,可以同時執行多個任務。 同步和非同步的選擇取決於你的程式需 ...
  • 摘要 本文主要講述了一個 http request 請求從發出到收到 response 的整個生命周期,希望可以通過對整個流程的一個描述來梳理清楚五層網路協議的定義以及各層之間是如何協作的。 使用Golang發起一個HTTP請求 對於後端來說通過 http 請求來進行遠程調用是再尋常不過的事了,以 ...
  • 1. 拷貝和拷貝構造函數 拷貝和複製是一個意思,對應的英文單詞都是copy。對於電腦來說,拷貝是指用一份原有的、已經存在的數據創建出一份新的數據,最終的結果是多了一份相同的數據。例如,將 Word 文檔拷貝到U盤去複印店列印,將 D 盤的圖片拷貝到桌面以方便瀏覽,將重要的文件上傳到百度網盤以防止丟 ...
  • 家居網購項目實現013 以下皆為部分代碼,詳見 https://github.com/liyuelian/furniture_mall.git 32.功能30-會員不能登錄後臺管理 32.1需求分析/圖解 管理員admin登錄後,可以訪問所有頁面 會員登錄後,不能訪問後臺管理相關頁面,其他頁面可以訪 ...
  • 大家好,我是車轍,我的掘金小冊《SkyWalking:應用監控和鏈路跟蹤》已經上線啦,這是我的第一本電子書,歡迎大家訂閱。 整整好是9月的最後一天下午,能按耐住衝動的是少之又少,至於原因嘛你懂的。趕高鐵的準備趕高鐵,沒趕高鐵的也假裝趕高鐵。特別是開發同學,腦門上就差貼張紙條:別打擾我。 現在離跑路時 ...
  • 大多數開發者可能都用過 Postman,根據其官網的介紹:Postman 是一個用於構建和使用 API 的 API 平臺,簡化了 API 生命周期的每個步驟,提供更便捷的團隊協作,因此可以更快地創建更好的 API。這裡的 API,除了我們常用的 HTTP API 之外,還包括 Websocket(B ...
  • 一、前言 redis在我們企業級開發中是很常見的,但是單個redis不能保證我們的穩定使用,所以我們要建立一個集群。 redis有兩種高可用的方案: High availability with Redis Sentinel(哨兵) Scaling with Redis Cluster(分片集群) ...
  • 有問必答 最近有好多讀者私信我,為什麼選擇GoFrame做電商項目的開發? 原因很簡單: 因為我司是用GoFrame做電商業務開發的,而且我司同事基本都是PHP轉Go的。GoFrame可以說是非常適合PHPer轉Gopher的開發框架。 在入職我司之前,我有使用Gin和go-micro框架,目前也正 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...