用於存儲可變數據的容器。html
數據類型 變量名 = 值前端
常量是指在程序運行過程當中其值不能改變的量。java
Java中常量的分類:程序員
整數常量 : 全部整數編程
小數常量 : 全部小數數組
布爾常量 : 只有true和false函數
字符常量 :使用’’引發來的單個字符工具
字符串常量 :使用「」引發來的字符序列,「」 、「a」 、」 」 字體
null常量 : 只有一個值null大數據
就是程序員在定義java程序時,自定義的一些名字,例如helloworld 程序裏關鍵字class 後跟的Demo,就是咱們定義的類名。類名就屬於標識符的一種。
標識符除了應用在類名上,還能夠用在變量、函數名、包名上。
多個單詞組成時全部字母小寫(例:package com.itcast)
多個單詞組成時全部單詞的首字母大寫(例:HelloWorld)
多個單詞組成時第一個單詞首字母小寫,其餘單詞首字母大寫(例:lastAccessTime、getTime)。
多個單詞組成時,字母所有大寫,多個單詞之間使用_分隔(例:INTEGER_CACHE)
注意:只是爲了增長規範性、可讀性而作的一種約定,標識符在定義的時候最 好見名知意,提升代碼閱讀性。
經過註釋提升程序的可讀性,是java程序的條理更加清晰,易於區分代碼行與註釋行。另外一般在程序開頭加入做者,時間,版本,要實現的功能等內容註釋,方便後來的維護以及程序員的交流。
單行註釋(line comment)
用//表示,編譯器看到//會忽略該行//後的所文本
多行註釋(block comment)
用/**/表示,編譯器看到/*時會搜索接下來的*/,忽略掉/**/之間的文本。
文檔註釋
用/** */表示,是java特有的註釋,其中註釋內容能夠被JDK提供的工具 javadoc 所解析,生成一套以網頁文件形式體現的該程序的說明文檔。
文檔註釋 (編寫軟件說明書)
如何生成軟件說明書:
|
javadoc 工具軟件識別如下標籤:
@author 做者
@version 版本
@param 方法的參數
@return 返回值
註釋的使用細節:
三種註釋能夠出如今程序的任何地方,可是不推薦找任意位置。
1. 編程習慣:
1. 給哪條語句進行說明,註釋應該寫在該語句的旁邊。
2. 單行註釋通常寫在語句的後面多行註釋和文檔註釋通常寫在語句的上面
注意:文檔註釋只能出如今類、屬性、方法的上面。
計算機的最基本用途之一就是執行數學運算,做爲一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。咱們能夠把運算符分紅如下幾組:
算術運算符
關係運算符
運算符 |
運算 |
例子 |
結果 |
== |
相等於 |
4= =3 |
false |
!= |
不等於 |
4!= 3 |
true |
< |
小於 |
4 < 3 |
flase |
> |
大於 |
4>3 |
true |
<= |
小於等於 |
4<=3 |
false |
>= |
大於等於 |
4>=3 |
true |
Instanceof |
檢查是不是類的對象 |
"hello"instanceof String |
true |
位運算符
位運算符
|
運算符含義
|
& |
與(AND) |
| |
或(OR) |
^ |
異或 |
~ |
取反 |
邏輯運算符
賦值運算符
運算符 |
運算 |
範例 |
結果 |
= |
賦值 |
a=3,b=2 |
a=3,b=2 |
+= |
加等於 |
a=3,b=3;a+=b; |
a=5,b=2; |
-= |
減等於 |
a=3,b=2,a-=b; |
a=1,b=2; |
*= |
乘等於 |
a=3,b=2,a*=b; |
a=6,b=2 |
/= |
除等於 |
a=3,b=2,a/=b; |
a=1,b=2; |
%= |
模等於 |
a=3,b=2,a%=b; |
a=1,b=2 |
其餘運算符
三元運算符
格式
(條件表達式)?表達式1:表達式2;
若是條件爲true,運算後的結果是表達式1;
若是條件爲false,運算後的結果是表達式2;
示例:
1獲取兩個數中大數。
int x=3,y=4,z;
z = (x>y)?x:y;//z變量存儲的就是兩個數的大數。
int x = 1; int y = 2; int z; z = x > y ? x : y; System.out.println(z); //2 |
2判斷一個數是奇數仍是偶數。
int x=5; System.out.println((x%2==0?"偶數":"奇數")); |
運算符的優先級與結合性
Java 基本數據類型
變量就是申請內存來存儲值。也就是說,當建立變量的時候,須要在內存中申請空間。
內存管理系統根據變量的類型爲變量分配存儲空間,分配的空間只能用來儲存該類型數據。
所以,經過定義不一樣類型的變量,能夠在內存中儲存整數、小數或者字符。
Java 的兩大數據類型:
詳見http://www.javashuo.com/article/p-fctqqunr-y.html
數據類型轉換
整型、實型(常量)、字符型數據能夠混合運算。運算中,不一樣類型的數據先轉化爲同一類型,而後進行運算。
轉換從低級到高級:
低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double |
數據類型轉換必須知足以下規則:
自動類型轉換(也叫隱式類型轉換)
要實現自動類型的轉換,須要知足兩個條件:
第一兩種類型彼此兼容
第二目標類型取值範圍必須大於源類型。
全部的數字類型,包括整形和浮點型彼此均可以進行轉換。
強制類型轉換(也叫顯式類型轉換)
當兩種類型彼此不兼容,或者目標類型取值範圍小於源類型(目標是byte源是int)
沒法自動轉換,此時就須要進行強制類型轉換。
強制類型轉換須要注意:
損失精度!!!
類型轉換的原理
能夠把byte 理解爲1兩的碗,short 2兩的碗,int 4兩的碗,long 8兩的碗。1兩碗的滿碗酒能夠倒入 2兩 4兩 8兩的碗中。可是 4兩碗的酒倒入1兩碗的酒就有一些問題。
何時要用強制類型轉換
好比小數部分只想保留整數部分.
必定要清楚要轉換的數據在轉換後數據的範圍內不然會損失精度.
public static void main(String[] args) { byte b = 100; b = (byte) (b + 2); System.out.println(b); // 102 //捨棄小數部分 double d=5.5; int num=(int)d; } |
表達式的數據類型自動提高
算術表達式,邏輯表達式
全部的byte型、short型和char的值將被提高到int型。
若是一個操做數是long型,計算結果就是long型;
若是一個操做數是float型,計算結果就是float型;
若是一個操做數是double型,計算結果就是double型。
自動類型提高
byte b = 3; int x = 4; x = x + b;// b會自動提高爲int 類型參與運算。 System.out.println(x);// 7
|
強制類型轉換
byte b = 2; /* * 強制類型轉換,強制將b+2強制轉換爲byte類型,再賦值給b */ b = (byte) (b + 2); System.out.println(b);// 4 |
分析 System.out.println(‘a’+1)結果?
System.out.println(‘a’+1)結果
美國人爲了讓計算機識別他們生活中的文字,讓二進制表示生活中的文字.因此一個字母表明瞭一個二進制.,二進制也有十進制的表現形式.,把生活中的字母都用數字來標識,例如97 表明a ,98 表明 b。打印’a’就把a做爲輸出顯示,沒有疑問。可是 ‘a’+1 有加號涉及到了運算。根據java自動類型提高規則,一樣道理 char 提高爲int 。就把’a’表明的數字體現了出來。a 表示的是97 97+1就是98; 那麼 想要查看98 表示的char 是什麼 怎麼實現呢 ?就要用到剛纔介紹的強制類型轉換了 System.out.println(char(‘a’+1));就取到了98 在ASCII碼錶中表示的字符。大寫A 和小寫a 在 ASCII有不一樣的表現。還有一個概念字符’1’ 在ASCII中 不是數字 1,能夠運行代碼查看,到此就能夠明白了char 類型,char類型也是能夠參與運算的,爲何能夠參與運算呢。由於字符在ASCII表中都有對應的數字體現。全部的計算機兼容ASCII。
System.out.println('a'+1); //98
System.out.println((char)('a'+1)); //b
補充問題:
int i='a'+'b'; System.out.println(i);//結果? System.out.println("hello"+'j'); //結果? |
總結:
全部數值運算符均可以用在char型數據上,若是另外一個操做數是一個數字或者字符,那麼char會自動提高爲int型,若是另外一個操做數是字符串,那麼字符就會和字符串相連。
Java語言提供了不少修飾符,主要分爲如下兩類:
修飾符用來定義類、方法或者變量,一般放在語句的最前端。
詳見http://www.javashuo.com/article/p-atcgslon-y.html
(1)if-else-if語句
語法:
if(條件){ //當條件爲true時,執行大括號內的代碼 }else if(條件){ } |
(2)switch-case語句
概念:
switch 語句判斷一個變量與一系列值中某個值是否相等,每一個值稱爲一個分支。
語法:
switch( 變量 ){ case 值1: break; case 值2: break; default: } |
當程序執行到break關鍵字時,跳出當前的switch語句;
(1)while循環
語法:
while(條件){ //當條件爲true時,執行循環體內的代碼; } |
備註:
知足循環的三個條件:初始化變量、關係運算、迭代
(2)do-while循環
語法:
do{ }while(條件); |
備註:與while循環的區別是,當條件爲false時,也會被執行一次。
(3)for循環
語法:
for(int i = 0 ; i < 10 ; i++){ } |
說明:
(4)foreach循環
Java5 引入了一種主要用於數組的加強型 for 循環。
Java 加強 for 循環語法格式以下:
for(聲明語句 : 表達式) { //代碼句子 } |
聲明語句:
聲明新的局部變量,該變量的類型必須和數組元素的類型匹配。其做用域限定在循環語句塊,其值與此時數組元素的值相等。
表達式:
表達式是要訪問的數組名,或者是返回值爲數組的方法。
詳見http://www.javashuo.com/article/p-ttcklmhr-bb.html
詳見http://www.javashuo.com/article/p-qnvakzqy-be.html
詳見http://www.javashuo.com/article/p-qnvakzqy-be.html
語法:
概念:重載(overloading) 是在一個類裏面,方法名字相同,而參數不一樣。與返回值類型、訪問修飾符無關。
規則:
規則:
當在一個源文件中定義多個類,而且還有import語句和package語句時,要特別注意如下規則:
爲了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。
包的做用:
包語句的語法格式爲:
package pkg1[.pkg2[.pkg3…]]; |
例如,一個Something.java 文件它的內容
package net.java.util; public class Something{ ... } |
那麼它的路徑應該是 net/java/util/Something.java 這樣保存的。
Package關鍵字:
在Java中,若是給出一個完整的限定名,包括包名、類名,那麼Java編譯器就能夠很容易地定位到源代碼或者類。Import語句就是用來提供一個合理的路徑,使得編譯器能夠找到某個類。
例如,下面的命令行將會命令編譯器載入java_installation/java/io路徑下的全部類
import java.io.*; |