Java的基本數據類型和運算

来源:http://www.cnblogs.com/zhouguanglin/archive/2017/07/16/7190630.html
-Advertisement-
Play Games

編碼 ASCII--0~127 65-A 97-a 西歐碼表 ISO-8859-1 0-255 1個位元組 gb2312 0-65535 gbk 2個位元組 Unicode編碼體系 utf-8 3個位元組 中 f bit位 Byte位元組 1Byte = 8bit 1KB=1024B MB GB TB PB ...


編碼

ASCII--0~127  65-A  97-a

西歐碼表---ISO-8859-1---0-255---1個位元組

gb2312----0-65535---gbk---2個位元組

Unicode編碼體系---utf-8---3個位元組

中  f

bit位 Byte位元組 1Byte = 8bit   1KB=1024B  MB GB TB PB---電腦中存儲單位

常量

整數常量---所有的整數 3,99,107

小數常量---所有的小數  3.5  100.9

字元常量---用單引號將一個字母、數字、符號標識起來 ‘a’  ‘=’ ‘ ’

字元串常量---用雙引號將一個或者多個字元標識起來 “abc” “234” “q2” “”

布爾常量---用於表示邏輯值---true/false

空常量---null

5-整數, 5.0-小數  ‘5’-字元 “5”-字元串 ‘5.0’-寫法錯誤 “5.0”-字元串

進位

二進位:滿二進一,0~1 1+1=10 0b10011 0b0011,從JDK1.7開始,允許以0b作為開頭來標識一個數字是一個二進位數字

八進位:滿八進一,0~7, 7+1=10 要求必須以0作為開頭 06  015

十進位:滿十進一,0~9

十六進位:滿十六進一,0~9,,A~F,9+1=A f+1=10 要求以0x作為開頭 0x5  0xad

進位的轉換

十進位轉換成二進位:不斷除以2取餘,然後將餘數倒排

 

二進位轉換成十進位:從低位次起,按位次乘以2的位次次冪,然後求和

 

二進位轉換成八進位:從低位次起,每三位劃分為一組,不足三位補0,產生一位八進位數字,將這些數字按序排列即可

八進位轉換成二進位:一變三---一位八進位數字產生三位二進位數字

二進位轉換成十六進位:四變一的過程

變數

 

System.out.println(i);

int i = 5;---不行---變數必須先聲明在使用

int i;

System.out.println(i);---不行----變數在使用之前必須先初始化

數據類型

基本數據類型

數值型

整數型

byte---位元組型---1個位元組--- -2^7~2^7-1 --- -128~127

byte b = 5; byte b2 = -128;

short---短整型---2個位元組--- -2^15~2^15-1 --- -32768~32767

short s = 54; short s = -900;

int---整型---4個位元組--- -2^31~2^31-1

int i = 100000;

int  j = 100_000_000;--從JDK1.7開始是允許的。在編譯的時候會自動忽略這些_ ->  int  j = 100000000;

int  i = 00001111;---八進位

Java中整數預設類型就是int

long---長整型---8個位元組--- -2^63~2^63-1---以L作為結尾標識這個數字是一個long類型的數字

long l = 3L;

浮點型

float---單精度---4個位元組---必須以f作為結尾

float f = 3.2f;

double---雙精度---8個位元組

Java中小數預設是double類型

double d = 3.5;

double d = 4.6D;---可以

double d = 3.9e4; //是十進位的科學計數法

double d = 0x3p2; //是十六進位的科學計數法  -> 12

字元型

char---2個位元組--- 0 ~65535

char c  = ‘a’;

char c = ‘中’;

布爾型

boolean---true/false

boolean b = false;

引用數據類型

類---class  介面---interface   數組---[]

數據類型的轉換

隱式轉換/自動類型轉換

byte b = 100;

int i = b;

long l = 63;---可以---當整數的值在int類型的範圍內的時候,可以不用添加L這個結尾

規律一:小的類型可以轉化為大的類型---byte->short->int->long  float->double

int i = 5;

float f = i;

long l = 6;

float f = l;

規律二:整數可以轉化為小數,但是可能產生精度損失

char c = ‘a’;

int i = c;

規律三:字元型可以轉化為整型

short s = ‘a’;---可以

char c = 100;---可以

 

char c = ‘a’;

short s = c;---不可以

定義了char類型的變數c,存儲的數據是一個字元,不需要檢查具體的字元編碼,當賦值給short類型的時候,short需要檢查這個字元對應的編碼是否在short類型的取值範圍內,這個時候無法確定這個字元對應的具體編碼,由於short類型的取值範圍和char類型沒有完全重合,為了防止出現超過範圍的情況,不允許賦值。

 

short s = 97;

char c = s;--不可以

 

顯式轉換/強制類型轉換

long l = 54;

int i = (int)l;

double d = 3.5;

int i = (int)d;---小數強轉成整數的時候,小數部分直接捨棄

double類型不能精確存儲小數

Hexadecimal--十六進位

Decimal--十進位

Octal---八進位

Binary--二進位

運算符

算術運算符

+加 -減 *乘 /除 %取模 ++自增 --自減 +字元串拼接

int i = 5210 / 1000 * 1000;--->i = 5000;

註意:

1. 整數運算完成之後結果一定是整數

2. 整數除以0的時候,編譯通過,運行報錯---ArimeticException---算術異常

3. 小數除以0的結果是Infinity

4. 0/0.0的結果是NaN---Not a Number---非數字

5. byte/short類型在運算的時候會自動提升為int類型

 

%取餘運算

-5%3=-2   -4%3=-1  -3%7=-3

5%-3=2  7%-2=1  2%-8=2

-5%-3=-2  -9%-3=0

對於負數的取餘,先按照正數的取餘運算,看取餘符號左邊的數字的符號,如果左邊是負數,那麼結果就是負數

5%1.2=0.2   6%1.3=0.8

4.3%1.4=0.1

 

++/--

對於++在原來的基礎上自增1

int i = 5;

int j = ++i;---> i自增1,然後將i的值賦值給j---先自增,再運算

int j = i++;--->先獲取i的值5,i自增變成6,然後將獲取的值5賦值給j---先運算,再自增

int i = 3;

int j = ++i * 2;-> j = 8;

int j = i++ * 2;->j = 6

 

int i = 6;

int j = i++ + ++i;->i = 8;  j = 14;

int j = ++i + i++;->i = 8; j = 14 

 

byte b = 5;

b++;---JVM在底層會對結果進行強制類型轉換,將結果再轉換為byte類型

 

char c = ‘a’;

System.out.println(c + 4);--可以

char c2 = ‘d’;

System.out.println(c + c2);---提升為int類型之後再進行運算

 

+ 字元串拼接運算

“a” + “b”---> “ab”

“a” + 3---> “a3”

“a” + true-> “atrue”

2 + 4 + “f”-> “6f”

“f” + 2 + 4-> “f24”

賦值運算符

= += -= *= /= %= &= |= ^= <<= >>= >>>= ~=

int i= 5;

i += 3; -> i = i + 3; -> i = 8;

i -= 2;-> i = i - 2;-> i = 3;

int j;

j += 4;---不行

 

int i = 5;

i += i -= i *= 5;--> i = -15;

i = 5 + ( 5 - (5 * 5)) ;

i += i -= i *= ++i;--->i = -20;

i += i*= i-= (i++ + --i);---> i = -20;

i = 5 + ( 5 * (5 - (5 + 5)));

 

byte b = 5;

b += 3;---可以

byte b = 125;

b += 3;---可以--- -128

比較/關係運算符

==相等 !=不等 > < >= <= instanceof

3 == 4;-> false

instanceof---判斷對象與類的關係的--只能用於引用數據類型

String s = “abd”;

System.out.println(s instanceof String);---true

System.out.println(“def” instanceof String);---true

邏輯運算符

用於運算邏輯值

&與 |或 !非 ^異或 &&短路與 ||短路或

true&true=true true&false=false false&true=false false&false=false

true|true=true true|false=true false|true=true false|false=false

!true=false !false=true

true^true=false true^false=true false^true=true false^false=false

對於&&,如果前一個表達式的值為false,那麼就能確定整個表達式的值為false,&&後邊的運算就不再進行了

三元/三目/條件運算符

邏輯值?表達式1:表達式2

如果邏輯值為true,執行表達式1;反之執行表達式2

int i = 5, j = 7;

i > j ? System.out.println(i): System.out.println(j);---不行!三元運算符運算完成之後必須有結果!

double d = i > j ? i  * 2.5 : j;---兩個表達式的返回值類型要麼一致,要麼相容

從控制台獲取數據

import java.util.Scanner; //寫在package之下,class 之上

Scanner s = new Scanner(System.in);

int i = s.nextInt();

double d = s.nextDouble();

String str = s.nextLine();

String str2 = s.next();


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

-Advertisement-
Play Games
更多相關文章
  • 今天在用python實現爬蟲的時候,就想看一下用c#實現同樣的功能到底會多出來多少code,結果寫著寫著乾脆把頁面也簡單的寫一個出來,方便調試, 大致流程如下: 1.分析拉勾數據 2.查找拉勾做了哪些反爬蟲限制 3.抓取數據,show page 過程中用到一個HtmlAgilityPack第三方庫, ...
  • Windows Server 2012+ASP.NET +Mysql 最近用戶量突破10+以上,最大併發1300+ 資料庫CPU居高不下,一時達到100%臨界點,導致很多SQL命令執行發生錯誤,連接拒絕。 ...
  • 在上一篇我們在菜單欄創建了一個菜單,菜單上顯示了一個圖標跟文本。那麼我們自己創建的菜單如何修改自定義的菜單圖標呢。下麵娓娓道來。。。。。 首先你要有一個圖,創建一個32位的點陣圖。這個點陣圖的像素是16px 16px,或者是16px 16px的倍數。 每個圖標都放在單個行中彼此相鄰的點陣圖上。使用Alph ...
  • 最近有接觸到關於visual studio 2017 擴展的開發,特此記錄,也是為了督促自己去深入瞭解其原理。 開始開發Visual Studio 擴展,在這裡我安裝了visual studio 2017, 在安裝的時候記得勾選上visual studio 擴展開發。 創建一個項目 我們打開編譯器, ...
  • 由於數據類型多,要按照逐個類型寫一個類型轉換的方法的話一是代碼量多,顯得累贅。 ...
  • 電商平臺 都會有搶購的情況,比如 1元搶購。 而搶購 最重要的 就是庫存,很多情況下 庫存處理不好,就會出現超賣現象。 本文將用redis為緩存,StackExchange 框架,消息隊列方式 實現分散式鎖的情況 一,效果 先看效果, 窗體下單 構建高併發情況 開多個控制台應用程式 處理訂單 二,配 ...
  • 在asp.net中常見的<%%>方式有如下幾種: <%%>、<%=%>、<%:%>、<%#%>、<%$%>、<%@%> <%%>:書寫後臺代碼,如C#、vb等代碼 <%=%>:計算=後面的表達式,並將結果輸出 <%:%>:將:號後面的內容編碼輸出,實際<%=Server.HtmlEncode()%> ...
  • 一、C#語言 C#是微軟在2000開始推出的一種面向對象的編程語言。 它簡單易學、類型安全,可以用非常簡潔易懂的代碼寫出理想的功能,大大提高了開發人員的工作效率,並降低了程式的維護成本。 作為一種面向對象的語言,C#支持封裝、繼承和多態等概念。 按照微軟一貫的語法糖作風,在C#後續的版本里,陸續推出 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...