Java 2 Standard Edition
(
J2SE
)定位于客户端程序的应用;
Java 2 Enterprise Edition
(
J2EE
)定位于服务器端程序的应用;
Java 2 Micro Edition
(
J2ME
)定位于嵌入式系统的应用。
Java
规范中的一组核心类(
Core Class,
即
java.*
)
,
核心类外的扩充类为(
Extended Class,
即
javax.*
)
J2SE
:包含所有
Java
规范中定义的核心类,也支持所有的
Java
基本变量,定位在客户端程序的应用上。
J2EE
:不仅支持核心类,,还增加了许多适合企业内部使用的扩充类,如支持
Servlet/JSP
的
javax.servlet.*
类、支持
Enterprise Java Bean
的
javax.ejb.*
类。定位在服务器端程序的应用上。
在以上两种中,有
Classic VM
与
HotSpot VM
负责执行
Applet(Java
小应用程序,主要应用于
Web
网页中
)
、
Servlet(
服务器端
Java
应用程序
)
或
Java Application
HotSpot VM
是新一代的
JVM
,
Classic VM
是传统的
JVM
。
HotSpot VM
还分为
Client
和
Server
两种版本。区分原因:客户端执行的应用程序与服务器上执行的应用程序在基本需求上有所不同――客户端应用程序比较注重画面的美观、用户界面的灵敏程度;服务器端没有太多界面上的要求,注重效率和资源占用率。
J2ME
:
只支持核心类的子集,如在
J2ME CLDC
(即那些运算能力有限、电力有限的嵌入设备的应用,如掌上电脑)规范中,只支持
java.lang.*
、
java.io.*
及
java.util.*
类。增加适合“微小装置”的类,如:
javax.microediton.io.*
类。其在对变量的支持上有所精简,如:
PalmOS
上运行的
KVM
(
K Virtual Machine
)来说,它不支持浮点类型(
float
、
double
)。定位于嵌入式系统应用。
其标准虚拟机是
KVM
,可执行下载至嵌入设备上的
Spotlet(Palm
等掌上电脑使用的
Java
应用程序
)
或
MIDlet(
移动通信设备使用的
Java
应用程序,如
Java
手机
)
。
JINI
:为了使各种不同的
Java
版本开发出来的应用程序能够彼此连接在一起,共同分享资源或交换资料,而产生出来的,又被称为无缝连接。
安装注意事项:
无论开发什么程序,都应该选安装
J2SE
,然后再安装其它版本的扩充类,这样才能成功开发不同功能的
Java
程序。
J2SE
提供
Java
编译器(
javac.exe
)
,
帮助编译不同平台的
Java
程序。提供
Java
虚拟机(
java.exe
)可帮助我们在
PC
机上测试这些程序的运行结果是否正确。
缺点:编译器不会检查程序是否符合各种平台所支持的类与变量类型。但大多数商业的
Java
集成开发环境带有检查器(
Checker
)或预审器(
Preverifier
)对此类错误进行防止。
Java
开发工具:
1)
JDK1.x
2)
Borland JBuilder
:
Borland
是一个老牌的各类语言
IDE
(集成开发环境)开发商,其力作
JBuilder
自然性能稳定、使用方便,特别适用于创建
Java
组件。此外该软件还提供了
Tomcat
作为
Servlet/JSP
的服务器,使得
Servlet/JSP
的开发格外方便。
3)
IBM Visual Age for Java
:
IBM
的软件可以用一个字来概括
—
牛!体积庞大,功能众多,使用对象是整个开发团队,设计目标则是搞定视野里能看到的一切!
4)
WebGain Studio 4 with VisualCafé
:
VisualCafé
本是
Symantec
公司的著名产品,已经转让给了
WebGain
。
VisualCafé
仍然起到了全功能
Java
开发工具的作用,而
WebGain
则增加了对
Enterprise JavaBean
(
EJB
)和基本
UML
图表设计的支持。同样,它绝佳的应用程序服务器搭配还是
WebLogic
。
5)
Forte for Java
:
Forte for Java
是
Sun
在放弃
JavaWorkers
后力推的
IDE
,它将调试器和用于
Web
应用开发系统的数据库组件整合到统一的安装环境中。
6)
Oracle Internet Developer
:只能针对
Oracle
数据库使用,而且还施加了这一限制,但开发人员仍然可以从中获得相当强大的中间层功能和采用
JSP
的
Web
应用程序开发能力。
字符直接量:
字符直接量代表了一个字符。其开始和结束都有一个单引号(
’
),大多数字符直接量在引号之间只有一个字符,但也可以在其中放置各种特别形式的字符,如:
’/b’
退格符
‘/t’
水平制表符
‘/n’
新行符
‘/r’
回车符
‘/f’
进纸符
‘/”’
双引号
‘/’’
单引号
‘//’
反斜杠
反斜杠后面可以跟上
8
进制数值。如
’/022’
表示
8
进制为
22
的字符。允许的最大的
8
进制数值为
’/0377’
。
反斜杠后还可依次跟上
16
进制数值,如
’/u1d5’
代表
16
进制值为
1d5
的字符。
在
JAVA
中,字符采用
Unicode
编码体制,每一个字符都是用
16
位存储格式表示,所以,
16
进制数值可高达
’/uffff’
。
Java语言中的运算符
+ 通常和两个操作数一起使用,运算结果是两个操作数的和.如果其中一个操作数是字符串,那么情况就不一样了;它将非文本操作数 (假如有的话)转换为文本,然后再连接两个字符串,运算结果是连接好的字符串
- 只用于数值操作数,可以和一个或两个数值操作数一起使用.如果只有一个操作数,那么就对这个操作数取"负"(把负操作数转换为正,或把正操作数转换为负).如果和两个操作数一起使用,就从第一个操作数中减去第二操作数
* 和两个数值操作数一起使用,将第一个操作数和第二个操作数相乘
/ 和两个数值操作数一起使用,用第一个操作数除以第二个操作数.如果两个操作数都是整数(也就是说是byte、int或long类型),结果仍然是一个整数,但会切去小数部分(如,7/4的结果为1,而不是2)
% 和两个数值操作数一起使用,用第一个操作数除以第二个操作数,结果是除法操作的余数(如,5%3的结果为2,因为5/3的商是1,余数是2)
?: 这两个字符组合起来表示一个运算符.它和三个操作数一起使用.第一个操作数在?的前面,第二个操作数在?和:之间,第三个操作数紧随:之后.第一个操作数必须是布尔型,其余两个操作数可以是任何类型.如果布尔型操作数的值为真,运算符就返回第二个操作数的值,否则就返回第三个操作数的值.例如,表达式(a==5)? 1:0,当a的值为5时,返回值为1,否则返回0
! 和一个布尔型操作数一起使用,对操作数取"非".因此,运算结果 是"真"变为"假","假"变为"真"
~ 和一个数值操作数一起使用,对操作数的每一位取反.因此,每一个二进制位的1变为0,0变为1
<,>,<=,>= 这些运算符和两个数值操作数一起使用,比较第一个操作数的值和二个操作数的值,返回一个指示比较结果的布尔型值.在第一个操数小于第二个操作数时,运算符<返回真.在第一个操作数大于第个操作数时,运算符>返回真.第一个操作数小于或等于第二操作 时,运算符<=返回真.第一个操作数大于或等于第二个操作数时, 算符>=返回真
!=,== 这两个运算符用于两种不同的情形.第一种情形是两个操作数都是 值.这时,运算符==就在两个操作数的数值相等时返回真,而运算 !=在两个操作数的数值不相等时返回真.第二种情形是运算符的 个操作数都是对象(NULL可用来取代其中一个对象).这时,如果两 操作数是同一个对象,==就返回真;而在两个操作数不是同一个对 时,!=返回真
& 和两个整型值或两个布尔型值一起使用.如果和两个整型值一起使 ,就返回对两个整型值进行"按位与"运算后的值(也就是说,只在个操作数的相应位都为1时,返回值的该位才是1).如果和两个布尔型值一起使用,在两个布尔型值都为真时,运算符返回真.
&& 和两个布尔型操作数一起使用.如果两个操作数都为真,返回真
|| 和两个布尔型操作数一起使用.如果两个操作数中有一个为真,返回 .
++ 只和一个操作数一起使用,操作数可以出现在++运算符的前面也可 出现在运算符的后面.操作结果是将操作数加1并将新值存储在操 数中.运算符++的返回值(即在其表达式中使用的值)取决于++是 置在操作数的前面还是后面.如果运算符放置在操作数的前面,那 返回值是未做自增运算时的操作数值.如果运算符放置在操作数 后,那么返回值是做完自增运算之后的值.例如,在语句a=(b++)中, 为++出现在b之后,所以赋给a的值是b加1后的值.而在语句a=(b++) ,赋给a的值是b还没有加1时的值
-- 只和一个操作数一起使用,操作数可以出现在--运算符的前面也可 出现在运算符的后面.操作结果是将操作数减1并将新值存储在操 数中.运算符--返回的值(即在其表达式中使用的值)取决于--是 置在操作数的前面还是后面.如果运算符放置在操作数的前面,那 返回值是未做自减运算时的操作数值.如果运算符放置在操作数 后,那么返回值是做完自减运算之后的值.例如,在语句a=(b--)中, 为--出现在b之后,所以赋给a的值是b减1后的值.而在语句a=(--b) ,赋给a的值是b还没有减1时的值
<< 将第一个操作数向左移动第二个操作数指定的位数.例如,a<<3将a 左移动三位.从左边移出的位将会消失,右边空位用0填补
>> 将第一个操作数向右移动第二个操作数指定的位数.例如,a<<3将a 右移动三位.从右边移出的位将会消失,原来最左边的高位(一位) 制到 左边空出的位置上.这种移位方式适合于带符号数,而>>>的 位方式适合于无符号数
>>> 将第一个操作数向右移动第二个操作数指定的位数.例如,a>>>3将 向右移动三位.从右边移出的位将会消失,左边的空位用0填补.这 移位方式适合于无符号数,而>>的移位方式更适合于带符号数
= 把第二个操作数的值赋给第一个操作数
*=,/=,-=,+=,%= 这些运算符对第一个操作数执行指定的数值计算.例如,a+=3把3 到a上
&=,|=,^= 这些运算符对第一个操作数执行指定的逻辑运算.例如,a&=3将计算 &3的值并将计算结果存储在a中
<<=,>>=,>>>= 这些运算符对第一个操作数执行指定的移位运算.例如,a<<3将a向边移动三位并将移位后的值存储在a中
instanceof 第一个操作数是一个对象,第二个操作数是一个类名(或接口名).如 对象属于这个类(或它实现了这个接口)就返回真