迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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中,引用只能指向同一类型的对象。 因此,例如,我们只能对字符串类型的对象使用字符串引用。

上一篇:Java中获取屏幕分辨率

下一篇:没有了

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

本文地址:

相关文章

Java中获取屏幕分辨率

发布时间:2023/08/07 浏览次数:139 分类:Java

本文将展示如何在 Java 中找到屏幕分辨率。 此外,我们将通过一些示例和解释来讨论该主题,以使该主题更容易。在 Java 中查找单屏幕窗口的屏幕分辨率

如何在 Java 代码中调用 Python 脚本

发布时间:2023/08/07 浏览次数:139 分类:Java

本文介绍了从 Java 代码调用 Python 脚本的三种不同方法。从 Java 代码调用 Python 脚本 有时,我们必须从Java代码中调用Python脚本来满足项目需求。

5 个最好的 Java 图像处理库

发布时间:2023/08/07 浏览次数:181 分类:Java

本文介绍了 Java 中五个最好的图像处理库。5 个最好的 Java 图像处理库 Java 中提供了相当多的图像处理库可以用于图像处理。 有些库是付费的,有些是开源的; 我们选择了 5 个可用于 Java 图像

在 Java 中测试私有方法

发布时间:2023/08/07 浏览次数:56 分类:Java

This tutorial will discuss how to test the private method in Java.私有方法是外部无法访问的方法,这意味着外部无法调用它。 它仅适用于类的内部元素。在Java中测试私有方法 假设我们有一个如下所示的类需

用Java解析HTML

发布时间:2023/08/07 浏览次数:73 分类:Java

本文讨论如何解析 HTML 文件。 此外,我们将通过提供必要的示例和解释来讨论该主题,以使该主题更容易。Jsoup 在 Java 中的工作

Java Lang Runtime Java 中的 exec() 方法

发布时间:2023/08/07 浏览次数:88 分类:Java

本文介绍了 Java 的 Runtime.exec() 方法。Java Lang Runtime Java 中的 exec() 方法 Java Lang Runtime 类用于每个 Java 应用程序与类运行时实例和环境接口之间的交互。

控制 java.io.tmpdir 的环境变量

发布时间:2023/08/07 浏览次数:143 分类:Java

本文将介绍名为 java.io.tmpdir 的环境变量,它可用于调节 Java 的临时文件目录。Java虚拟机(JVM)可以生成临时文件并将它们存储在java.io.tmpdir系统参数指定的目录中。

Java 中的 Zulu

发布时间:2023/08/07 浏览次数:60 分类:Java

Zulu 是 Java 11 的一部分。它受到广泛的操作系统和硬件平台的支持。如何在 Java 中安装 Zulu 首先,从 Azul 的官方下载页面下载必要的 ZIP 或 TAR.GZ。

在 Java 中使用 Mockito 模拟静态方法

发布时间:2023/08/07 浏览次数:184 分类:Java

本文介绍了如何使用mockito来模拟Java中的静态方法。Java 中的模拟静态方法 在 Java 中执行单元测试时需要模拟静态方法。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便