1. java-基本數據類型有哪幾個
Java的基本數據類型在Java中,每個存放數據的變數都是有類型的,如:char ch;float x;int a,b,c;ch是字元型的,就會分配到2個位元組內存。不同類型的變數在內存中分配的位元組數不同,同時存儲方式也是不同的。所以給變數賦值前需要先確定變數的類型,確定了變數的類型,即確定了數據需分配內存空間的大小,數據在內存的存儲方式。1. Java中的數據類型Java中的數據類型有基本數據類型和引用數據類型兩大類,圖2-1呈現了Java中數據類型的概貌。圖2-1 Java中的數據類型概貌本講就基本數據類型進行討論,引用數據類型將在下一篇中論述。以下討論每一種數據類型時,對常量和變數作分別說明。所謂常量,就是直接的值;而變數則是放置常量的容器,除了放置常量之外,也可以給變數一個運算式,變數中的值是可變的。2. 布爾型—boolean布爾型又名邏輯型,它是最簡單的數據類型,在流程式控制制時常會用到。有C++編程經驗的學習者,要特別看清,Java中的布爾型數據不對應於任何整數值。布爾型常量:true和false。需要注意的是,布爾常量的組成字母一律都是小寫的。 布爾型變數:以boolean定義的變數,如:boolean b = true; //定義變數b是boolean,且值為true3. 字元類型—char(1)字元常量字元常量指用單引號括起來的單個字元,如『a』,『A』。請特別注意,字元的定界符是單引號,而非雙引號。除了以上所述形式的字元常量值之外,Java還允許使用一種特殊形式的字元常量值,這通常用於表示難以用一般字元來表示的字元,這種特殊形式的字元是以一個「\」開頭的字元序列,稱為轉義字元。Java中的常用轉義字元見表2-1。表2-1 Java中的轉義字元轉義字元 描述\ddd 1~3位八進制數所表示的字元(ddd)\uxxxx 1~4位十六進制數所表示的字元(xxxx)如『\u0061』表示『a』\』 \」 單引號字元和雙引號字元\\ 反斜杠\r 回車\n 換行\t 橫向跳格\f 走紙換頁\b 退格(2)字元變數以char定義的變數,如char c='a';要特別加以說明的是,Java的文本編碼採用Unicode集,Java字元16位無符號型數據,一個字元變數在內存中佔2個位元組。例1:編程測試十六進制數41、51對應的字元,並相隔一個tab位輸出。分析:已知十六進制數,求字元。根據表2-1,可用'\uxxxx'的轉義字元形式來表示所求字元,然後直接輸出即可。[HDTest.java] class HDTest{ public static void main(String[] args){ char a='\u0041'; char b='\u0051'; System.out.println(a+" "+b); //字元之間以若干空格相間 } }程序運行結果:A Q4. 定點類型(整型)定點類型包括了位元組型、整型、短整型和長整型,它們在內存中雖然占據的位元組數互不相同,但它們的存儲方式是同樣的,所以這里把這些類型歸並在一起討論。「定點」的意思是把小數點定在末尾,小數點後沒有數字的數據,Java中通常把它們稱為整數。(1)定點常量定點常量是整型常數,它可用十進制、八進制、十六種進制三種方式來表示。ナ十進制定點常量:如123、-456、0。ナ八進制定點常量:以0前導,形式為0dd...d。如0123表示十進制數83,-011表示十進制數-9。ナ十六進制定點常量:以0x或0X開頭,如0x123表示十進制數291,-0X12表示十進制數-18。(2)定點變數定點變數即整型變數,可細分成位元組型變數、整型變數、短整型變數和長整型變數四種。表2-2對各種定點變數的開銷內存位元組數和數值范圍作簡要說明。表2-2 關於整型變數的說明 定點變數 佔位元組數 范 圍位元組型byte 1 [-128,127],即從-27~27-1短整型short 2 [-32 768, 32 767],即-215~215-1整型int 4 [-2 147 483 648, 2 147 483 647],即-231~231-1長整型long 8 -263~263-1需要注意的是,如果要將一定點常量賦值給一個定點變數,需要查驗常量是否在該變數的表達范圍內,如超出范圍程序會編譯出錯。如:byte b = 200; //JCreator編譯時錯誤信息是「可能損失精度」例2:閱讀程序,分析其運行結果。[OHTest.java] class OHTest{ public static void main(String[] args){ int x = 010; System.out.println("x = "+ x); int y = 0x10; System.out.println("y = " + y); } }程序運行結果略,請思考並調試驗證。5. 浮點型(實型)(1)浮點常量即帶小數點的實型數值,可以由直接帶小數點的數值和科學計數法兩種形式來表示:ナ帶小數點的數值形式:由數字和小數點組成,如0.123、.123、123.、123.0。ナ科學計數法表示形式:由一般實數和e±n(E±n)組成,如12.3e3、5E-3,它們分別表示12.3×103和5×10-3。需要注意的是,e或E之前必須有數字,且e或E後面的指數必須為整數。(2)浮點變數浮點變數有單精度變數和雙精度變數之分,不同的精度開銷的內存位元組數和表達的數值范圍均有區別。兩種浮點變數占內存位元組數和數值范圍見表2-3。表2-3 單精度變數和雙精度變數簡要說明浮點變數 佔位元組數 范圍單精度float 4 3.4e-038~3.4e+038,-3.4e+038~-3.4e-038 雙精度double 8 1.7e-308~1.7e+308,-1.74e+038~-3.4e-038浮點常量也有單精度和雙精度之分,前面列出的常量均是雙精度常量,如果要特別說明為單精度常量,可以數據末尾加上f或F作為後綴,如12.34f。如果要特別指明一個浮點常量是雙精度常量,數據末尾不需要添加後綴,或者在數據末尾加上d或D作為後綴,如12.34d。例3:輸入一個圓的半徑,求圓面積。分析:圓半徑在編寫程序時是不確定的,其值在程序運行時輸入,這樣程序就比較通用,可以處理不同半徑的求面積和周長問題。這就涉及數據輸入的問題,參照本講第一節,輸入數據通過Scanner掃描器解決。[CircleArea.java] import java.util.Scanner; class CircleArea{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); double r = sc.nextDouble(); double area = Math.PI * r * r; System.out.println(area); } }
2. java語言有幾種數據類型怎樣申明和賦值
一、基本數據類型
整型:byte、short、int、long (在計算機中以二進制補碼格式存儲)
浮點型:float、double (在計算機中以IEEE754格式存儲)
字元型:char (在計算機中以unicode碼格式存儲)
布爾型:boolean (只有true和false兩個值)
二、 1.長整型:long
定義:long a=100;int b=a; (編譯出錯)
給a重新賦值:long a=2147483648; (編譯出錯)
定義:long a=2147483648L;(正確,說明此時可以是long型的取值范圍)
說明在long型的數據後不加L/l時,數據仍為long型,但其取值范圍卻是int型的取值范圍;數據後加L/l時,取值范圍才是long型的取值范圍。
2.浮點型:long
定義:float a=19; 輸出a時為19.0
定義:float a=19.1; (編譯出錯)
定義:float a=19.1f; (正確)
說明在 float型的數據後不加F/f,則數據不能有小數位,但輸出時,能夠輸出一位小數;若在float型的數據後加上F/f,則數據可以有小數位;
三、類型轉換(註:boolean型不會發生類型轉換,基本類型和復合類型不能相互轉換)
1.自動轉換
1)賦值轉換:用於短位元組的數據類型轉換成長位元組的數據類型(byte型的數據不能轉換成char型,short型和char型數據也不能相互轉換)
2)單目運算符提升
++、——運算符不會自動提升,+(正)、-(負)會將byte、short、char型的數據自動轉換成int型的數據
3)雙目運算符提升
如果有一個操作數是double型的,則把另一個轉換成double型;否則如果有一個操作數是float型的,則把另一個轉換成float型;否則 如果有一個操作數是long型的,則把另一個轉換成long型;否則兩個操作數都轉換成int型。
4)三目運算符<op1> ? <op2> : <op3>其中op1必須是boolean型的,而op2和op3兩操作數必須是能夠自動轉換成相同類型的數據,op2和op3會自動提升為兩操作數中位元組較長的一個,並且結果為提升後的類型。
如:byte a1=20;
short a2=10;
boolean b=true;
short c = b ?
a1 : a2;
結果為short型的數據c
2.強制轉換
例子:
int a;
byte b=(byte)a;
定義:a=-126;
(分析:int形的數據有4個位元組,而byte形的數據只有1個位元組,所以只取int型數據的最後一個位元組)
a的原碼: 10000000,00000000,00000000,01111110
補碼: 11111111,11111111,11111111,10000010
法一:r=(10000010)=130 (此時將 10000010 看成是純的二進制數去計算,而不考慮它的符號位); byte型數據范圍〔-128,127〕,由於 r>127,所以 r=r-M (若整型數據值域[-L,R],則M=L+R+1),如果r還不在byte型數據的取值范圍內,則繼續 r=r-M 直至r在其取值范圍內,取得r後,即為byte型的 b .此處r=-126,所以輸出b為-126.
法二:直接將int型數據的最後一個位元組看成是byte型數據的補碼形式,在將補碼轉換成原碼,即得到 b
四、邏輯運算符
1.&&和|| (&&的優先順序要高於||的)
特點:只要左操作數已經得出整個表達式的值,就不再計算右操作數的之值,左右操作數必須為boolean型的。
例子:
boolean test1= ++x==-1 && ++x==1 || ++x=2;
boolean test2= ++y==-1 || ++y==1 && ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果:1 false
2 true
2.&和| (邏輯位運算符)
特點:先把兩個操作數的值計算出來,然後再進行邏輯運算
int x=-1,y=-1;
boolean test1= ++x==-1 & ++x==1 | ++x=2;
boolean test2= ++y==-1 | ++y==1 & ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果: 2 false
2 true
五、移位運算
<< (左移)高位丟失、低位以0填充
>> (右移) 低位丟失、高位以符號位填充
>>> (無符號位右移) 低位丟失、高位以0填充
此運算符不會對左右兩操作數作算術提升,但會對左操作數進行單獨提升,若為byte、short、char、int型,則得到結果為int型,若為long型,則結果為long型,但左右操作數均不能為浮點型,否則出錯。
當左操作數為int型時,右操作數的低5位才有用,這樣可以防止移位超過int型所具有的位數,當左操作數為long型時,右操作數的低6位才有用。
例子:
int a=-2;
short b=-10;
int c=a>>b;
b的補碼:11111111,11111111,11111111,11110110
取b的最後5位, r=(10110)=22;
a的補碼:11111111,11111111,11111111,11111110
將a向右移動22位,再在高位補上1,得到 11111111,11111111,11111111,11111111 ,轉換成原碼得到 c=-1
六、賦值運算
1.簡單賦值運算
表達式: <變數>=<表達式>
左操作數可以事先沒有賦值
表達式的類型必須和變數的類型相同,或能賦值轉換成變數的類型,
2.組合賦值運算
表達式:<變數> op= <表達式>
int a=10;
double b=23.3;
a*=b;
左操作數事先一定要賦值
左邊的類型和右邊的類型不一定要相同,此處a*b得到的是double型的,組合運算符會自動把double型的值轉換成int型的值存入變數a中。
3. java中的數據類型
java中的數據類型分兩大類分別是基本類型和引用數據類型。
一、基本類型
1)Java中的數據類型有八種,即基本類型。具體如下:
數據類型 位數 取值范圍:
Boolean 1 True|False
Byte 8 -128~127
Short 16 -32768~32767
Int 32 -2e31~2e31-1
Long 64 -2e63~2e63-1
Float 32 略
Double 64 略
Char 16 0~65535
『 /u0000』 ~』uFFFF『
二、引用數據類型
1)定義一個byte變數 如:byte b= -256;
由於-256超出了』Byte』的取值范圍,所以要使程序不報錯,有一下幾種解決方法:
A:更改變數的數據類型(如:將byte改為int);
B:更改變數名的賦值,使其包括在變數的數據類型的值域內;
C:進行強制轉換:如: byte b=(byte)-256:
『進行強制轉換後,雖然程序不在報錯,但是有可能會使原值的精度收到影響』
D:定義一個浮點類型數時,記得要在數值的後面加上「f」或「F」。(如:Float f=10000.0f;)
E:若定義 Char c=a;定義 int n=c;則輸出的n值為「a「的ASCII值,即97。
2)引用數據類型的定義
A:對象都是引用數據類型
B:應用類型使用NEW調用構造方法進行賦值
C:在Java中,除了基本數據類型以外,其餘的全都屬於引用數據類型, 如:
a:API中的類,如String,File等;
b:數據;
c:自定義的類,如Cars,Student
d:對象全部是引用數據類型。
(3)javaboolean幾個位元組擴展閱讀
其他數據類型:
在java中,String本身也提供了很多的方法供我們使用:
獲取到指定索引位置的字元:char c = 字元串.charAt(索引位置);
獲取到指定索引位置的字元:char c = 字元串.charAt(索引位置);
獲取第一次出現在字元串中的字元:int index = 字元串.index('a');
獲取在字元串中字元的索引位置:int index = 字元串.index('a',1);
如果想比較兩個字元串是否相等:字元串.equeals(字元串);
判斷字元串是否為空:字元串.isEmpty();
獲取字元串的長度:字元串.length();
根據某一個條件,將字元串進行分割:字元串.split("abc");
根據條件取出內容:字元串.substring(開始位置,結束位置);
4. JAVA中8個數據類型的取值范圍是多少
在JAVA中一共有八種基本數據類型,他們分別是
byte、short、int、long、float、double、char、boolean
整型:
其中byte、short、int、long都是表示整數的,只不過他們的取值范圍不一樣。
byte的取值范圍為-128~127,佔用1個位元組(-2的7次方到2的7次方-1);
short的取值范圍為-32768~32767,佔用2個位元組(-2的15次方到2的15次方-1) ;
int的取值范圍為(-2147483648~2147483647),佔用4個位元組(-2的31次方到2的31次方-1) ;
long的取值范圍為(-9223372036854774808~9223372036854774807),佔用8個位元組(-2的63次方到2的63次方-1);
可以看到byte和short的取值范圍比較小,而long的取值范圍太大,佔用的空間多,基本上int可以滿足我們的日常的計算了,而且int也是使用的最多的整型類型了。
在通常情況下,如果JAVA中出現了一個整數數字比如35,那麼這個數字就是int型的,如果我們希望它是byte型的,可以在數據後加上大寫的 B:35B,表示它是byte型的,同樣的35S表示short型,35L表示long型的,表示int我們可以什麼都不用加,但是如果要表示long型的,就一定要在數據後面加「L」。
浮點型 :
float和double是表示浮點型的數據類型,他們之間的區別在於他們的精確度不同 ;
float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方)佔用4個位元組 ;
double 1.797693e+308~ 4.9000000e-324 佔用8個位元組 ;
double型比float型存儲范圍更大,精度更高,所以通常的浮點型的數據在不聲明的情況下都是double型的,如果要表示一個數據是float型的,可以在數據後面加上「F」。
浮點型的數據是不能完全精確的,所以有的時候在計算的時候可能會在小數點最後幾位出現浮動,這是正常的。
boolean型(布爾型):
這個類型只有兩個值,true和false(真和非真);
boolean t = true;
boolean f = false;
char型(文本型) :
用於存放字元的數據類型,佔用2個位元組,採用unicode編碼,它的前128位元組編碼與ASCII兼容
字元的存儲范圍在u0000~uFFFF,在定義字元型的數據時候要注意加' ',比如 '1'表示字元'1'而不是數值1。
5. java有幾種數據類型
基本數據類型
整數類型:
byte:位元組佔用 1位元組 8位,用來表達最小的數據單位,儲存數據長度為 正負 127;
short:位元組佔用 2位元組 16位,儲存數值長度為 -32768-32767
int:位元組佔用 4位元組 32位,最為常用的整數類型,儲存長度為,-2^31-1~2^31 (21 億)
long:位元組佔用 8位元組 64位,當到達int數值極限時使用,儲存長度為 看圖片: