程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java基礎學習第二天——基礎數據類型介紹

Java基礎學習第二天——基礎數據類型介紹

編輯:JAVA綜合教程

Java基礎學習第二天——基礎數據類型介紹


文檔版本 開發工具 測試平台 工程名字 日期 作者 備注 V1.0       2016.02.21 lutianfei none

第二章 Java基礎語法

本章內容
關鍵字 標識符 注釋 常量、進制和進制轉換 變量 數據類型和類型轉換 運算符 語句

(一)關鍵字

關鍵字概述
被Java語言賦予特定含義的單詞 關鍵字特點
組成關鍵字的字母全部小寫 關鍵字注意事項
gotoconst作為保留字存在,目前並不使用(在JDK的新版本中可能提升為關鍵字)

\


 <喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMyBpZD0="二標識符">(二)標識符 標識符概述
就是給類,接口,方法,變量等起名字時使用的字符序列 組成規則
英文大小寫字母 數字字符 $_ 注意事項
不能以數字開頭 不能是Java中的關鍵字 區分大小寫

1、常見命名規則

基本原則:見名知義 常見命名
(其實就是文件夾,用於解決相同類名問題,全部小寫)
單級:miaolu,liuyi 多級(用.隔開):cn.ali 類或者接口每個字首字母大寫,含有大小寫。
一個單詞 : 首字母大寫 eg:Times 多個單詞:每個單詞首字母大寫。 eg: StudentAge,ShowAllAge 方法和變量
一個單詞 : 全部小寫 eg:main,age 多個單詞:從第二個單詞開始每個單詞首字母大寫。 eg: studentAge,showAllAge 常量名基本數據類型的常量名使用全部大寫字母,_字與字之間用下劃線分隔。對象常量可大小混寫。
一個單詞 : 字母大寫 eg:TIME 多個單詞:字母大寫,每個單詞用_隔開。 eg: SIZE_TYPE

(三)注釋

注釋概述
用於解釋說明程序的文字

Java中注釋分類格式

單行注釋
格式: //注釋文字 多行注釋
格式: /* 注釋文字 */ 文檔注釋
格式:/** 注釋文字 */ 對於文檔注釋,是java特有的注釋,其中注釋內容可以被JDK提供的工具 javadoc 所解析,生成一套以網頁文件形式體現的該程序的說明文檔。

eg:標准注釋舉例:

//標准注釋

/*
 * 需求:准備寫一個Java程序,把HelloWorld!!!這句話輸出在控制台
 * 分析:
    * A:要寫一個Java程序,必須定義類
    * B: 把數據能夠輸出,說明我們的程序時可以獨立運行的,而 程序要獨立運行,必須定義main方法
    * C: 把數據輸出在控制台,必須使用輸出語句

 * 實現:
    * A:java 語言提供了一個關鍵字:class用來定義類,後面跟的是類名
    * B: main方法的格式是固定的:
        * public static void main(String[] args){

        }
    * C:輸出語句的格式是固定的:
        System.out.println("HelloWorld");
*/

//這是一個HelloWorld案例
class HelloWorld{
    /*
        為了程序能夠獨立運行,定義main方法
        main方法是程序的入口,被jvm自動調用
    */
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

 

(四)常量

常量概述
在程序執行的過程中其值不可以發生改變

Java中常量分類

字面值常量 自定義常量(面向對象部分講)

字面值常量分類

字符串常量 用雙引號括起來的內容
“Helloworld” 整數常量 所有整數
12,23 小數常量 所有小數
12.34,56.78 字符常量 用單引號括起來的內容
‘a’,’A’,’0’(必須只能是一個字符) 布爾常量 較為特有,只有truefalse 空常量 null(數組部分講解)

注對於數值默認按十進制處理。

二進制:0b100 八進制 :0100 十進制: 100 十六進制:0x100

原碼、反碼、補碼

有符號數據表示法
在計算機內,有符號數有3種表示法:原碼、反碼和補碼。所有數據的運算都是采用補碼進行的。 原碼
就是二進制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其余位表示數值的大小。 反碼
正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外

補碼

正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1

有符號數據練習

已知某數X的原碼為10110100B,試求X的補碼和反碼。 已知某數X的補碼11101110B,試求其原碼。(補碼 ->原碼 符號位除外直接取反加1)

 

(五)變量

變量概述
在程序執行的過程中,在某個范圍內其值可以發生改變的量 理解:如同數學中的未知數 變量定義格式
數據類型 變量名 = 初始化值; 注意:格式是固定的,記住格式,以不變應萬變

Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存總分配了不同大小的內存空間

數據類型 默認值 存儲格式 數據范圍 short 0 2個字節 -32,768到32767 int 0 4個字節 -2,147,483,648到2,147,483,647 byte 0 1個字節 -128到127 char /u0000 2個字節 Unicode的字符范圍 long 0L或0l 8個字節 -9,223,372,036,854,775,808到9,223,372,036, 854,775,807 float 0.0F或0.0f 4個字節 32位IEEEE 754單精度范圍 double 0.0或0.0D(d) 8個字節 64位IEEE 754雙精度范圍 boolean false 1位 true(1)或false(0)

\

注:

整數默認:int 小數默認:double 長整形後綴用L或l標記。建議用L。 單精度浮點數用F或f標記。建議用F。

使用變量注意事項:

作用域
變量定義在哪一級大括號中,哪個大括號的范圍就是這個變量的作用域。 相同的作用域中不能定義兩個同名變量。 初始化值
沒有初始化值不能直接使用。只要在使用之前給值就行,不一定在定義的時候立馬給值。

數據類型的默認轉換

一般來說要求參與運算的數據類型必須一致。 boolean類型不能轉換為其他的數據類型 默認轉換(小類型先轉成大類型再參與運算)
byte,short,char—>int—>long—>float—>double byte,short,char相互之間不轉換,他們參與運算時首先轉換為int類型

數據類型的強制轉換

目標類型 變量名=(目標類型)(被轉換的數據);
eg:byte c = (byte)(a+b); //int a,byte b;

數據類型中幾個小問題

1、在定義Long或者Float類型變量時,要加LF。 2、byte,short在定義的時候,他們接收的其實是一個int類型的值,如果值超過范圍就會報錯。 3、對於byte類型 -128 對應2進制 10000000 這裡1既是符號位又是數值位 4、byte,short,char -> int -> long -> float -> double
long 8 byte ,float :4byte;為什麼long會轉為float?
1、底層存儲結構不同 2、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

5、Java中的字符char可以存儲一個中文漢字,因為java語言中的字符變量占用兩個byte

6、Java語言采用的是Unicode編碼

面試題1

byte b1=3,b2=4;
b=b1+b2; b=3+4; 哪句是編譯失敗的呢?為什麼呢?
因為b1和b2是變量,因為變量相加首先考慮類型問題,最終把結果賦值時也會考慮類型問題,所以b1+b2後為保證不溢出,默認會轉為int類型進行存儲。 3和4都是常量,常量相加首先做加法,看結果是否超出byte類型的范圍。如果沒有可以正常賦值。

面試題2

byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少呢?
這樣寫會報錯,因為byte的范圍是 -128 ~ +127, 130溢出了。 byte b = (byte)130;編譯不會報錯,輸出結果為-126。 分析過程:
A : 130轉為2進制時:00000000 00000000 00000000 10000010(這是130的原碼,反碼,補碼) B : 截取操作,截取成byte : 10000010(這個結果是補碼) C :顯示以原碼形式呈現 轉為原碼(除符號位外取反+1)1111110

練習題1

求byte b = (byte)300 控制台打印的結果;
按照上面的分析過程 : 300 -> 00000001_00101100->00101100->44

練習題2,寫出下列程序結果

System.out.println(‘a’); 結果:a

System.out.println(‘a’+1);結果:97

System.out.println(“hello”+’a’+1);

System.out.println(‘a’+1+”hello”); System.out.println(“5+5=”+5+5);

System.out.println(5+5+”=5+5”);

注:
1、字符串數據和其他數據做+,結果是字符串類型.但是要注意運算的順序。

答案:
helloa1 98hello 5+5=55 10=5+5

補充float存儲格式

float類型數字在計算機中用4個字節存儲。遵循IEEE-754格式標准:
* 一個浮點數有2部分組成:底數m指數e

底數部分 使用二進制數來表示此浮點數的實際值 指數部分 占用8bit的二進制數,可表示數值范圍為0-255

但是指數可正可負,所以,IEEE規定,此處算出的次方必須減去127才是真正的指數。
所以,float類型的指數可從-126到128

底數部分實際是占用24bit的一個值,但是最高位始終為1,所以,最高位省去不存儲,在存儲中占23bit

科學計數法格式:

S_EEE EEEE E_MMM MMMM MMMM MMMM MMMM MMMM
S表示浮點數正負 E指數加上127後的值得二進制數據 M底數

舉例:17.625在內存中的存儲

首先要把17.625換算成二進制:10001.101 在將10001.101右移,直到小數點前只剩1位:1.0001101 * 2^4 因為右移動了四位 底數:因為小數點前必為1,所以IEEE規定只記錄小數點後的就好。所以,此處的底數為:0001101 指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011
符號部分是整數,所以是0
綜上所述,17.625在內存中的存儲格式是:
01000001 10001101 00000000 00000000

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved