Java 語法基礎(筆記)

java 的數據類型

基本類型

Java 有八種基本類型:

  • byte:1 字節,-128~127
  • short:2 字節,-32768~32767
  • int:4 字節,-2147483648~2147483647
  • long:8 字節,-9223372036854775808~9223372036854775807
  • float:4 字節,小數點后 32 位
  • double:8 字節,小數點后 64 位
  • char:2 字節,表示單個字符
  • boolean:1 字節,true 或 false

引用類型

類似于 C 語言的指針,引用類型是指向對象在內存中的地址。引用類型可以用來訪問對象的屬性和方法。

Java 有兩種引用類型:

  • 類:用來描述對象的類型,包括自定義的類、系統提供的類
  • 接口:用來描述一組方法的集合,包括自定義的接口、系統提供的接口

字面量

字面量是指直接寫在代碼中的值,包括整數(十進制、八進制、十六進制)、浮點數、字符、字符串、布爾值等。

數據類型具體介紹

數字

  • 從 java7 開始,支持下劃線分隔符,增強可讀性。
int num1 = 123_456; // 123456
int num2 = 0b1010_1010; // 170
int num3 = 0x1234_5678; // 305419896// 不能在浮點數小數點前后使用下劃線分隔符
// 不能在數字的開頭和末尾使用下劃線分隔符
// 不能在X、B、D等特殊字母前后使用下劃線分隔符

字符

  • 轉義字符
char c1 = '\n'; // 換行符
char c2 = '\t'; // 制表符
char c3 = '\b'; // 退格符
char c4 = '\r'; // 回車符
char c5 = '\f'; // 換頁符
char c6 = '\''; // 單引號
char c7 = '\"'; // 雙引號
char c8 = '\\'; // 反斜杠

字符串

  • 字符串是引用數據類型,用來存儲一系列字符。
  • 字符串是不可變的,一旦創建就不能修改。
String str2 = "";   // 空字符串
String str3 = null; // 空引用, 相當于C語言的空指針
  • 字符串拼接: 使用 + 運算符進行字符串拼接
String str1 = "Hello";
String str2 = "World";
String str3 = str1 + " " + str2; // "Hello World"

變量

  • 任何變量在使用前必須初始化(可以聲明后賦值), 局部變量程序員手動初始化,非局局變量編譯器自動初始化。
byte    -----       0
short   -----       0
int     -----       0
long    -----       0L
float   -----       0.0f
double  -----       0.0d
char    -----      '\u0000'
boolean -----       false
對象    -----       null

運算符

在這里插入圖片描述

  • >> 與 >>> 運算符的區別:
  1. 右移運算符(>>) :有符號右移,將二進制數字右移一位, 最左邊用符號位補齊。
  2. 無符號右移運算符(>>>) :無符號右移,將二進制數字右移一位, 最左邊用 0 補齊。
  • 可以對布爾類型進行位運算, 與普通的邏輯運算符類似, 但少了短路(邏輯中斷)的特性。

  • java 的類型檢查很嚴格, 如在 if 語句中, 括號內的表達式必須是布爾類型。

類型轉換

拓寬基本類型轉換

數據范圍小的轉為數據范圍大的(共 19 種, 可越級轉換), 可以自動轉換:

byte -> short/char -> int -> long -> float -> double

窄化基本類型轉換

數據范圍大的轉為數據范圍小的(共 22 種), 需要強制類型轉換:

double -> float -> long -> int -> short/char -> byte

int i = 10;
byte b = (byte) i; // 窄化轉換
double d = 10.5;
int j = (int) d; // 窄化轉換, 截斷小數部分

一元數字提升

將 byte、short、char 類型的數字進行(部分)一元運算時自動提升為 int 類型。

  1. 數組的索引, 創建數組時的數組長度
  2. 一元運算符 +、-、~
  3. 位移 <<、>>、>>>

二元數字提升

數據范圍大的與數據范圍小的運算時轉為數據范圍大的, 最低限度為 int 類型(兩個 byte 類型相加, 結果為 int 類型)。

int -> long -> float -> double

  1. 算術運算符: +、-、*、/、%
  2. 關系運算符: <、>、<=、>=、==、!=
  3. 位運算: |、&、^
  4. 三目運算符: 條件運算符? :

注: 符合運算符在相同類型運算時并不會做變量的提升

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、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while

true、false、null 是字面量, 不是關鍵字。

java 數組


// 空引用和空數組
int[] arr1;
int[] arr2 = {};
int arr3[] = {};// 聲明時指定數組元素
int[] arr4 = new int[] {1, 2, 3};   //new 表示分配堆空間
int[] arr5 = {1, 2, 3};// 定義時指定數組長度和訪問數組元素
int[] arr6 = new int[5];    // 自動初始化為0
arr6[0] = 1;
arr6[1] = 2;
arr6[2] = 3;// 多維數組
int[][] arr7 = new int[2][3];

在這里插入圖片描述

方法(函數)

可變參數

可變參數是指方法參數的數量不固定,可以傳入任意數量的參數。可變參數在方法內部被視為一個數組。

可變參數必須是方法的最后一個參數

public static void print(int... args) { // 可變參數, 數組類型, 若不傳參數, 則 args 為 {}, 不為 nullfor (int i : args) {System.out.print(i + " ");}System.out.println();
}

參數傳遞

基本數據類型的參數傳遞為值傳遞,引用數據類型的參數傳遞為引用傳遞(地址)。

方法簽名

由 2 部分組成: 方法名 + 參數類型


public static double sum(int i, long l, double d){return i + l + d;
}// 方法簽名: sum(int,long,double)

方法重載

即: 方法名相同, 方法簽名不同(參數類型不同)

棧幀

棧幀隨著方法的調用而創建, 隨著方法結束而銷毀, 存儲了方法的局部變量信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82933.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 方法(棧幀)

本章內容: 方法的結構 方法體內部的代碼執行 局部變量 局部常量 控制流 方法調用 返回值 返回語句和void方法 局部函數 參數 值參數 引用參數 引用類型作為值參數和引用參數 輸出參數 參數數組 參數類型總結 方法重載 命名參數 可選參數 棧幀 遞歸 棧幀 至此&#xff0c;我們已…

C# 使用 WinUI 3 項目模板創建桌面應用程序

文章目錄 1. 概述2. 先決條件3. 創建項目步驟4. 項目結構簡介5. 代碼示例5.1. MainWindow.xaml (UI 定義)5.2. MainWindow.xaml.cs (邏輯代碼) 6. 生成和運行應用程序7. 關鍵概念 1. 概述 本示例演示如何使用 Visual Studio 中的 “Blank App, Packaged (WinUI 3 in Desktop)”…

設計模式簡述(十八)享元模式

享元模式 描述基本組件使用 描述 當內存中存在大量類似的對象時&#xff0c;可以考慮使用享元模式減少整體內存占用。 可以將相同的部分和不同的部分進行拆分&#xff0c;以達到多個對象共享相同部分內存的目的。 基本組件 通常享元對象通過共享的屬性映射一個享元對象。 公…

大數據狙擊金融欺詐——技術如何守護交易安全?

大數據狙擊金融欺詐——技術如何守護交易安全? 金融領域一直是欺詐行為的“重災區”,從傳統的信用卡盜刷到精心策劃的網絡詐騙,攻擊者不斷進化手法,使得防御變得越來越復雜。然而,大數據技術的出現,讓金融欺詐檢測從被動防守轉向主動狙擊,通過深度學習、行為分析和實時…

如何通過DNS解析實現負載均衡?

在當今的互聯網時代&#xff0c;隨著網絡應用的飛速發展&#xff0c;網站和各類在線服務面臨著海量的用戶請求。為了保障服務的高可用性和高性能&#xff0c;負載均衡技術應運而生。DNS&#xff08;域名系統&#xff09;負載均衡作為其中一種重要的實現方式&#xff0c;憑借其簡…

MySQL解決主從復制的報錯問題

MySQL 8.4 非 GTID 模式部分數據庫主從復制指南 在進行MySQL 8.4非GTID模式下部分數據庫主從復制時&#xff0c;以下是詳細的操作步驟以及對應的執行位置說明&#xff0c;還有報錯處理方法介紹&#xff1a; 操作步驟 1. 備份主庫指定數據庫&#xff08;db1、db2&#xff09;…

Linux的域名解析服務器

什么是DNS DNS&#xff08;Domain Name System&#xff09;是互聯網上的一項服務&#xff0c;它作為將域名和IP地址相互映射的一個分 布式數據庫&#xff0c;能夠使人更方便的訪問互聯網 DNS使用的是53端口&#xff0c; 通常DNS是以UDP這個較快速的數據傳輸協議來查詢的&…

vue 中綁定樣式 【class樣式綁定】

class 樣式綁定 在 Vue 中&#xff0c;可以通過 :class&#xff08;或簡寫 v-bind:class&#xff09;實現類名&#xff08;class&#xff09;樣式的綁定。Vue 提供了幾種常用的綁定方式&#xff0c;分別支持字符串、對象和數組語法。 綁定字符串 <div :class"active…

Unity3D 序列化機制:引擎內的應用場景和基本原理

前言 Unity3D 的序列化機制是其核心功能之一&#xff0c;用于在編輯器和運行時之間持久化數據、管理場景狀態、處理預制體&#xff08;Prefab&#xff09;以及實現跨平臺兼容性。以下是其應用場景和基本原理的詳細解析&#xff1a; 對惹&#xff0c;這里有一個游戲開發交流小…

Python 字典鍵 “三變一” 之謎

開頭&#xff1a;讀者的“玄學”字典謎題 上周&#xff0c;朋友發來了一段讓他抓耳撓腮的代碼&#xff1a; >>> {True: foo, 1: bar, 1.0: baz} {True: baz} “我明明定義了布爾True、整數1、浮點數1.0三個鍵&#xff0c;結果字典里只剩True一個鍵&#xff0c;值…

如何選擇 RabbitMQ、Redis 隊列等消息中間件?—— 深度解析與實戰評估

如何選擇 RabbitMQ、Redis 隊列等消息中間件?—— 深度解析與實戰評估 1. 引言 在現代分布式系統架構中,消息隊列(Message Queue,MQ) 作為解耦服務、異步處理和高效通信的關鍵組件,被廣泛應用于高并發、微服務和數據流處理場景。選擇合適的消息中間件不僅能提高系統的穩…

特征工程四:數據特征提取TfidfVectorizer的使用

TfidfVectorizer 深度解析 TfidfVectorizer 是 scikit-learn 中用于文本特征提取的核心工具&#xff0c;它將原始文本轉換為 TF-IDF 特征矩陣&#xff0c;是自然語言處理(NLP)和文本挖掘的基礎組件。 一、核心原理 1. TF-IDF 計算 TF (Term Frequency)&#xff1a;詞頻&…

c/c++爬蟲總結

GitHub 開源 C/C 網頁爬蟲探究&#xff1a;協議、實現與測試 網頁爬蟲&#xff0c;作為一種自動化獲取網絡信息的強大工具&#xff0c;在搜索引擎、數據挖掘、市場分析等領域扮演著至關重要的角色。對于希望深入理解網絡工作原理和數據提取技術的 C/C 開發者&#xff0c;尤其是…

PostgreSQL 的表連接方法

PostgreSQL 的表連接方法 PostgreSQL 提供了多種高效的連接算法&#xff0c;每種方法適用于不同的查詢場景。以下是 PostgreSQL 支持的四種主要表連接方法及其特點&#xff1a; 1 Nested Loop Join&#xff08;嵌套循環連接&#xff09; 工作原理 對外表的每一行&#xff0…

【Qt】qss語法詳解

QSS (Qt Style Sheets) 語法格式詳解 QSS 是 Qt 的樣式表語言&#xff0c;類似于 CSS&#xff0c;用于自定義 Qt 應用程序的外觀。以下是 QSS 的完整語法格式說明&#xff1a; 基本語法結構 selector {property: value;property: value;... }1. 選擇器 (Selectors) 基本選擇…

Azure資源創建與部署指南

本文將指導您如何在Azure平臺上創建和配置必要的資源,以部署基于OpenAI的應用程序。 資源組創建 資源組是管理和組織Azure資源的邏輯容器。 在Azure門戶頂端的查詢框中輸入"Resource groups"(英文環境)或"資源組"(中文環境)在搜索結果中點擊"資…

Java后端快速生成驗證碼

Hutool是一個小而全的Java工具類庫&#xff0c;它提供了很多實用的工具類&#xff0c;包括但不限于日期處理、加密解密、文件操作、反射操作、HTTP客戶端等。 核心工具類&#xff1a;CaptchaUtil&#xff0c;CaptchaUtil 是 Hutool 提供的一個工具類&#xff0c;用于創建各種類…

sql 備份表a數據到表b

備份表a數據到表b mysql CREATE TABLE sys_dict_240702 LIKE sys_dict;INSERT INTO sys_dict_240702 SELECT * FROM sys_dict;mssql select * into t_Dict_240702 from t_Dict

2.4GHz無線通信芯片選型指南:集成SOC與低功耗方案解析

今天給大家分享幾款2.4GHz無線通信芯片方案&#xff1a; 一、集成SOC芯片方案 XL2407P&#xff08;芯嶺技術&#xff09; 集成射頻收發機和微控制器&#xff08;如九齊NY8A054E&#xff09; 支持一對多組網和自動重傳 發射功率8dBm&#xff0c;接收靈敏度-96.5dBm&#xff08…

Tomcat與純 Java Socket 實現遠程通信的區別

Servlet 容器??&#xff08;如 Tomcat&#xff09; 是一個管理 Servlet 生命周期的運行環境&#xff0c;主要功能包括&#xff1a; ??協議解析??&#xff1a;自動處理 HTTP 請求/響應的底層協議&#xff08;如報文頭解析、狀態碼生成&#xff09;&#xff1b; ??線程…