java虚拟机的八种基本的数据类型分别是:
1、整数:int,short,byte,long
2、浮点型:float,double
3、字符:char
4、布尔:boolean
除了以上8种java虚拟机还有一种:索引数据类型
作用是:索引
索引(reference)类型可以“引用”变量,由于Java没有明确地定义指针类型,所以索引类型可以被认为就是指向实际值或者指向变量所代表的实际值的指针。一个对象可以被多于一个以上的索引所“指”。JVM从不直接对对象寻址而是操作对象的索引。
索引类型分成三种,它们是:类(class)、接口(interface)和数组(array)。索引类型可以引用动态创建的类实例、普通实例和数组。索引还可以包含特殊的值,这就是null 索引。null 索引在运行时上并没有对应的类型,但它可以被转换为任何类型。索引类型的默认值就是null。
类
类(Class)指的是定义方法和数据的数据类型。从内部来看,JVM通常把class类型对象实现为指向方法和数据的一套指针。定义class类型的变量只能引用类的实例或者null ,如以下代码所示:
MyObject object = new MyObject(); // 合法
MyObject object = null; // 合法
MyObject object = 0; // 非法
接口
接口(interface)好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口被索引。接口变量只能索引实现该接口的类的实例。比方说,假设我们定义了一个接口,名字是Comparable ,同时还定义了一个类SortItem,这个类实现了接口Comparable,那么我们可以编写以下的定义代码:
Comparable c = new SortItem();
假如Comparable 接口定义了一个方法: public void compare(Comparable item), 那么SortItem 类就必须提供compare 方法的实现,如以下代码所示:
public class SortItem implements Comparable
{
public void compare(Comparable item)
{
...method implementation here
}}
数组
Java数组(array)是动态创建的索引对象,这一点和类非常相似,此外,同类一样,数组只能索引数组的实例或者null ,如以下代码所示:
int[] myIntArray = new int[5];
int[] anotherIntArray = null;
数组是Object类的继承,这样,Object类的所有方法都可以被数组调用。数组对象由元素组成。元素的数目也可以为0,在这种情况下称做数组为空。所有的数组都是从0开始对元素编号的,这意味着数组内的第1个元素的索引编号是数字0。所有对数组元素的访问都会在运行时上接受检查,如果试图使用编号小于0或者大于数组长度来索引元素就会产生ArrayIndexOutOfBoundsException异常并被扔出。
数组的元素按整型值索引,如以下代码所示:
int[] myIntArray = { 9, 5, 6 };
int int1 = myIntArray[0];
int int2 = myIntArray[1];
int int3 = myIntArray[2];
数组对象的长度是不变的。为了改变数组变量的长度,你必须创建另一个数组并赋给变量,如以下代码所示:
int[] myIntArray = { 9, 5, 6 };
System.out.println("myIntArray length = " +myIntArray.length); // 输出结果是3
myIntArray = new int[] { 3, 6, 4, 2, 8 };
System.out.println("myIntArray length = " +myIntArray.length); // 输出结果是5
复合数据类型
Java语言不支持结构(struct)或联合(union)数据类型。它的复合数据类型是通过类或者接口来构造的,类提供了捆绑数据和方法的方式,同时可以限制对类的私有数据的访问。比如说,如果用C语言,那么汽车(car)就可以如下代码所示用结构来定义:
struct Car
{
char* model;
char* make;
int year;
Engine* engine;
Body* body;
Tire** tires;
}
以上的示范代码还隐含采用了先前定义的引擎(Engine)、车身(Body)和轮胎(Tire)结构。而采用Java语言,汽车的定义如清单A所示。
以上的示例还假设我们以前都已经定义过CarModels和CarMakes接口以及Engine、Body、Tire、DurangoEngine、DurangoBody和GoodyearTire类。
复合数据类型的初始化
复合数据类型由构造器内定义的代码实现初始化,构造器在类的创建函数(比如“new”之类)应用到类变量的时候被调用。构造器被调用之前,类的各个成员被初始化为各自的默认值或者显式赋予的初值。清单B 中的程序代码对以上过程进行了解释。
在清单B的代码中,当myClass 的实例用new 运算符创建时,构造器public MyClass()即被调用促使类对自身初始化。初始化的过程如下所示:
声明“int myInt;”给myInt赋默认值0。
声明“AnotherClass anotherClass;”给anotherClass分配默认值null。
构造器内的声明“myint = 2;”给myInt赋值为2。
预定义复合数据类型
Java语言包含了大量的预定义复合数据类型。其中之一的String 类属于java.lang 包。String 类提供的方法执行常用的字符串操作,比如length()、 substring(int beginIndex)、toUpperCase()、toLowerCase()、equals() 等等。另一种常用的Java复合数据类型是Vector 类,它属于java.util 包。Vector 类定义的方法执行可扩展对象数组的常用操作。比如add(int index, Object element)、elementAt(int index)、isEmpty()和remove(int index)等。这些就是一小部分预定义复合数据类型的代表示例。在以后的文章里我们还会进一步对预定义复合数据类型进行讨论。
分享到:
相关推荐
"浅谈JAVA虚拟机JVM及工作原理" Java虚拟机(JVM)是Java语言的 runtime 环境,它提供了一个平台独立的环境,使得Java程序可以跨平台运行。JVM 的主要组件包括虚拟机栈、堆、方法区、程序计数器、本地方法栈等。 1...
Java JVM 调优浅谈 Java 虚拟机(JVM)是 Java 语言的核心组件之一,负责加载、验证、执行 Java 字节码。JVM 的调优对于 Java 程序的性能和稳定性至关重要。下面对 JVM 调优的相关知识点进行了详细的解释。 数据...
浅谈java基本数据类型的范围 Java是一种面向对象的编程语言,它有八种基本数据类型,每种类型都有其特点和范围。了解这些类型的范围和特点对于 Java 开发者来说至关重要。本文将详细介绍 Java 的八种基本数据类型...
虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验、准备、解析和初始化,终会形成可以被虚拟机使用的Java类型,这是一个虚拟机的类加载机制。Java中的类是动态加载的,只有在运行期间使用到该类的...
"浅谈JAVA语言.pdf" 本文将从Java语言的起源开始,分析Java语言与传统语言的差异,并阐述Java语言为什么能够成为世界上最流行的编程语言的原因。同时,本文还将结合Java语言的特点与技术的发展,探讨Java语言在编译...
Java虚拟机(JVM)是Java程序的核心组成部分,它负责运行字节码,管理内存,以及执行垃圾回收等关键任务。本文将简要介绍JVM的结构,特别是内存模型,以及如何进行内存优化。 首先,JVM由多个子系统组成,其中类装载...
本文主要讨论了Java中变量使用时的几个关键方面,包括变量的类型、作用域、值和生存期,并探讨了这些因素在Java虚拟机(JVM)中的实现机制。 1. **变量的类型**: Java中的变量分为两种类型:基本类型和引用类型。...
Java提供了丰富的异常类层次结构,以帮助程序员处理各种类型的异常情况。 异常类是Throwable类的子类,位于java.lang包中。Throwable有两个主要子类:Error和Exception。Error是虚拟机由于严重的错误而抛出的,一般...
- **使用原生类型**:在可能的情况下,使用基本数据类型代替对象,减少对象创建。 - **缓存对象**:缓存常用对象以减少垃圾收集。 - **JNI调用**:尽量减少Java本地接口(JNI)的使用,分组本地操作。 - **同步...
例如,Java虚拟机具有垃圾回收机制,能够自动管理内存,减少了内存泄漏的风险。 Java语言的应用特点之一是其编程程序的独立性。由于其程序运行在虚拟机上,因此可以保证不同阶段(编程、改进、运行)的程序具有相对...
其次,JAVA语言在编程模式上偏向于对象导向,与C++等语言相比,JAVA更注重于对象的使用,并且在编译时生成二进制字节码,这在执行时通过Java虚拟机进行解释,这种编译机制使得JAVA语言的应用更为广泛和安全。...
在Java中,类文件是编译后Java源代码的二进制表示,它包含了Java虚拟机(JVM)可以理解的字节码。如果在运行时出现方法入参异常,这通常意味着在调用某个方法时传递的参数与该方法的预期参数不匹配。这可能涉及到...
java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在...
Java常量池是一种内存管理机制,它在Java虚拟机(JVM)中扮演着重要的角色。常量池主要存储程序中的常量,如字符串字面量、符号引用等,其目的是为了提高内存效率和程序执行速度。下面我们将深入探讨Java常量池的...
"浅谈 JVM 原理" JVM(Java Virtual Machine)是一种虚拟机,它可以模拟完整的硬件系统功能,运行在一个完全隔离的环境中,提供了一个完整的计算机系统。JVM 可以分为三类:VMWare、Visual Box 和 JVM。其中,...
2. **Java语法基础**:讲解Java的基本语法,如数据类型(包括原始类型和引用类型)、变量、常量、运算符、流程控制(if语句、switch语句、for、while、do-while循环)、以及函数的定义和调用。 3. **类与对象**:...
当一个方法被调用时,Java虚拟机(JVM)会在栈上为该方法创建一个栈帧,包含局部变量表、操作数栈、动态链接和返回地址等。当方法执行完毕,栈帧会被销毁,存储在其中的变量也会随之消失。由于栈内存空间有限且分配...
Java内存管理是Java虚拟机(JVM)的关键组成部分,它主要负责对象的创建、分配、初始化以及回收。本文将深入探讨Java内存管理的原理以及内存溢出异常的原因和解决策略。 首先,Java与C/C++在内存管理上的一个重要...
浅谈计算机应用软件开发中编程语言的选择研究 随着信息技术的飞速发展,计算机应用软件已经深入到我们生活的各个角落,成为现代社会不可或缺的一部分。对于软件开发企业来说,选择合适的编程语言至关重要,因为它...