企业级java开发与架构(程序员在实战中的蜕变)
-----Java与对象实战精要
一、对JAVA的认识
Java是一种解释性语言,并不编译成目标机器的执行代码,而是由安装在目标机上的Java虚拟机(JVM)运行。
Java是一种面向对象的语言,其所有的类都是Object的子类。
Java具有跨平台性,可以方便的运行在Windows、Linux、Unix ..等众从装有Java 虚拟机(JVM)的机器是。
Java的三个版本:
1. Java SE(Java Platform Standard Edition Java标准版):包括Java开发工具JDK,Java运行时环境JRE ,Java SE 也叫J2SE,他提供了单机或者服务器的JAVA基础环境,也是Java EE的基础。
2. Java EE (Java Platform Enterprise Edition Java企业版):Java EE也叫J2EE ,Java EE定义了一系列企业级的标准,这些标准规定了容器厂商、用户提供商提供的产品必须遵守的规则。
3. Java ME (Java Platform Micro Edition Java微型版):Java ME也叫 J2ME,主要用于移动设备和嵌入式设备上,如手、PDA等设备。
二、Java运行环境
如果在不使用IDE开发工具的情况下要配置Java 运行环境,才能够运行Java程序。首先到SUN官方网站下载最新的JDK版本,要系统环境变量中配置JAVA_HOME、CLASSPATH、path中加入Java bin目录的路径。
1.Windows环境下:
系统属性 à 高级 à环境变量 JAVA_HOME:c:\Program Files\Java\jdk1.5.0_06(JDK1.5版本) classpath:,;%JAVA_HOME%\lib (或是 %JAVA_HOME%\lib\dt.jar; ,;%JAVA_HOME%\lib\tools.jar) path:,;%JAVA_HOME%\bin |
2.Linux或UNIX环境下:
修改.bashrc文档 1. [root@LinuxServerrpm]#vi.bashrc 2. setJAVA_HOME=/usr/java/j2sdk1.4.2_07 3. exportJAVA_HOME 4. setPATH=$PATH:$JAVA_HOME/bin 5. exportPATH 6. setCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 7. exportPATH
|
三、Java的编译命令
编译Java文件,首先进入到目录。
C:\> cd c:\xx\xx 回车 C:\> Javac xxx.java |
运行编译好的Class 文件
Java –Djava.ext.dirs=c:\xx\xx\xxx.xxx.xxx.XXX 要写完整的 |
打包命令
C:\>cd c:\xx\xx 加车 jar cvf xxx.jar |
要运行打包的文件
java –classpath c:\xx\xx\xxx.jar xx.xx.XXX |
四、面向对象在开发中的实际应用
² 面向对象的概念
面向对象是一种思维方式,是将过程、实体、逻辑用对象的方式进行抽象和概括和思维过程。对象就是过程、实体、逻辑抽象和概括后的产物,这个产物就是类。对象时而抽象的,时而是具体的,时而具有父子关系,时而具有包含关系,建立面向对象的思维就是要用一个类或者一组类包装一个或一组相关的过程、逻辑、实体的思维方式。
² 过程的抽象
过程就是完成一项功能的步骤的组合
² 实体抽象
实体对象就是一组相关数据的载体。
² 逻辑抽象
我们在系统开发过程中很容易说出功能的实现,并最终将其抽象为对象。但很多时候,系统中的某些功能需要我们采作一些技术算法或者逻辑方法来实现,将这些算法或逻辑抽象为一个对象的过程就叫做逻辑的抽象。
² 对象的特性
对象的特性主要有:隐藏实现、通过接口提供服务、复用、多态性。
接口的隐藏实现:对象是封装一组相关的过程或者逻辑,但是这些过程的具体处理方法对于对象的使用者来说是无法看见的。他只是使用了这样一个对象,利用这个对象获得他想要的信息,这个对象对他来说是个黑匣子。这就是隐藏实现,当然这个黑匣子必须提供对外的接口,否则使用者无法使用它。
复用:对象的一个重要特性就是复用。所谓复用就是代码的复用,也可以称为对象能力的在使用。对象的复用需要在软件开发的设计阶段做好规划,这需要软件开发人员具有一定的系统设计能力和远见,这些都是长期知识积累的结果。研究优秀的代码可以加速这些经验知识的积累过程。在复用Java中通过继承和聚合来实现,随着设计人员对经验的总结,一些设计模式出现了。
多态性:指在对象接口方法的调用过程中,系统会根据对象具体的实例来调用具体的方法。但是实现不同。在程序中,可以用父类来引用子类的实例。这个时候调用这个方法就会调用具体的实例方法,也就是调用了类的接口方法,这种现象称为多态性,多态性是面向对象的一个非常有用的特性。
五、Java中应用范围的作用域
Ø 作用域:
Public:公有的,公开的方法,没有访问限制。
Private:私有的,类内部访问
Protected:保护的,继承类可访问,包内可访问。
Friendly:友元的 (跟不写范围一致),包内可访问。
Static:静态的,无需对象实例就可访问。
Final:终态的,不能被继承类改变。
作用域 | 当前类 | 同一package | 子孙类 | 不同package |
public | √ | √ | √ | √ |
Protected | √ | √ | √ | × |
friendly | √ | √ | × | × |
private | √ | × | × | × |
不写 | √ | √ | × | × |
注:√表示可访问 ×表示不可访问
Ø 继承
继承是面向对象一个重要概念,Java通过extends来表示一个类继承自某个类。Java的类只能继承一个类,这就是说一个Java类只能有一个父类。
关于构造方法有一点需要声明,Java在构造一个类的实例的时候,会依次调用其父类的构造方法。注意,是调用构造函数,并不是构造其父类的实例。
Pack test; Public class ExtendClass{ class Class1{ System.out.println(“I am Class1”); } class Class2{ System.out.println(“I am Class2”) } Public void test() { New Class2(); } Public static void main(String[] args) { ExtendClass ec=new ExtendClass(); ec.test(); } } 输出结果: I am Class1 I am Class2 |
Ø 重载(Ovarload)
重载是指在同一个类中一个方法的不同表现形式。重载的方法名称相同,其功能也应该相同,不同的是传入的参数个数或者参数的类型不同,或者参数个数的类型两者都不同。
Package test; Public class overloadclass{ Public string f(string s){ } Public string f(int f) { } Public String f(String f,int g) { } } |
Ø 覆盖(Overwrite)
覆盖是指在继承过程是重写父类的方法。
Package test; Public class overwrite{ Class tes1{ Public func1(){ } } //继承父类并重写func1方法 Class tes2 extends tes1{ Public func1(){ } } } |
Ø 合成
合成是指在一个类中引用别的类作为自己的成员变量。
Public class t1{ Private t2 m2; Class t1{ Public void tm2(){ M2.function(); } } Class t2{ Public void function(){ …… } } } |
Ø 实例的生成与回收
前面我们提到了两个概念:类和类的实例。类可以说成是一段符合规范的源代码,也是可以是这段源代码编译生成的class,但是在没有使用之前,系统内存中并没有类的影子,这时候类只是硬盘里一段字节,要想使用类,必须将其加载到JVM中,这个过程叫做实例化,实例化的类被称为类,在程序中通过new来创建类的实例,类在没有实例化之前是无法使用的。
类的实例化也可以调用有参数的构造函数实现。
New 的过程会在内存中完成对象的构造,如果实例化的对象没有被清理,内存将无限制地被占用,资源很快就会耗殆尽。Java无需开发者管理内存,Java拥有自动内存回收机制,开发人员完全可以不必担心对象实例回收问题,但是这种机制也导致回收滞后,因此,开发者在设计的时候,内存资源的占用仍然要考虑。避免创建大量的对象实例是开发者必须考虑的问题,否则很容易引起系统的资源耗尽,导致程序出错,甚至系统崩溃。
因此,作为开发者,资源的消耗也是设计时必须严格要求的事件,应该作为一个规划在开发中加以贯彻。
Ø 流程和异常处理
ü Java的运算符
² 算术运算符:+,-,*,/,%(取余),++,--
² 关系运算符:>、<、>=、<=、==、!=
² 布尔逻辑运算符:!,&&,||
² 位运算符:>> ,<<, >>>,&, |,^,~
² 赋值运算符:=,+=,-= ,=+,=-
² 条件运算符:?:
² 其他:分量运算符 “.” ;下标运算符”[]”;实例运算符”instanceof”;内存分配运算符”new”;强类型转换运算符”(类型号)”;方法调用运算符”()”等。
² 二元数据运算符:
ü
Ø 流程控制
If…else…
语法:
If(boolean-expression)
{statement1}
Else if(Boolean-expression)
{statement2}
Else
{statement3}
……
For,while,do…while循环
语法:
For(初始值;终止条件(布尔表达式);迭代)
{
Statement;
Break; //结束循环
Continue;//结束本次循环进入下次循环
}
While(终止条件(布尔表达多))
{
Statement;
Break; //结束循环
Continue;//结束本次循环进入下次循环
}
Do
{
Statement;
Break; //结束循环
Continue;//结束本次循环进入下次循环
}while(终止条件(布尔表达式))
Switch case,多分支条件控制语句
语法:
Switch(expression)
{
Case value1:
Statement1;
Break;
Case value2:
Statement2;
Break;
……
Case valueN:
StatementN;
Break;
Default:
defaultStatement;
}
Ø 异常处理
Java