Java的白皮书为我们提出了Java语言的11个关键特性。$ D5 }+ j) d2 s V- |$ x7 Q, o
" k5 k. Z+ c; i+ z. c- E' S
(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb。 6 T' v" Q# t) \* z* k! D, X ( ]5 |! ?9 m2 B! T a9 a" f (2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程非常的高效,现在许多的大的web server都支持servlet。! y" X8 | _% o' I0 D+ ^
! n9 B; A$ }( Q- s (3)O面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和C++有很多不同,在与多重继承的处理及Java的原类模型。 s: K& ~& R# L7 D; q p4 Z ' H, y: X. f! L' q# q8 Y4 M (4)健壮特性:Java采取了一个安全指针模型,能减小重写内存和数据崩溃的可能型。; _: x7 q& n: @* j1 y0 z
9 F9 q) S2 S2 X( P2 L
(5)安全:Java用来设计网路和分布系统,这带来了新的安全问题,Java可以用来构建防病毒和防攻击的System.事实证明Java在防毒这一方面做的比较好。 : ~3 J5 ?5 ^7 ~" D* y1 _5 i 9 w8 D9 p. Q8 s( i* i& L3 }. X (6)中立体系结构:Java编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行。 / E( I$ S6 y1 U V: l0 z' x % p' r! B1 r/ ^ v (7)可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好。 w, W% _; T% c, ?; U6 t; v9 t8 j0 u! G
: S; h8 ^4 w0 C: d. w# G (8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一。+ A. o1 o* {& d2 ?( t+ Z
; l j; u# x5 N2 G" S2 ~
(9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的。6 T3 U" _6 a: r9 N) C( {$ v9 Z
1 r+ P: y: y7 ^- L, L0 Y% n, q 基本概念* ~, l4 Z! |2 V9 P& t, K; A7 x$ i
% l7 K+ c6 N$ Z( \- g/ H
1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。2 f) P% h; ?% U& \! s& f
e4 J4 u. Z0 L: M9 c4 Q3 j 2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)。 / o1 b6 n$ K4 Q 3 F U! V. J6 d4 _ 3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。5 i- h# m( c$ u! V* B
' t+ `- k/ }& h9 t7 ]6 o, }! D/ C: |
4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍。* X$ {! q+ D1 y2 x5 \( }
3 H2 V2 g) `- f( V! n
5.对象的3个主要特性 3 u V9 X& A, F5 Y+ s5 I* f' I( t# i$ g- L
behavior---说明这个对象能做什么.' ^7 a P4 W" ^$ O: Q8 Q* a
state---当对象施加方法时对象的反映. ; N. f9 y' n4 H# e identity---与其他相似行为对象的区分标志. 0 e# q: \; b6 f 每个对象有唯一的indentity 而这3者之间相互影响. ( d- z _9 Y- R! o O; | f! p* v& c6 E+ g
6.类之间的关系: , r; o( c! b5 l. Y$ j8 w4 x1 N3 k ]3 F) B* o( ]6 K7 }/ e use-a :依赖关系7 B5 X5 e; c `( K3 u n
has-a :聚合关系 ( g; M. t5 V' S/ D is-a :继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)$ e$ j# z# w1 k# y( B- A* H
# O, ~- i* i$ _6 Z! y 7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化。 # ~8 X, V) D) G" n0 k3 n5 j+ q( p Y9 U2 {- H: T
例ata类的构造器叫Data 7 l4 @9 |& Q% l" ~. Q8 m ' _& H1 U6 ~: q8 _1 |: E ^" u new Data()---构造一个新对象,且初始化当前时间.' Z3 _% q$ Y) ~3 ^/ E
Data happyday=new Data()---把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用。0 H. V8 B/ b) I$ x0 }0 a, ]
7 I7 y0 N; ]8 ~, E' b& k 构造器特点:构造器可以有0个,一个或多个参数 S- V0 ?% Y: ~* m/ ~+ }! R' N 构造器和类有相同的名字( o6 C9 |/ X; d
一个类可以有多个构造器 8 `0 b: b: y2 z0 x5 x" I4 j 构造器没有返回值, l5 y, e9 U( m z7 B
构造器总是和new运算符一起使用.
( \( `7 w. [6 A, X$ { e 19.通用编程:任何类类型的所有值都可以同object类性的变量来代替。 # i* P; a; H W7 G ; { l; T- Q8 H 20.数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小。# _# `2 Q( K9 }* Q
2 y G9 y+ l ]( j 21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。 8 D: |% t6 w" D: k, {( r: _7 P' o - f% g5 b, e, b7 p# \ 22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具。" E% M7 C2 L* l: W: e. Q+ x+ i3 P
6 F- n! ^9 `3 ?6 Q' D) t 能够分析类能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大. 1 ]9 y6 ?: _$ ^1 x4 B8 R: C 6 M V, b2 s3 P4 F5 v# s 1.在运行时分析类的能力。 & r: M# z- f+ M& }7 D7 ?* v 2.在运行时探察类的对象。 # }/ s% d' c" p4 W 3.实现通用数组操纵代码。 * o# D+ h" Y A7 v1 { 4.提供方法对象。