最近刚刚开始看严蔚敏老师的数据结构,是C语言版本的。经常看到指针,本人菜鸟一枚,突然发现平时在使用Java的时候,没有考虑过多指针的问题,遂学习了下,这才发现尽管在Java中没有显示的使用指针并且也不允许程序员使用指针,而实际上对象的访问就是使用指针来实现的,称之为引用。
一、引用类型和基本类型简介
基本类型共有八种,它们分别都有相对应的包装类。基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量。
java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。
示例如下:
public class MyDate {
private int day = 8;
private int month = 8;
private int year = 2008;
private MyDate(int day, int month, int year){...}
public void print(){...}
}
public class TestMyDate {
public static void main(String args[]) {
//这个today变量就是一个引用类型的变量
MyDate today = new MyDate(23, 7, 2008);
}
}
二、基本类型和引用类型的区别
其实区别很多,具体参照:
http://blog.sina.com.cn/s/blog_4586764e0100dr4r.html
http://blog.csdn.net/lu7kang/article/details/5047725
有两点应当注意:
1、Java 中的所有对象都要通过对象引用访问。对象引用是指向对象存储所在堆中的某个区域的指针。当声明一个原始类型时,就为类型本身声明了存储。
2、引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
三、Java与C语言对指针的处理
Java是有指针的!事实上,Java中每个对象(除基本数据类型以外)的标识符都属于指针的一种。但它们的使用受到了严格的限制和防范。在C语言中,会有++p这样的操作,但是在Java中是不允许的,Java只能操作引用,不能直接操作指针。因为C语言能直接对内存进行操作,所以在开发底层时,C的效率和性能要强于Java。但是直接操作指针会带来安全隐患。Java虽然牺牲了点性能,但是增加了安全性。同时,Java避免了繁琐易错的指针操作,也简化了编程难度,增加了代码的可读性。
相关推荐
在"JNA 转java接口以及指针结构体解析"这个主题中,我们将深入探讨如何使用JNA来处理C语言中的结构体和指针。 首先,理解JNA的基本工作原理至关重要。JNA通过定义一个`Interface`,该接口中的方法对应于要调用的...
综上所述,"Java实现带指针的时钟"项目涵盖了Java GUI编程的多个核心知识点,包括图形绘制、定时器、事件处理、线程管理和代码组织。通过这个项目,开发者不仅可以提升Java编程技能,还能深入了解GUI应用的设计和...
通过对Java程序指针分析技术的研究,我们可以更好地理解数据流在Java程序中的角色,并且可以提供一个更好的解决方案,以满足数据处理的需求。 数据流是指在程序中的数据传输和处理过程,它是软件开发中一个关键的...
### Java空指针异常详解与解决方案 在Java编程中,空指针异常(`java.lang.NullPointerException`)是最常见的运行时异常之一,尤其在大型项目和复杂代码逻辑中更为常见。这种异常通常发生在试图访问一个尚未被实例...
【JAVA虚拟指针仪表类】是一种在Java编程环境中实现的模拟物理指针仪表的软件组件。这个控件允许开发者在应用程序中创建具有视觉效果的虚拟指针仪表,以显示各种实时数据,如温度、压力、速度等。它通过在定时器函数...
先对数组排序,再使用双指针策略。 3. **旋转数组的最小元素**:数组旋转后,找到最小元素。双指针法可确定分界点,找到最小值。 六、优化与拓展 1. **多指针**:在某些复杂问题中,可能需要设置多个指针,如寻找四...
本文将对 Java 指针分析技术进行综述,涵盖指针分析算法、上下文敏感、堆对象抽象、复杂语言特性处理、非全程序指针分析等方面的内容,并对选择性上下文敏感技术进行了梳理和讨论。 指针分析(Pointer Analysis)是...
理解并妥善处理`NullPointerException`是Java编程的基本功,良好的编程习惯和对null的理解能帮助我们编写更健壮的代码,避免这种常见的运行时错误。在实际开发中,不断实践和学习,才能更好地应对各种异常情况。
对于Java初学者来说,这是一个很好的练习,因为它涉及到基本的图形绘制、事件处理以及线程同步等概念。 首先,我们需要了解Swing中的`JFrame`类,它是窗口的基础。创建一个`JFrame`实例,然后在其上添加组件,就...
Java的异常处理机制是Java编程中至关重要的一部分,它主要用于处理程序在运行时可能出现的各种错误和异常情况。这一机制使得开发者能够优雅地处理错误,而不会让整个程序崩溃。以下是关于Java异常处理机制的详细说明...
Java异常处理是编程中至关重要的一个环节,它用于管理和恢复程序在执行过程中可能出现的问题。Java异常分为两大类:错误(Error)和异常(Exception)。错误通常指的是系统级别的问题,如JVM内部错误或资源耗尽,...
本文将对C++和Java两种语言的异常处理机制进行深入的比较和分析,探讨它们的相似之处以及不同之处,以帮助开发者更好地理解和应用这两种语言。 首先,异常处理的基本目的是捕获并处理运行时错误,这些错误通常包括...
在C和C++中,链表通常通过指针来实现,而在Java中,由于语言特性,不直接支持指针,但可以通过对象引用的方式来模拟链表结构。 【Java中链表的实现】 在Java中,我们可以通过创建一个Node类来模拟链表的节点,每个...
Java中的空指针异常问题 Java中的空指针异常问题是Java编程中常见的问题之一。当一个对象不存在时调用其方法或访问其字段时就会产生空指针异常。这种异常的主要原因是对象不存在或字段不存在。下面是空指针异常产生...
系统定义异常是由Java运行时环境自动抛出的,通常对应于编程中的常见错误,如数组越界(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。这些异常是直接或间接继承自`java.lang.Exception...
在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中捕获并处理错误情况。这个主题,"Java异常处理体系",涉及到...通过对Java异常处理体系的深入理解和应用,开发者可以创建出更加稳定、可靠的软件系统。
通过对以上几种与`null`相关的特殊情况的学习,我们可以更好地理解Java中如何处理空引用。需要注意的是,虽然某些情况下看似不合逻辑的操作实际上是合法的,但在编写代码时仍需谨慎处理`null`值,以避免潜在的空指针...
《Java指针指向分析优化》这篇论文探讨了Java代码中的一种高效的安德森风格、上下文敏感的指针指向分析方法。该分析方法旨在获取程序变量在运行时的指针指向集,支持继承、多态性以及字段对象等Java语言特性。文章...
- **try块**:存放可能会发生异常的Java代码,并管理相关的异常指针。 - **catch块**:紧跟在`try`块后面,用来捕获并处理异常。 - **finally块**:包含清除程序未释放的资源等操作,无论`try`块中的代码如何退出,...
在Java中,虽然没有直接的指针概念,但可以利用数据流分析来检测类成员的访问、方法调用的顺序等相关性。比如,单相关和双相关分析可以识别变量之间的依赖关系,帮助找出可能的并发问题,如数据竞争和死锁。 在分析...