1.java简介

  1. java是什么? Java是一门静态面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。
  2. java的三大版本:
  • java se(j2se, java 2 Platform Standard Edition)标准版,允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序,Java SE 包含了支持 Java Web 服务开发的类
  • Java ee(j2ee, java 2 platform enterprise edition)企业版,帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。
  • java me(j2me,java 2 platform Micro Edition)微型版,Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

2.java语言的特点和应用

  • Java语言具有简单性、面向对象(封装、继承、多态)、分布式(大型系统呗拆分成子系统部署在一台机器的多个jvm上或者部署在多台机器上)、健壮性(自动垃圾回收机制)、安全性(不能直接操作内存,也就是没有指针,就不会在C++一样出现内存溢出)、跨平台性和可移植性(jvm实现平台无关性)、多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言却提供了多线程支持)与动态性(反射机制、动态字节码操作、动态编译、执行其它脚本代码)、支持网络编程等特点。 【注】java是静态语言,而不是动态语言。动态语言显著的特点是在程序运行时,可以改变程序结构或变量类型,典型的动态语言有Python、ruby、javascript等。Java不是动态语言,但Java具有一定的动态性,
  • Java语言可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统

3.jdk,jre,jvm

alt

  • jdk是java开发工具包。目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。 alt 其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、 jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe);include:java本地接口和JVM虚拟机接***互用的C语言头文件;lib:开发工具所使用的文件;jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的);db:纯Java开发的数据可Derby,是一个开源的100%Java开发的关系数据库. 【注】详细可参考:http://www.javashuo.com/article/p-vppzzoon-xa.
  • jRE:java运行环境JRE相当于jvm(即jre->bin)+lib(lib中有jvm运行需要的类库)。只需要将通过javac.exe编译得到的.class文件和jre(jre中有运行.class文件的java.exe)打包一起发给别人,别人便可运行自己的java程序了。
  • JVM:java虚拟机,实现跨平台最核心的部分。.class类文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互。

【注】java虚拟机是运行java字节码(即扩展名为.class的文件)的虚拟机,JVM有针对不同系统的特定实现,其目的是使用相同的字节码,它们会给出相同的结果。

3.1 java程序的运行步骤:

alt

4. java和c++的区别

  • 都是面向对象语言,都支持封装,继承和多态。
  • java不提供指针来直接访问内存,程序内存更加安全
  • java的类是单继承的,c++支持多重继承,但是接口可以多继承。
  • java有自动内存管理机制,不需要手动释放无用内存。

5.面向对象

面向对象和面向过程

(1)封装

是一种信息屏蔽技术,其体现于类的说明。在java中有3种修饰符:public,private,protected,每一种修饰符为处在同一包下或者不同包下的对象赋予不同的访问权限。

有点:

  • 通过隐藏对象的属性来保护对象的内部状态。
  • 提高了代码的可用性和可维护性,因为对象的行为可以单独的改变和扩展
  • 禁止对象之间的不良交互提高模块化

(2)继承

子类继承父类,提高代码的可重用性,减少重复。

(3)多态

(4)抽象

抽象是把想法从实例中分离出来的步骤,要根据它们的功能而不是实现细节来创建类,java支持创建只暴露接口而不包含方法实现的抽象的类。这种抽象技术主要是为了把类的行为和实现细节分开。

6.java中类,对象和方法的关系

类:一类事物的抽象,猫这类动物 对象:类产生的功能相似的实体,某一只猫。 方法:对象的某一功能属性,猫会爬树。

7.java的基本数据类型

整 型:byte(8),short(16),int(32),long(64) 浮点型:float(32),double(64) 字符型:char(16) 布尔型:boolean(8) 8.final,finally,finalize的区别 final:修饰符(关键字)。一个类被修饰为final,意味着不能再派生出新的子类,不能作为父类被继承。因此一个类不能即被声明为abstract,又被声明为final。将变量和方法声明为final可以保证再使用过程中不被改变。被声明为final的变量,在初始时需要赋初值,在使用中只能读取不能修改。被声明为final的方法不能被重写。 finally:在异常处理时通过finally块来执行任何清除操作。如果抛出一个异常,相匹配的catch子句就会执行,然后控制就会进入finally. finalize:方法名。java技术允许方法finalize()在垃圾收集器将对象从内存中清楚之前做必要的清理工作.这个方法是垃圾收集器在确定这个对象没有被引用时对这个对象调用的,它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。