JAVA里面的“指针”

         
      众所周知,在java里面是没有指针的。那为何此处还要说java里面的“指针”呢?我们知道在C/C++中,指针是指向内存中的地址。那么在Java里面何来的指针?在java里面没有指针的定义。但是java里面的“指针”无处不在。下面将进行介绍。我们知道JAVA里面用的最多的就是对象,我们经常将一个对象传递给不同的变量,例如:

  1. Student s1 = new Student();
  2. Student s2 = s1;、
        此时s1和s2是指向同一个对象的,也就是s1和s2引用同一个对象,我们知道java里面创建一个对象是存放在堆的,当我们new一个对象的时候其实是在堆中开辟了一个存储该对象的空间,返回是的存储该对象在堆中的地址,所以在java中我们所谓的对象引用就是指针,只是没有像C/C++中给出了一个明确的定义。java是为了避免指针带来的使用上的麻烦,所以就使用对象的引用来代替了指针。上面的例子中,当我们在s1中进行修改Student中的属性的时候,那么当s2取Student中属性的值的时候便是取得了s1修改后的值,这是因为s1和s2是指向堆中的同一块内容,所以只要其中一个变量修改了堆中的值,则其他的变量将取得堆中最后更新的值。所以我们可以知道,s2=s1并不是又在堆中创建了一块内存,而只是把一个对象的地址赋给了s2,此时还是只是创建了一个对像,而不是两个。

JAVA里面的“指针”的更多相关文章

  1. 【实战Java高并发程序设计 1】Java中的指针:Unsafe类

    是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

  2. java实现函数指针

    在Java程序员面试笔试宝典中看到的东西,感觉很有用,特开此文 函数指针一般作为函数的参数来使用,开发人员在使用是可以根据自己的需求传递自动以的函数来实现指定的功能,例如,在实现排序算法时,可以通过传 ...

  3. Java为什么没有指针

    为了摒弃指针带来的风险(当然了,也就放弃了指针带来的效率). 1.C/C++为什么有指针? 这个很简单,程序都是在内存中运行的,只要有内存,就有内存地址,有地址,就必然有指针,只是C++对内存地址的访 ...

  4. java中的“指针”

    java中的"指针" 通常我们说java中没有指针,但是java中的"引用"就相当于指针,只是不称为指针而已. 错误例子 public List<Clus ...

  5. 大数据之路week01--自学之面向对象java(static,this指针(初稿))

    函数的重载 返回值不一样会报错 java中,如果自己定义了构造函数的话,它就不会给你默认一个无参函数 如果一个属性,只进行定义,不初始化,自动补0,如果是一个布尔属性,默认是false但是如果一个局部 ...

  6. JAVA中的指针

    不同于CPP,JAVA中不需要程序员对指针进行操作.不过,这不代表JAVA没有指针,事实上,JAVA的指针操作都被底层代码封装了.笔者在初学Java时,虽然就了解了形参,实参,StringBuffer ...

  7. 4.4.3 Java中的指针:Unsafe类

    java多线程编程的无锁CAS底层都是通过 Unsafe进行操作的:源码如下 public final boolean compareAndSet(int expect, int update) { ...

  8. [转] C++的引用传递、指针传递参数在java中的相应处理方法

    原文出处:[http://blog.csdn.net/conowen/article/details/7420533] 首先要明白一点,java是没有指针这个概念的. 但是要实现C++的引用传递.指针 ...

  9. Atitit.java c++指针使用总结O7

    Atitit.java c++指针使用总结O7 1. 指针的本质 1 2. 指针的作用 1 1. 提升性能问题这常常用于遍历数组, 1 2. 计算两个指针的的距离 2 3. 避免栈溢出,创建动态数据结 ...

随机推荐

  1. 利用自定义 ORM 下使用 flask-login 做登录校验使用笔记

    1. 安装: pip install flask_login 2. 使用: 注册应用 import os from flask_login import LoginManager, current_u ...

  2. VSCode中C/C++库文件的配置

    VSCode中C/C++库文件的配置 之前一直在是用sublime做主要编辑器,现在主要使用VSCode,毕竟大厂制作,从目前的使用情况来看,我更喜欢使用VSCode编辑器. 有时候会用VScode来 ...

  3. Linux日常积累

      1. /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量,写在 /etc/profile 里面的是对所有用户永久 ...

  4. win10系统安装docker注意事项

    首先要确保win10系统支持 hyper-v 技术. 然后按照官网的流程下载,安装,基本上不会出什么问题.安装好之后使用,需要进行以下几个操作 access denied问题的解决 按win+R,输入 ...

  5. python OptionParser模块使用

    OptionParser是python中用来处理命令行的模块,在我们使用python进行流程化开发中必要的工具 Optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posi ...

  6. 网格系统-bootStrap4常用CSS笔记

    .row 定义一行 .col 均分列数,最多一行12列.每列左右间隙各15px .col-{1到12} 定义在所有屏幕下的列宽 .col-{sm|md|lg|xl}-{1到12} 定义在指定屏幕下该列 ...

  7. 笨办法学Python - 习题11-12: Asking Questions & Prompting People

    目录 1.习题 11: 提问 2.习题 12: 提示别人 3.总结 1.习题 11: 提问 学习目标:了解人机交互场景,熟悉raw_input 的用法. 1.在 Python2.x 中 raw_inp ...

  8. [linux] /sbin/nologin的用户运行程序

    创建一个/sbin/nologin用户 [root@host101 ~]# useradd -s /sbin/nologin redis [root@host101 ~]# grep redis /e ...

  9. OO第一阶段作业总结

    对于OO这门课,学长学姐偶尔提起,大家都略有耳闻,但是并没有将其和计组相提并论.因此,在刚开始接触的时候,并不认为其会比计组难到哪里去,然而事实证明,还是不要想当然去判断,以及不提前学好JAVA对于O ...

  10. 2018-2019-20172321 《Java软件结构与数据结构》第六周学习总结

    2018-2019-20172321 <Java软件结构与数据结构>第六周学习总结 教材学习内容总结 第10章 树 10.1概述 树由一个包含结点和边的集构成,其中的元素被储存在这些结点中 ...