深挖Java基礎之:變量與類型

今天我要介紹的是在Java中對變量和類型的一些相關知識點的介紹,包括對基本數據類型,引用類型,變量命名規則和類型轉換以及其注意事項的解明。

java變量與類型:Java 是靜態類型語言,變量必須先聲明類型后使用。變量是存儲數據值的容器,而類型決定了變量能存儲的數據種類、內存大小及可執行的操作。

基本數據類型:(見下表表格所示)

基本數據類型八種數據類型的表格展示說明:

1. 整型(整數)
類型位數取值范圍示例
byte8-128 ~ 127byte b = 100;
short16-32768 ~ 32767short s = 500;
int32-231 ~ 231-1int age = 25;
long64-2?3 ~ 2?3-1long big = 100L;
2.浮點型(小數)
類型位數精度示例
float32約 6-7 位小數float pi = 3.14f;
double64約 15 位小數double price = 19.99;
3.字符型(單個字符)
類型位數說明示例
char16Unicode 字符char c = 'A';?
4.布爾型(邏輯值)
類型位數取值示例
boolean1true/falseboolean flag = true;

引用類型

引用類型變量存儲的是對象的內存地址(引用),而非直接的值。常見類型:

String(字符串):

String name = "Alice"; // 雙引號包裹
String message = "Hello, " + name; // 拼接字符串

數組:

int[] numbers = {1, 2, 3}; ? ? ? // 一維數組
String[][] names = {{"Tom", "Jerry"}, {"Alice"}}; // 二維數組

注:二維數組介紹:

二維數組是由多個一維數組組成的數組,每個一維數組都可以有不同的長度。在這個例子中,names是一個二維數組,它包含兩個一維數組。第一個一維數組包含兩個元素 "Tom" 和 "Jerry",第二個一維數組只包含一個元素 "Alice"。可以把二維數組看作是一個表格或者是一個矩陣,其中每個元素都可以通過兩個索引來訪問,第一個索引表示行,第二個索引表示列。

類對象:

// 自定義類:
class Person {
? ? String name;
? ? int age;
}
Person p = new Person(); // 創建對象
p.name = "Bob"; ? ? ? ? ?// 訪問成員變量

介紹:類對象是面向對象編程中的一個重要概念,它是指在程序中定義的一種數據結構,用來表示一類具有相似屬性和行為的對象。類對象包含了數據成員和方法成員,數據成員用來描述對象的狀態,而方法成員則定義了對象的行為。

變量命名規則

  1. 合法字符:字母、數字、_$,但不可以數字開頭

  2. 區分大小寫age?和?Age?是不同的變量。

  3. 駝峰命名法:如?studentName

  4. 1:駝峰命名法:CamelCase(駝峰命名法)是一種變量命名規則,其特點是在命名時使用連續的單詞,并且每個單詞的首字母大寫,除了第一個單詞之外。這種命名規則使得變量名更易閱讀和理解,通常用于編程語言中的變量、函數名或類名的命名。例如,"myVariableName"就是一個使用了駝峰命名法的變量名。
  5. 禁止關鍵字:如?int,?class?不可作為變量名。

正示例:

int count = 10;
String user_name = "Lucy";
double $price = 29.99;

倒示例:

int 2num = 5;    // 以數字開頭
float class = 3.14f; // 使用關鍵字

類型轉換

1. 自動類型轉換(隱匿)

小范圍類型 → 大范圍類型時自動轉換:

int a = 100;
long b = a;       // 自動轉為 long
double c = b;     // 自動轉為 double
2.強制類型轉換(凸顯)

大范圍類型 → 小范圍類型時需強制轉換,可能丟失精度:

long x = 1000L;
int y = (int) x;   // 強制轉換
double d = 3.14;
int i = (int) d;   // i = 3(小數部分丟失)

注意事項

變量初始化:局部變量得顯式初始化,不然編譯結果會顯示報錯。

int x; // 錯誤!未初始化
int y = 0; // 正確

?注:默認值==》成員變量有默認值(如?int?默認為 0,引用類型默認為?null)。

字符串拼接+?可將其他類型自動轉為字符串=》

String info = "價格:" + 19.99; // "價格:19.99"

代碼示例:

1.基本類型 vs 包裝類

? 基本類型高效,但無法用于泛型;包裝類(?比如:Integer)提供對象操作:

int primitive = 42;
Integer wrapper = Integer.valueOf(42); // 裝箱
int unboxed = wrapper.intValue(); // 拆箱
2.字符串與類型轉換

? 引用類型的常見操作:?

String s = "123";
int num = Integer.parseInt(s); // 字符串轉int

?優勢與劣勢:

①:優勢
  1. 類型安全:靜態類型在編譯時檢查錯誤,減少運行時問題。

  2. 性能優化:基本類型直接存儲在棧內存,訪問速度快。

  3. 清晰的代碼結構:類型聲明增強代碼可讀性。

  4. 面向對象支持:引用類型支持多態、繼承等特性。

②:劣勢
  1. 冗長的類型聲明:需顯式聲明類型,代碼不夠簡潔(對比動態類型語言)。

  2. 基本類型與包裝類的復雜性:需處理自動裝箱/拆箱(可能引發?NullPointerException)。

  3. 類型轉換風險:強制轉換可能導致數據丟失或運行時錯誤。

總結:Java 的類型系統通過嚴格的靜態類型檢查保障了代碼的健壯性,但犧牲了一定的靈活性。開發者需在類型選擇、轉換和內存管理中權衡性能與安全性。掌握變量與類型是 Java 編程的基礎,合理選擇類型能提升代碼效率和可讀性。

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

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

相關文章

數據結構與算法學習筆記(Acwing提高課)----動態規劃·背包模型(一)

數據結構與算法學習筆記----動態規劃背包模型(一) author: 明月清了個風 first publish time: 2025.5.1 ps??背包模型是動態規劃中的重要模型,基礎課中已對背包模型的幾種模版題有了講解,[鏈接在這](數據結構與算法學習筆記----背包問題_有 n 件物品…

Java關鍵字解析

Java關鍵字是編程語言中具有特殊含義的保留字,不能用作標識符(如變量名、類名等)。Java共有50多個關鍵字(不同版本略有差異),下面我將分類詳細介紹這些關鍵字及其使用方式。 一、數據類型相關關鍵字 1. 基…

vue自定義表頭內容excel表格導出

1、安裝 npm install xlsx file-saver 2、使用 import * as XLSX from xlsx import { saveAs } from file-saverconst exportAccounts (data) > {// 將對象數組轉換為 worksheetconst worksheet XLSX.utils.json_to_sheet(data)// 創建 workbook 并附加 sheetconst wor…

鴻蒙NEXT開發組件截圖和窗口截圖工具類SnapshotUtil(ArkTs)

import { image } from kit.ImageKit; import { componentSnapshot, window } from kit.ArkUI; import { AppUtil } from ./AppUtil; import { ArrayUtil } from ./ArrayUtil;/*** 組件截圖和窗口截圖工具類* author 鴻蒙布道師* since 2025/04/28*/ export class SnapshotUtil…

C#與SVN的深度集成:實現版本控制自動化管理?

目錄 1. 環境準備 2. 創建 C# 工程 3. 引用 SharpSvn 庫 4. 編寫代碼 1. 環境準備 2. 創建 C# 工程 3. 引用 SharpSvn 庫 4. 編寫代碼 5. 代碼說明 6. 注意事項 1. 環境準備 首先,需要安裝 SharpSvn 庫。可以從 SharpSvn 官方網站 下載適合 .NET Framewor…

本文不定期更新,用于收錄各種怪異的python腳本

1.計算自然數對數底 a b 1 for n in range(1, 1001):a a * n 1b b * n t a % br . for i in range(1, 1001):t 10if t < b:r 0else:r str(t // b)t % bprint(str(a//b) r) 得到 2.7182818284590452353602874713526624977572470936999595749669676277240766303…

日志之ClickHouse部署及替換ELK中的Elasticsearch

文章目錄 1 ELK替換1.1 Elasticsearch vs ClickHouse1.2 環境部署1.2.1 zookeeper 集群部署1.2.2 Kafka 集群部署1.2.3 FileBeat 部署1.2.4 clickhouse 部署1.2.4.1 準備步驟1.2.4.2 添加官方存儲庫1.2.4.3 部署&啟動&連接1.2.4.5 基本配置服務1.2.4.6 測試創建數據庫和…

2025年大一ACM訓練-搜索

2025年大一ACM訓練-搜索 前期知識&#xff1a;DFS&#xff0c;本文搜索題解法以深度優先搜索為主 1.1 DFS 的定義 深度優先搜索&#xff08;Depth-First Search&#xff09;是一種用于遍歷樹或圖的算法。核心思想是盡可能“深入”訪問圖的每個節點&#xff0c;直到無法繼續前進…

Nginx核心功能02

目錄 一&#xff0c;正向代理 1&#xff0c;編譯安裝Nginx &#xff08;1&#xff09;安裝支持軟件 &#xff08;2&#xff09;創建運行用戶&#xff0c;組和日志目錄 &#xff08;3&#xff09;編譯安裝Nginx &#xff08;4&#xff09;添加Nginx系統服務 2&#xff0c…

rk3568安全啟動功能實踐

本文主要講述筆者在rk3568芯片上開發安全啟動功能實踐的流程。其中主要參考瑞芯微官方文檔《Rockchip_Developer_Guide_Secure_Boot_for_UBoot_Next_Dev_CN.pdf》。文檔中描述邏輯不是很清晰而且和當前瑞芯微的sdk中安全啟動的流程匹配度不高。本文就不再對瑞芯微官方文檔的內容…

[操作系統] 線程互斥

文章目錄 背景概念線程互斥的引出互斥量鎖的操作初始化 (Initialization)靜態初始化動態初始化 加鎖 (Locking)阻塞式加鎖非阻塞式加鎖 (嘗試加鎖/一般不考慮) 解鎖 (Unlocking)銷毀 (Destruction)設置屬性 (Setting Attributes - 通過 pthread_mutex_init) 鎖本身的保護互斥鎖…

【神經網絡與深度學習】兩種加載 pickle 文件方式(joblib、pickle)的差異

引言 從深度學習應用到數據分析的多元化需求出發&#xff0c;Python 提供了豐富的工具和模塊&#xff0c;其中 pickle 和 joblib 兩種方式在加載數據文件方面表現尤為突出。不同場景對性能、兼容性以及后續處理的要求不盡相同&#xff0c;使得這兩種方式各顯優勢。本文將通過深…

Electron 入門指南

Electron 入門指南 Electron 是一個使用 JavaScript、HTML 和 CSS 構建跨平臺桌面應用的框架。通過 Electron&#xff0c;你可以利用 Web 技術開發出功能強大的桌面應用程序&#xff0c;并且能夠運行在 Windows、Mac 和 Linux 系統上。 本文將帶你從零開始構建一個簡單的 Ele…

編程中如何與AI交互-結構化輸入和理解確認機制

一 結構化輸入是什么 &#x1f4cc; 結構化輸入的定義&#xff1a; 結構化輸入是指以清晰、分層、有邏輯的格式向 AI 輸入信息&#xff0c;使其更容易解析內容、抓住重點&#xff0c;并準確回答問題。 &#x1f4e6; 舉個例子&#xff08;編程場景&#xff09;&#xff1a; 非…

13:傅里葉變換

傅立葉變換(FT, Fourier Transform)的作用是將一個信號由時域變換到頻域。其實就是把數據由橫坐標時間、縱坐標采樣值的波形圖格式&#xff0c;轉換為橫坐標頻率、縱坐標振幅(或相位)的頻譜格式。換后可以很明顯地看出一些原先不易察覺的特征。 有些信號在時域上是很難看出什么…

基于單片機的音頻信號處理系統設計(一)

項目名稱:基于單片機的音頻信號處理系統設計學院名稱:信息學院學生姓名:學號專業年級:指導教師:教師職稱:教授企業導師:目 錄 摘 要 Abstract 1 前言 1.1研究背景與意義 <

機器學習實操 第一部分 機器學習基礎 第8章 降維技術

機器學習實操 第一部分 機器學習基礎 第8章 降維技術 內容概要 第8章探討了降維技術&#xff0c;這些技術在處理高維數據時至關重要。高維數據不僅會使訓練過程變得極其緩慢&#xff0c;還會增加找到良好解決方案的難度&#xff0c;這就是所謂的維度災難問題。幸運的是&#…

微信小程序 XSS 防護知識整理

場景1&#xff1a;用戶輸入表單&#xff08;如評論框&#xff09; 錯誤做法&#xff1a;直接渲染未過濾的用戶輸入 // WXML <view>{{ userInput }}</view>// JS&#xff08;用戶輸入了惡意內容&#xff09; Page({data: { userInput: <script>alert("…

MySQL 服務搭建

&#x1f4a2;歡迎來到張翊塵的開源技術站 &#x1f4a5;開源如江河&#xff0c;匯聚眾志成。代碼似星辰&#xff0c;照亮行征程。開源精神長&#xff0c;傳承永不忘。攜手共前行&#xff0c;未來更輝煌&#x1f4a5; 文章目錄 在線安裝Ubuntu/Debian更新系統包索引安裝 MySQL …

【Java面試筆記:進階】23.請介紹類加載過程,什么是雙親委派模型?

Java的類加載機制是JVM的核心組成部分,其過程分為三個階段,并采用雙親委派模型來保證類加載的安全性和一致性。 1.類加載過程 1.加載階段(Loading) 核心任務:查找并加載類的二進制字節流(如.class文件)。具體行為: 將字節碼數據從不同數據源(如文件系統、網絡等)讀…