Java编程语言是一种通用、并发、基于类且面向对象的语言。它非常简单,足以让许多程序员可以灵活自如地驾驭该语言,Java编程语言与C和C++相关,但是在组织方式上有较大的差别,Java具有C和C++遗漏的许多方面,同时兼有其他语言包括的一些思想。它旨在成为一种生产语言,而不是一种研究语言,并且正是如此,就像C.A.R. Hoare在其关于语言设计的经典论文中所建议的一样,这种设计避免了包括新的、未经测试的特性。Java编程语言是强类型化的。可以清楚区分了能够并且必须在编译时检测到的编译时错误和那些在运行时发生的错误。编译时通常包括将程序转换成机器无关的字节码表示,运行时活动包括加载和链接执行程序所需要的类,生成可选的机器代码,动态优化程序和执行实际的程序。

Java编程语言是一种相对高级的语言,这是由于机器表示的细节无法通过语言得到,它包括自动存儲管理(通常使用垃圾收集器),以避免显式存储单元分配(如C的free或C++的 delete)的安全问题,高性能垃圾收集的实现可以有限地中止对系统编程和实时应用的支持。该语言不包括任何非安全构造,如无索引检查的数组访问,这是由于这种非安全构造会导致程序以未指定的方式工作。

引用类型包括:类类型、接口类型和数组类型,引用类型是由动态创建的对象(类或组的实例)实现的。可以有多个引用指向一个对象,所有对象(包括数组)支持类 Object的方法,object类是类层次结构的(性一)根部。预定义的 string类支持 Unicode字符串。有用于把基本值包装在对象内部的类。在许多情况下,包装和解包装是由编译器自动执行的(在这种情况下,包装称为装箱,解包装称为拆箱)。类和接口声明可能是泛型的也就是说,它们可以通过其他引用类型进行参数化。之后我们就可以通过特定类型的参数来继续调用这种声明。

变量是类型化的存储位置,基本类型的变量存储的正好是那种基本类型的值,类类型的变量可以存储空引用,或者指向一个对象的引用,该对象的类型是那个类类型或者那个类类型的任何子类,接口类型的变量可以存储空引用,或者指向实现接口的任何类的实例的引用,数组类型的变量可以存储空引用,或者指向一个数组的引用。 Object类类型的变量可以存储空引用,或者指向任何对象(类实例或数组)的引用。