Java 白皮書的關鍵術語
Java設計者編寫了白皮書,用來解釋設計的初衷以及完成情況:
- 簡單性
- 可移植性
- 面向對象
- 分布式
- 解釋性
- 高性能
- 健壯性
- 多線程
- 安全性
- 體系結構中立
- 多態性
簡單性
Java 是C++的純凈版本。沒有頭文件、指針運算(升值語法指針)、結構、聯合、操作符重載、虛擬基類等。
面向對象
一個“面向對象的木匠”始終關注的是所制作的椅子,第二位是所使用的工具;一個非面向對象的木匠首先考慮的是所使用的工具。本質上,Java的面向對象能力語C++是一樣的。
分布式
Java程序能夠通過URL打開和訪問網絡上的對象,便捷性像是操作本地文件一樣。
安全性
Java的代碼在沙盒中運行。
可移植性
Java中的int類型永遠是32位整數,在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商執行的其他大小。唯一的限制知識int類型的大小不能低于short int,并且不能高于long int。 在Java中,數據類型具有固定大小,消除了代碼移植時令人頭痛的住喲啊問題。二進制數據以固定格式進行存儲和傳輸,消除了字節順序的困擾。字符串是用標準的Unicode格式儲存的。
Java發展簡史
Java的發展歷史可以追溯到1991年,由Patrick Naughton和 James Gosling(計算機奇才)帶領的Sun公司的工程師小組想要設計一種小型的計算機語言,主要用于有線電視轉換盒這樣的消費設備。命名為Green。
簡單的 Java 程序
public class FirstClass{
public static void main(String[] args) {
system.out.println("we will not use 'Hello World!'");
}
}
總結:
1.Java是區分大小寫的語言。
- 具有訪問修飾符(public, private, protected)
- 關鍵字 class 后面緊跟 classname
- 類的標準命名為: 駝峰表示法,即單詞首字母大寫。
- 源代碼名字必須與類的名字相同,例如FirstClass 的文件名應該是 FirstClass.java(文件名的大小寫也是非常重要的)。
- main方法必須聲明為public。
Java的數據類型
整形
類型 | 存儲需求 | 取值范圍 |
---|---|---|
int | 4字節 | -2147483648~2147483647 |
short | 2字節 | -32768~ 32767 |
long | 8字節 | -9223372036854775808~9223372036854775807 |
byte | 1字節 | -128~127 |
通常 int 最常用, 但是如果表示星球上居住的人數,就需要使用long類型。byte和short主要用于特定的應用場合,例如底層文件處理或者需要控制占用儲存空間量的大數組。
進制的表示
- 16進制: 前面加 0x,例如 0xCAFE
- 長整型:后綴L,例如400000000L
- 8進制: 前面加0,例如 010 對應8進制的 8
- Java7開始,二進制表示: 0b 或者 0B,例如0b1001就是9。可以在字面量上面加下劃線:0b1111_0100_0010_0100_0000) 。、
浮點類型
類型 | 儲存需求 | 取值范圍 |
---|---|---|
float | 4字節 | 大約 +-3.40282347E+38F(有效位為6~7位) |
double | 8字節 | 大約在+-1.797693134862315E+308(有效位15位) |
3個特殊的浮點數值:
- 正無窮大
- 負無窮大
- NaN
例如,一個正整數除以0得到正無窮大。計算0/0或者求負數的平方根結果位NaN。
常量 Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN 分別表示這3個常量。
if( x == Double.NaN) .... // is never true ,所有 NaN 的值都是不相同的。
//可以使用isNaN判斷一個數是否位數值:
if(Double.isNaN(x)) // check whether x is " not a number"
16進制的科學計數法
0.125 = 2-3 可以表示成 0x1.0p-3 ,這里使用p而不是e。
char 類型
有些Unicode需要用1個char表示,而有些則需要2個。
char類型的字面量要用單引號引用起來:'A' 表示值位65所對應的字符常量。與"A"不同,"A" 是包含一個字符A的字符串。char類型的值可以使用16進制表示,取值范圍從 \u0000 到 \uffff。 例如: \u2122表示注冊符號(tm) ,\u03c0表示希臘字符Π。
public static void main(String\u005b\u005d args)
是完全合法的。
轉義序列 | 名稱 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 換行 | \u000a |
\r | 回車 | \u000d |
\" | 雙引號 | \u0022 |
\' | 單引號 | \u0027 |
\ | 反斜杠 | \u005c |
注釋中的轉義字符
// \u00a0 is a new line ,this will occur a error, that a new line mark will be replaced
// Look inside c:\users , this will occur a error also, that hex number is not after \u
boolean 類型
布爾類型由兩個值: true ,false 。
變量
Java 不區分變量的聲明與定義。
Java 可以使用Unicode聲明變量, 但是不能用符號,例如 空格+ ?之類的。如果想知道哪一些Unicode屬于Java中的"字幕",可以使用character類中的 isJavaIdentifierStart 和 isJavaIdentifierPart 方法檢查。
不能使用保留字聲明變量。
常量
在java中, finnal 表示常量。例如:
public class Constants
{
public static void main(String[] args)
{
final double CM_PER_INCH = 2.54;
double paperWidth = 8.5;
double paperHeight = 11;
...
}
}
關鍵字 final 表示這個變量只能被賦值一次。一旦賦值之后,就不能在更改。習慣上常量名使用全大寫。
如果希望某個常量可以被多個方法使用,通常將常量稱為類常量:
public class Constants
{
public static final double CM_PER_INCH = 2.54;
public static void main(String[] args)
{
double paperWidth = 8.5;
double paperHeight = 11;
...
}
}
算術運算符
Math.sqrt(x);
Math.pow(x,a);
Math.floorMod(x,a);
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
Math.exp
Math.log
Math.log10
Math.PI
Math.E
使用Math 需要在源文件頭部加上
import static java.lang.Math.*;
system.out.println("The square root of \u03c0 is " + sqrt(PI));