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));
网友评论