數據類型和變量

1.數據類型

在Java中數據類型主要分為兩類:基本數據類型和引用數據類型。

基本數據類型有四類八種: 1. 四類:整型、浮點型、字符型以及布爾型

2.八種:

?整形是分為如上四種 byte short int? long

?浮點型分為 float?和double?

其中需要特別注意的是? byte內存占用為1字節? ?char內存占用為2字節。和我們之前c語言中學到的很不一樣。

需要注意的點?

1.不論是在16位系統還是32位系統,int都占用4個字節,long都占8個字節。其他數據類型也同理(可以說這不像c語言一樣,其java是可移植的,無論在哪個系統,其數據類型所占字節都是固定的

2.在java中整形和浮點型都是有符號的,不存在無符號。(跟c的區別,c有無符號和有符號之分,更加復雜)

3.整型默認為int型,浮點型默認為double

4字符串屬于引用類型,該中類型后序介紹。 ?

2.變量?

對于java來說 ,其為了安全性 ,變量在使用前是需要定義好值的,否則如果沒定義好值就使用會導致編譯期間報錯。(這在c語言里是不可能的,C語言就算變量未定義也是可以使用的)

?對于給變量賦值,其值一定不要超出其變量取值范圍

1.整形?

特殊說明:在整形中,長整型變量(long)的初始值后要加L或者l,推薦加L。 (其他整形變量都沒這個要求)

2.浮點型

int a = 1;
int b = 2;
System.out.println(a / b); //輸出0

跟c語言一樣。在 Java 中, int 除以 int 的值仍然是 int(會直接舍棄小數部分),。如果想得到 0.5, 需要使用 double 類型計算. ?

double a = 1.0;
double b = 2.0;
System.out.println(a / b); ? // 輸出0.5

?double float 類型的內存布局遵守 IEEE 754 標準(和C語言一樣), 嘗試使用有限的內存空間表示可能無限的小數, 勢必會存在一定的精度誤差,因此浮點數是個近似值,并不是精確值。這個叫做精度損失,之前在c語言中講過。

所以會出現以下代碼,就是精度損失的一個很好的例子。

double num = 1.1;
System.out.println(num * num); ?// 輸出1.21嗎?// 執行結果
1.2100000000000002

因為java更注重安全性,所以對于將float初始化,需要將其浮點型常量后面加個f或者F,否則會報錯(c語言并不會報錯)

?oat num = 1.0f; ? ?// 寫作 1.0F 也可以

由于float表示的數據精度范圍較小, 一般在工程上用到浮點數都優先考慮 double, 不太推薦使用 ?oat.?

3.字符型?

?Java 中使用 單引號 + 單個字母 的形式表示字符。

無論是哪種語言,計算機中的字符本質上都是屬于整數. 在 C 語言中使用 ASCII 表示字符, 而 Java中我們使用Unicode表示字符.

unicode表包含ascall表,unicode表能表示范圍更大。

unicode中一個字符占用兩個字節,所以可以表示的字符種類更多, 包括中文.

char ch = '呵';
System.out.println(ch);

4.布爾類型?

boolean 類型的變量只有兩種取值, true 表示真, false 表示假

Java 的 boolean 類型和 int 不能相互轉換, 不存在 1 表示 true, 0 表示 false 這樣的用法.(強制轉換雙方都不能進行)

(c語言中bool能與int類型相互轉換,所以0能隱式轉換為true,其他數字能隱式轉換為false,)

Java虛擬機規范中,并沒有明確規定boolean占幾個字節,也沒有專門用來處理boolean的字節碼指令?

?3.類型轉換

?Java 作為一個強類型編程語言, 當不同類型之間的變量相互賦值的時候, 會有較嚴格的校驗.而跟c語言對比來說,c語言的類型轉換規則就顯得很寬松,很容易就能類型轉換。

自動類型轉換(隱式)

?自動類型轉換即:代碼不需要經過任何處理,在代碼編譯時,編譯器會自動進行處理。特點:數據范圍小的轉為數據范圍大的時才會自動轉換。(特殊情況不遵循,如下)

(c語言的隱式轉換更簡單,無論是小轉換為大還是大轉換為小都可以)

當給變量賦常量值時,其隱式轉換并不符合上述所說,它的隱式轉換有自己的規矩,其規則我們在上面已經說過了,再說一遍。

將一個字面值常量進行賦值的時候, Java 會自動針對數字范圍進行檢查。

byte,short只要填整數常量就行,它會自動隱式整換。int填整數常量。 long需要整數常量后加個L如101L.? ?float在賦值時需要后面加個f如1.14f 。double只要正常浮點數就行.

?強制類型轉換(顯式)

c語言已經講的很清楚,這里不詳細展示?

強制類型轉換不一定能成功,不相干的類型依舊不能互相轉換 ,如在java中boolean和int之間不能強制轉換(c語言當然可以)

4.類型提升?

如果參與計算的都是低于等于4字節大小的數據類型,就會將其提升到四字節類型再計算。原因是由于計算機的 CPU 通常是按照 4 個字節為單位從內存中讀寫數據. 為了硬件上實現方便, 諸如 byte 和 short 這種低于 4 個字節的類型, 會先提升成 int, 再參與計算. ?

如果有大于4個字節類型的數據參與計算,如long,則就全隱式轉換為long類型再計算。

下面給幾個例子

?

所以這就是java的類型提升。

其實對于類型轉換和類型提升這兩個概念在c語言就講過了,只不過java跟c語言在這兩方面上還是有差別的,所以要重新講。

5.字符串類型?

?這是c語言所沒有的類型,但是c語言有指針可以代替它。

字符串類型不屬于java的基本類型,屬于引用數據類型。

?在Java中使用String類定義字符串類型,比如:

public static void main(String[] args) {String s1 = "hello";String s2 = " world";System.out.println(s1);System.out.println(s2);System.out.println(s1+s2); ? // s1+s2表示:將s1和s2進行拼接
}

?在java中,字符串跟c語言中字符串不一樣,這里結尾并不存在隱藏的\0,所以在從底層來說可以將字符串認為是數組。

?在java中字符串可以被+拼接 ,如“hello”+4=“hello4” ,10+20+“hello”=“30hello”,“hello”+10+20=“hello1020”.

?

?對于其轉換方法運用了包裝類型和String,該知識點比較深,就不細展開了,看一下了解下就可以了。

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

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

相關文章

Docker Compose系列--搭建halo與mysql

原文網址:使用Docker Compose系列--搭建halo與mysql_IT利刃出鞘的博客-CSDN博客 簡介 說明 本文介紹如何使用Docker Compose搭建halo與mysql。 官網網址 使用 Docker 部署 Halo 和 MySQL | Halo Documents Docker Compose搭建mysql 見:Docker Com…

【大廠AI課學習筆記NO.64】機器學習開發框架

機器學習開發框架本質上是一種編程庫或工具,目的是能夠讓開發人員更容易、更快速地構建機器學習模型。 機器學習開發框架封裝了大量的可重用代碼,可以直接調用,目的是避免“重復造輪子’大幅降低開發人員的開發難度,提高開發效率…

軟考高級:候選碼、主碼、全碼、外碼、主屬性、主鍵、主關鍵字、非主屬性概念和例題

一、AI 講解 候選碼、主碼、全碼、外碼、主屬性、主鍵、主關鍵字、非主屬性是數據庫設計和數據建模中的基本概念,特別是在關系數據庫模型中。下面將對這些概念進行簡單講解,并給出相應的例子。 概念講解 候選碼(Candidate Key)…

Spring框架精髓:帶你手寫IoC

個人名片: 🐼作者簡介:一名大三在校生,喜歡AI編程🎋 🐻???個人主頁🥇:落798. 🐼個人WeChat:hmmwx53 🕊?系列專欄:🖼?…

足球青訓俱樂部|基于Springboot的足球青訓俱樂部管理系統設計與實現(源碼+數據庫+文檔)

足球青訓俱樂部管理系統目錄 目錄 基于Springboot的足球青訓俱樂部管理系統設計與實現 一、前言 二、系統設計 1、系統架構設計 三、系統功能設計 1、管理員登錄界面 2、公告信息管理界面 3、學員管理界面 4、商品信息管理界面 5、課程安排管理界面 四、數據庫設計…

ArcGIS Runtime For Android開發之符號化和圖層渲染

一、用Symbol對要素進行符號化 首先我們看一下Symbol 接口關系: 1、SimpleFillSymbol 他是用來進行簡單的Graphic面要素填充符號化的,它可以設置要素的填充顏色,邊線顏色、線寬,其用法如下: Polygon polygonnew Po…

常用的電阻、電容的種類和應用場合?

電阻的 a.按阻值特性:固定電阻、可調電阻、特種電阻(敏感電阻),不能調節的,我們稱之為固定電阻,而可以調節的,我們稱之為可調電阻.常見的例如收音機音量調節的,主要應用于電壓分配的,我們稱之為電位器. b.按制造材料:碳膜電阻、金屬膜電阻、線繞電阻,捷…

Go切片特點筆記

特點 1.只有append操作2.支持子切片3.內存共享問題 1.只有append操作 不支持隨機增刪 2.支持子切片 數組和切片都可以通過[start:end] 的形式 來獲取子切片: 1.arr[start:end],獲得[start,end)之間的元素。 2.arr[:end],獲得[0,end)之間的元素。 3.arr[start:],獲得[start,l…

二叉樹葉節點個數,根節點個數,樹的深度,查找數據為x的節點

文章目錄 一、計算二叉樹葉節點個數二、葉節點的個數 引言:補充樹的概念 節點的度:一個節點含有的子樹的個數稱為節點的度 葉節點或終端節點:度為0的節點稱為葉節點 節點的層次:從根開始為第一層,以此類推 樹的度&…

Leetcode150二刷總結

滑動窗口(ok) 題號:3、209、76 定義好窗口的左邊界left和右邊界right一般是只需要遍歷right,滿足條件后調整left 鏈表 題號:206、92、146、25、21 反轉鏈表主要是設置好pre(初始為null)和c…

【Godot 4.2】Tree控件與TreeItem完全解析

概述 本篇是控件完全解析系列之一,主要總結一下Tree控件與TreeItem的使用。 Tree控件是一個非常強大的控件,尤其是在編寫一些相關的程序或編輯器插件時,非常適合展示樹形組織的節點型數據。 本篇將從簡單的添加根節點,根節點子…

uniapp和vue項目配置多語言,實現前端切換語言

在uniapp中配置多語言功能,實現前端切換語言,可以按照以下步驟進行: 1. 創建語言包 首先,創建一個名為 lang 的目錄,并在該目錄下為每種支持的語言創建對應的JSON或JS文件。例如: lang/en.js&#xff08…

Threejs之場景標注標簽信息CSS2DRenderer

參考資料 CSS2DRenderer(HTML標簽)…單擊按鈕關閉HTML標簽 知識點 注:基于Three.jsv0.155.0 CSS2DRenderer(HTML標簽) HTML標簽遮擋Canvas畫布事件Canvas尺寸變化(HTML標簽)標簽位置不同設置方式標簽位置(標注工廠設備)標簽指示線或箭頭指向標注點鼠標選中模型…

Microsoft PyRIT能自動化完成AI紅隊的任務

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

兩數相加的問題

題目是:給兩個非空的鏈表,表示兩個非負整數。它們每位數都是按照逆序的方式存儲,并且每一個節點只能存儲一位數字。現在兩個數相加,并且以相同的形式返回一個表示和的鏈表。 首先回顧一下,什么是鏈表?鏈表…

《異常檢測——從經典算法到深度學習》26 Time-LLM:基于大語言模型的時間序列預測

《異常檢測——從經典算法到深度學習》 0 概論1 基于隔離森林的異常檢測算法 2 基于LOF的異常檢測算法3 基于One-Class SVM的異常檢測算法4 基于高斯概率密度異常檢測算法5 Opprentice——異常檢測經典算法最終篇6 基于重構概率的 VAE 異常檢測7 基于條件VAE異常檢測8 Donut: …

使用遞歸方法和類數組兩種方法計算斐波那契數列

菲波納契數列又稱"菲波納契神奇數列",是由13世紀的意大利數學家菲波納契提出的,當時是和兔子的繁殖問題有關的,它是一個很重要的數學模型。這個問題是:有小兔一對,若第二個月它們成年,第三個月生下小兔一對&…

3333666777

? 通用計算機啟動過程 1??一個基礎固件:BIOS 一個基礎固件:BIOS→基本IO系統,它提供以下功能: 上電后自檢功能 Power-On Self-Test,即POST:上電后,識別硬件配置并對其進行自檢&#xff0c…

阿里云倉庫

倉庫服務 (aliyun.com) maven中央倉庫: Central Repository: (maven.org)