Java基本概念
Posted schumiyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基本概念相关的知识,希望对你有一定的参考价值。
编译型语言与解释型语言
编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。
编译型语言:
编译型语言最大的优势之一就是其执行速度,用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%;编译型程序比解释型程序消耗的内存更少。
缺陷:
编译器比解释器要难写得多。
编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,需要花费好几个小时来明确错误到底在代码中的什么位置。
可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比同样功能的Java的.class文件大很多。
编译型程序是面向特定平台的因而是平台依赖的。
编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)
由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用。
解释型语言:
解释型语言提供了极佳的调试支持。一名Java程序员只需要几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的。
另一个优势是解释器比编译器容易实现
解释型语言最大的优势之一是其平台独立性
解释型语言也可以保证高度的安全性——这是互联网应用迫切需要的
中间语言代码的大小比编译型可执行代码小很多
平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。
解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是由于为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存。
由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多。
解释器也会做很多代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度。
Java虚拟机
虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,Java语言中负责解释执行字符码文件的是Java虚拟机,即JVM(Java Virtual Machine)。当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,字节码不面向任何平台,只面向JVM。所有平台的JVM向编译器提供相同的编程接口,由JVM将字节码再翻译成机器语言。
通俗理解:JVM提供转接口,代码层提供统一的代码,计算机层提供不同平台,JVM实现转换。所有平台上JVM向上提供给Java字节码程序的接口完全相同,但向下适应不同平台的接口则互不相同。
安装Java环境
JDK全称Java SE Development Kit,即Java标准版开发包,提供Java编译器、Java运行时环境以及常用的Java类库等。Java运行时环境全称Java Runtime Environment,简称JRE,是运行Java程序的必需条件,JRE除了包括运行Java程序的核心虚拟机JVM,同时还包括运行Java程序的其他环境支持。
如果需要开发Java程序,应该选择安装JDK;如果只是运行Java程序,可以只安装JRE,无需安装JDK。
Java分为Java SE、Java EE和Java ME三部分:
- Java SE(Java Platform,Standard Edition)。JavaSE以前称为J2SE.它允许开发和部署在桌面、服务器、嵌入式环境和实施环境中使用的Java应用程序。JavaSE 包括支持Java Web服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。
- Java EE(Java Platform.Enterprise Edition)。这个版本以前被称为J2EE.企业版本帮助开发和部署可移植、健壮、可伸缩切安全的服务端Java应用。Java EE是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API.可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和web2.0应用程序。
- Java ME(Java Platform,Micro Edition)。Java ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME包括灵活的用户界面、健壮的安全模式、许多内置的网络协议以及对于动态下载的连网和离线应用程序的丰富支持。基于Java ME规范的应用程序只需要编写一次,就可以用于许多设备,而且可以利用每个设备的本级功能。
Java程序组织形式
Java程序是一种纯粹的面向对象的语言,因此Java程序必须以类的形式存在,类是Java程序最小程序单元,所有的程序部分都必须放在类定义里。类是具有相同或相似性质的一组对象的抽象。类的具体化是对象,也称为实例,对象的抽象化是类。
每个函数都有一个main方法(方法即为函数),main方法是Java程序的入口。格式如下:
public class ClassName
{
public static void main(String[] args)
{
program statements
}
}
public称为访问修饰符(access modifier)
class表明Java程序中的全部内容包含在类中
Java源文件命名规则
Java定义类名规则宽松,名字以大写字母开头,后面跟数字与字母的任意组合;源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。因此一个Java源文件最多只能定义一个public类,但可以包含多个类定义,为了更好可读性:
- 一个Java源文件只定义一个类,不同的类使用不同源文件定义;
- 让Java源文件的主文件名与该源文件中定义的public类同名。
垃圾回收机制
与C和C++不同,Java不需要程序员直接控制内存回收,Java程序内存分配和回收都是由JRE在后台自动进行,JRE会负责回收不再使用的内存,这种机制称为垃圾回收(Garbage Collection,GC)。通常JRE会提供一个后台线程进行检测和控制,一般都在CPU空闲或内存不足时自动进行垃圾回收。
Java的堆内存是一个运行时数据区,用以保存类的实例,Java虚拟机的堆内存中存储着正在运行的应用程序所建立的所有对象。所有的JVM实现都有一个由垃圾回收器管理的堆内存,垃圾回收是一种动态存储管理技术,它自动释放不再被程序引用的对象。
UML(统一建模语言)
面向对象软件开发需要经过OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个阶段:OOA对目标系统进行分析,建立分析模型并将之文档化;OOD用面向对象的思想对OOA的结果进行细化,得到设计模型。UML是用于记录OOA和OOD分析和设计结果的符号表示法。
最常用的UML图包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图等。
1. 用例图
用例图用于描述系统提供的系列功能,而每个用例则代表系统的一个功能模块。用例图主要用于需求分析阶段,帮助开发团队以一种可视化方式理解系统的需求功能。
2. 类图
类图表示系统中应该包含哪些实体,各实体之间如何关联。它显示了系统的静态结构,还可以表示实体之间的相互关系。类之间有三种基本关系:
以上是关于Java基本概念的主要内容,如果未能解决你的问题,请参考以下文章