迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 指针简介

作者:迹忆客 最近更新:2023/08/08 浏览次数:

今天,我们将学习 Java 中的指针以及如何通过使用它们来获得优势,但在此之前,我们将了解它们在 Java 中是否可用; 如果没有,还有哪些替代方案?

我们将在本文中回答所有这些问题。 我们还将指针与 C 和 C++ 等其他语言进行比较。


Java中的指针

众所周知,指针是存储内存地址的对象。 它们在地址管理和内存分配方面很方便,但只有在语言具有指针算术时才有效。

通常,语言都预先编程了指针算术,但 Java 的情况并非如此。 因此,对于某些人来说,Java 语言没有指针的概念可能听起来有点令人震惊。

相反,Java 语言将引用作为指针。 请记住,指针可以称为引用,但反之则不同,因为引用不是指针。

让我们通过本指南中的示例来详细研究这个概念。


Java中没有指针

大多数人声称 Java 没有指针会更好。 这是因为下面提到的原因。

  1. 算术 - 如上所述,指针使用算术进行运算。 此外,指针与内存管理一起工作,这从根本上来说是不安全的。

    许多人可能会反驳,但事实上,让指针访问内存是不安全的。 因此,Java不支持指针运算。 并且不使用额外的内存。

  2. 操纵——用户很容易误用指针; 通过指针操作对象也是非常危险的。 总而言之,Java 在其面向对象编程中不需要指针。

    而且,在Java语言中添加指针会不必要地导致复杂性的增加。


替代方案:Java 语言参考

如上所述,Java 中没有指针的概念。 因此,使用引用代替指针,因为它们的工作方式与指针相同。

术语指针是指 C 和 C++ 语言。 在Java中,我们不能使用指针,因此使用了一种称为引用的替代方法。 如前所述,引用的工作方式与指针相同,但它们的用法略有不同。

当使用引用时,它是通过函数完成的。 引用的副本被复制到用于调用对象的函数的堆栈中,并允许根据需要操作该对象。

即使用户想使用指针,也可以随意使用引用。 下面是一个示例,解释了 Java 中 Reference 的使用。

class Shape {
     int length;
     int breadth;
}

public class ShapesUse{
    public static void main(String args[]){
        /*
        Here, an example1 is used as a reference variable.
        Which means it holds the address of the Shapes object
        */
        Shape example1 = new Shape();

        /*
        example2 is another reference variable used,
        and example2 is initialized with example1
        example1 and example2 reference the same object,
        so no duplication and extra memory are used.
        */
        Shape example2 = example1;

        example1.length = 10;
        example2.breadth = 26;

        System.out.println("length of example 1 is: " + example1.length);
        System.out.println("breath of example 1 is: " + example2.breadth);
    }
}

在此示例中,使用 example1 和 example2 作为参考。 因为它们保存了对象形状的地址,并且通过这个对象来调用长度和宽度。

请记住,我们不能在该程序之外使用这些引用。 以下是上面代码的输出。 正如我们所看到的,参考文献按预期工作。

输出:

length of example 1 is: 10
breath of example 1 is: 26

在 Java 中使用引用作为指针的缺点

让我们看看 Java 语言中没有指针的一些缺点。

  1. 显式使用 - 虽然引用可以用作指针,但有一个缺点。 我们不能明确地使用引用。 我们不能在 Java 程序的作用域之外使用这些指针。

    使用引用执行的任何操作都是隐式的,因此它们不可见。 这是一个很大的缺点,因为指针用于访问资源,而我们可以显式地执行此操作。

    在 C 编程中,我们可以减去或加上指针的地址来指向事物。 然而,在Java中,引用只能指向一件事。

  2. 严格控制 - 引用的控制比 C 或 C++ 严格得多。 不幸的是,这意味着类型转换不可用。

    然而,在指针中,我们可以将类型转换为 char,例如 int。 但在Java中,引用只能指向同一类型的对象。 因此,例如,我们只能对字符串类型的对象使用字符串引用。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便