JAVA语言的特点
简单性
Java语言比C++语言更为简洁,它扬弃了C/C++语言中的运算符重载、多重继承、指针、预处理、结构、联合、多维数组、模板等功能。
面向对象
面向对象的原则是把数据和对该数据的操作都封装在一个类中,程序设计时要考虑多个对象及其相互间的关系。
面向对象的好处是实现代码的重复使用。
只支持单继承
分布式
一种面向网络的编程语言,用户若想访问其他对象,可以通过Java语言所提供的类库对TCP/IP协议进行处理,然后用户即可通过URL地址在网络上很方便地实现分布式操作。
健壮性
内存空间的自动收集
对内存的访问必须经过对象的实例变量来实现
丢弃指针
解释性
Java语言编写的程序在完成编译后生成的是Java字节码,并非CPU机器码
通过留驻在机器上的Java语言运行环境——Java虚拟机(JVM)将所生成的字节码翻译成具体的CPU机器指令。
Java语言具有对程序只需编写一次,在任何平台都可以运行的特点。
平台无关性
Java编译器生成与平台无关的字节码指令,只要安装了运行系统,即可在任意的处理器上运行
由Java语言程序经编译后生成的应用程序不用经过任何的修改就可以在不同的软、硬件平台上运行,这就是Java语言的平台无关性。
可移植性
Java严格规定了基本数据类型的长度,与具体的硬件平台无关。
可扩展性
Java语言是一种基于C++的编程语言,它们之间有很多相似性,便于扩展
多线程
提供了一个Thread类和一组内置的方法,负责生成线程、执行线程或者查看线程的执行状态
设计多线程程序时,只要继承上述的类和调用相应的方法就可以解决了,从而提高了程序执行的效率。
动态性
可以在本地或网上动态地加载类,或者说在程序的执行过程中可以随意地增加新方法、实例变量等。
C++经编译器把源码直接编译成计算机可以认识的机器码,如exe,dll等文件。
Java源文件都需要用javac命令将源码编译为class文件(字节码文件),class文件无法被计算机直接识别,但可以被JVM即Java虚拟机识别。
JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行
每一个平台都会编写一个特定的Java虚拟机。
Java与C++的区别
Java中没有#include 和#define 等预处理功能,用import语来句包含其它类和包;
Java中没有structure,union及typedef;
Java中没有不属于类成员的函数,没有指针和多重继承,Java只支持单重继承;
Java中禁用goto,但goto还是保留的关键字;
Java中没有操作符重载;
Java中没有全局变量,可以在类中定义公用、静态的数据成员实现相同功能
Java语言与面向对象的程序设计
Java语言是一个面向对象的程序设计语言。
除了面向对象的特点以外,Java语言还在安全性、平台无关性、支持多线程、内存管理等许多方面具有卓越的优点。
面向对象的程序设计思想
计算机程序设计
对问题进行抽象
用计算机语言表述,利用机器求解
程序设计语言发展的历程
机器语言
汇编语言
高级语言
面向对象的语言
例:构建一个汽车类,需要提取所有汽车对象共有的状态和行为。将状态用变量表示,行为用方法表示。
class Car {
int color_number;
int door_number;
int speed;
……
void brake() { … }
void speedUp() {…};
void slowDown() { … };
……
}
面向对象技术给软件发展带来的益处
可重用性
可靠性
面向对象语言的基本特征
抽象和封装
继承性
多态性
Java术语
JDK(Java Development Kit) 称为Java开发包或Java开发工具,是一个写Java的Applet小程序和应用程序的程序开发环境。
JDK 是整个Java的核心,包括了Java运行环境,一些Java工具和Java的核心类库(Java API)
作为JDK实用程序,工具库中有七种主要程序。
Javac:Java编译器,将.java源代码文件转换成.class字节码文件
Java:Java解释器,直接解释执行Java字节码文件,即application
appletviewer:小应用程序浏览器,一种执行HTML文件上的Java应用小程序的Java浏览器,即Applet 。
javadoc:根据Java源码及说明语句生成HTML文档。
jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
JVM、JRE
JVM (Java virtual machine):Java 虚拟机,将 java 字节码程序翻译成机器语言,然后由计算机执行。JVM 没有其他相关的文件。JVM 本身不足以支持java application和applet的运行。
JRE : java 运行环境 。JRE 是由JVM 和 java platform 核心类以及相关支撑文件组成。
JVM、JRE及JDK的关系图
JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境
JRE是Java的运行环境,面向Java程序的使用者,而不是开发者
Java类库
组成Java程序的最小单位是类,类封装了数据与处理数据的方法。
对于大多数常用的功能,有大量已经编译好、经过测试的类,这些类的集合就是Java类库。
Java类库主要是随编译器一起提供,也有些类库是由独立软件开发商提供的。
Java程序概述
1、Java 开发环境
Java程序编译执行的过程
一次编写,各处运行
Java的编译与执行
环境安装——以j2sdk1.4.0为例
下载地址
http://java.sun.com
下载文件
j2sdk-1_4_0-win.exe
j2sdk-1_4_0-doc.zip
安装
直接运行“j2sdk-1_4_0-win.exe” 。
文档
解开“j2sdk-1_4_0-doc.zip” 。
安装JDK后产生如下目录:
\bin目录:Java开发工具,包括Java编译器、解释器等
\demo目录:一些实例程序
\lib目录:Java开发类库
\jre目录:Java运行环境,包括Java虚拟机、运行类库等
2、Java程序编写与运行--Application举例
Application基本结构
运行在客户端Java虚拟机上的Java程序
可使用自己的主窗口、标题栏和菜单
能够以命令行方式运行
由一个或多个“类”组成。
必须有一个“类”定义了main() 方法,该方法是自动执行的类方法,是Java应用运行的入口。而这个类也就称之为“主类”
main() 之前须加上public static void。static表示main在没创建对象时,仍然可以运行。
//Welcome.java
public class Welcome {
public static void main(String args[]) {
System.out.println(“*Welcome to Java world!* ");
}
}
编译 — javac:产生Welcome.class 文件
javac Welcome.java
解释执行 — java由一个或多个“类”组成
java Welcome (隐含.class文件)
Java程序文件
源文件名要与主类名同名(包括大小写)
一个类产生一个.class文件
注意事项
源文件的名称一定要和类的名称保持一致。Java程序的类名称是指class关键词后的名称
源文件的扩展名必须为.java
Java语言区分大小写
空格只能是半角空格符或是Tab字符。其他字符如小括号、双引号等均要求为英文字符。
一个.java源文件中可以包含多个类,但只能有一个public类
3、Java程序编写与运行-- Applet举例
Applet——小应用程序
运行于支持Java的Web浏览器中
浏览器的解释器把字节码转换成和机器匹配的指令,在网页中执行小程序。
Applet和Application的差别:运行环境的不同,小应用程序总是放在Web浏览器的图形用户界面中
Applet的优点
Web 浏览器软件包括很多小应用程序运行所需的功能
Applet的局限性
在客户端主机的文件系统中读/写受限
不能运行客户端主机的任何程序
仅能在服务器和客户端之间建立联系
4、Java程序编写与运行-- JSP举例
JSP就是嵌入了Java代码的HTML
JSP和servlet同是服务器端的技术。实际上,JSP文档在后台被自动转换成servlet
使用JSP便于实现网页的动静分离
相对于Servlet,JSP在服务器的部署简单
常见问题—编译
Error:cannot read:Welcome.java
javac工具程序找不到指定的.java文件。需要检查文件是否存储在当前目录中,或是文件名是否错误
Welcome.java:1:class Welcome is public,shoud be declared in a file named Welcome.java
源文件中类的名称和源文件名称不符。需要确定源文件名称和类名称是否相同
Welcome.java:3: cannot find symbol
源程序文件中某些代码部分输入错了,原因可能是没有注意到字母的大小写。
javac不是内部或外部命令、可执行程序或批量文件
Path设置有误或没有在Path中加入JDK的bin目录。
Exception in thread "main" java.lang.NoClassDefFoundError
Java工具程序找不到所指定的.class文件,需要确定指定的类是否存储在当前目录中,名称是否正确。
Exception in thread "main" java.lang.NoSuchMethodError:main
没有指定Java程序的入口。Java工具程序指定的类必须有一个程序入口,即必须包括main(String args[])这个方法。
扫码关注更多精彩 戳“阅读原文”我们一起进步