1. 程式人生 > >Java--變數相加和常量相加(型別轉換)

Java--變數相加和常量相加(型別轉換)

混合運算的時候,byte,short,char不會相互轉換,都會自動將型別提升為int型別,其他型別進行混合運算時都是將小的資料型別提升為大的

byte,short,char ---- int ---- long ---- float ---- double

float的取值範圍比long的取值範圍要大

     long:2^63-1

     float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

//比較float和long型別取值範圍大小
		float f = 12.0F;
		long l = 88897382L;

		f = l;
		System.out.println(f);

		l = f ;
		System.out.println(l);
如下:float型別轉換為long型別就會報錯

 

將long型別轉換為float型別就會輸出正確的值


(1)變數相加時報錯

       b1b2是兩個變數,變數裡面儲存的值都是變化的,所以在程式執行中JVM是無法判斷裡面具體的值

       byte型別的變數在進行運算的時候,會自動型別提升為int型別

(2)常量相加沒有問題
class DataTypeConversion{
	public static void main(String[] agrs){
		byte b1 = 1;
		byte b2 = 2;
		byte b3 = b1 + b2;
		System.out.println(b3);
        /*
          1、byte與byte(或者short、char)進行運算的時候會提升為int
          2、b1和b2是兩個變數,變數儲存的值是變化的,在編譯時候無法判斷裡面具體的值,相加有可能超出byte的值範圍
        */
		byte b4 = 1 + 2;     //java編譯器常量優化機制
		byte b5 = 3;
		System.out.println(b4);
		System.out.println(b5);
	}
}
這時byte b3 = b1 + b2;會報錯如下:

  

同理如下:

short s = 1;s = s + 1;(報錯)   //short與int進行運算,提升為int型別
short s = 1;s += 1; (正常)     //s = (short)(s + 1);


相關推薦

Java--變數相加常量相加(型別轉換)

混合運算的時候,byte,short,char不會相互轉換,都會自動將型別提升為int型別,其他型別進行混合運算時都是將小的資料型別提升為大的 byte,short,char ---- int ---

JAVA中shortshort相加自動轉化為int

自動 精度 net article 編譯錯誤 detail ssi 但是 java 精度小於int的數值運算的時候都回被自動轉換為int後進行計算 所以,下面的代碼會報編譯錯誤 short s1 = 1;short s2 = 1;s1= (s1+s2); 必須改成: s

java中的BigDecimalString的相互轉換,intString的型別轉換,Integer類String相互轉換

一: /*由數字字串構造BigDecimal的方法 *設定BigDecimal的小數位數的方法 */ 注:BigDecimal在資料庫中存的是number型別。 import java.math.BigDecimal; //數字字串 String StrBd="1048576.1024"; /

java intfloat預設型別轉換探究

最近做一個圖片的小程式,發現經常有錯誤,後來發現是int轉float型別時出錯。不過通過本次錯誤更好的理解了型別轉換的原理:根據直系父母來定的。 a/b,結果型別是根據直系父母a和b來確定的。a,b都是int,結果也是int,否則根據型別轉換表來轉換。在處理複雜表示式的時候

Java中的向上型別轉換向下型別轉換

一、向上轉型。 通俗地講即是將子類物件轉為父類物件。此處父類物件可以是介面。 1,向上轉型中的方法呼叫。 看下面程式碼: package com.wensefu.others;   publicclass Animal {           publicv

java中stringint的相互轉換

integer chan 也會 tee tex 什麽 產生 chang details java中string和int的相互轉換 int -> String int i=12345;String s="";核心:s=i+""; String -> int s="

[轉]Java 變量常量

以及 row tro 位置 名稱 函數 它的 方法的參數 權限 變量和常量 在程序中存在大量的數據來代表程序的狀態,其中有些數據在程序的運行過程中值會發生改變,有些數據在程序運行過程中值不能發生改變,這些數據在程序中分別被叫做變量和常量。 在實際的程序中

java 字節流字符流轉換類InputStreamReader,OutPutStreamReader

spa modified num cep enter import stat avi buffer import java.io.*; public cla

java UTC時間local時間相互轉換

互轉 cat color except static 相互轉換 clas AS mil 1、local時間轉UTC時間 /** * local時間轉換成UTC時間 * @param localTime * @return *

Java變量常量聲明

pac system 4.5 image 變量名 其中 xxx args 定義變量 一、變量 1.變量的定義 變量是內存中的一個存儲區域,該區域有自己的名稱(變量名)和類型(數據類型),Java中每個變量必須先聲明,後使用 該區域的數據可以在同一

Java中Stringbyte[]間的轉換淺析

Java語言中字串型別和位元組陣列型別相互之間的轉換經常發生,網上的分析及程式碼也比較多,本文將分析總結常規的byte[]和String間的轉換以及十六進位制String和byte[]間相互轉換的原理及實現。 1. String轉byte[] 首先我們來分析一下常規的Strin

java裡面objectstring的相互轉換

1. string 轉 object Type type = new TypeToken<Object>() {}.getType(); Object obj = GsonUtils.fromJson(strValue, type);   2. object轉strin

使用java實現hexascii碼的轉換

幾乎很少寫JAVA程式碼,第一是確實不會,第二感覺JAVA寫起來不爽(較python、golang),但總有萬不得已必須要用java的時候。這裡記錄下使用java實現的hex十六進位制和acsii碼之間的轉換(程式碼主要還是從網上找來的,簡單改吧改吧)。 一、ASCII to Hex 這裡是將asc

Java駝峰命名下劃線命名轉換

import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 駝峰命名轉換 * * @author 47475 * */ public class Tool { private static Patte

OracleMysql關於型別轉換時的衝突問題

Oracle和Mysql關於型別轉換時的衝突問題 Mysql對大小寫不敏感,而Oracle則必須大寫 當型別轉換時,例如,mysql中某個欄位型別為Integer,在使用過程中,從map中獲取到時,需要從Object轉為Integer,是沒有問題的;而同樣的程式碼在Oracle中則不行,Oracl

言簡意賅——總結Java記憶體區域常量

Java記憶體區域和常量池的總結 本文用最簡潔的描述,來總結出Java記憶體區域和常量池的相關知識,如需更加深入學習Java記憶體區域以及常量池,可參考閱讀《深入Java虛擬機器》或者網上優秀博文。 執行時資料區 執行資料區包含以下幾個區域: 方法區(Method Area) Java堆(H

Java裡面timestamplong的相互轉換

long t = System.currentTimeMillis();// 獲得當前系統毫秒數,這個是1970-01-01到現在的毫秒數 System.out.println("t = "+t); Date da = new Date(t);System.out.println("da = "+da)

Java字串CST時間日期的轉換

在工作過程中,一些業務免不了接觸到了一些對時間字串的處理,整理如下: 轉換諸如 “ Wed, 17 Oct 2018 20:17:40 CST”,“ Wed, 17 Oct 2018 20:17:40 BST”等字元時間樣式 @Test public void parse

java中String,int,Integer,char 型別轉換

如何將整數 int 轉換成Integer ? Integer integer=new Integer(i); 如何將Integer 轉換成 int ? int num=Integer.intValue(); 如何將字串 String 轉換成整數 int? int i =

Java中StringInt類相互轉換的方法

String Sch_No = "1707020410"; int output = Integer.parseInt(Sch_No); 這樣就將學號“1707020410” 轉換成了純數字1707020410   其他的也是類似的 double d = Double.p