C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:
定义一个指针p来指向a的地址(&是地址符号):
*p->&a
*p是指向&a地址的数,*P可以通过改变指针的指向 来改变地址的值,这就是c指针的强大之处 java中怎么来解决值的传递和对地址的操作呢:
java中有两种机制 以值传递和引用传递来代替c的指针, java不准开发人员直接去操作指针的地址的,但可以通过引用做到
值传递:基本数据类型(boolean bety char int short double float long) 值传递相当于赋值运算:
值传递是指在程序中通过赋值来改变参数的一种思想
例如:
public class Demo { // 值传递 public static void main(String args[]) { //定义a为100 int a = 100; //将a的赋给b int b = a; //将200赋值给b b = 200; System.out.println(a); //输出a的值为100, //在程序中只是将a的值赋值给了b,没有将a的地址赋给b }}
二:
public class studyDemo { public static void main(String[] args) { //将类实例化 studyDemo stu = new studyDemo(); int a = 100; //调用change方法(); stu.change(a); //输出a的值 System.out.println("第一次的"+a); //a还是为100 public void change(int s){ //将200赋值给a s = 200; //输出赋值后的s System.out.println("s = "+ s); } }}
引用传递:指引用对象来操作地址,相当于java中的指针
public class studyDemo { private String name; public static void main(String[] args) { studyDemo stu1 = new studyDemo(); stu1.name = "java"; //将stu1对象赋给stu2,stu1的地址也赋值给了stu2,stu2对象可以操作stu1的地址 studyDemo stu2 = stu1; stu2.name = "android"; System.out.println("stu1 :" + stu1.name +" "+ "stu2 :" + stu2.name); //结果都是android }}
相关推荐
详细的讲述了C语言指针指针的用法 彻底搞定C语言指针————————————
智能指针相信大家听说过吧,我理解的智能指针,既是一个C++模板类,重载了指针操作符(->)和(*)操作符,而使它的实例可以"用指针的形式去调用"。 它可以接管任意类型的指针,所以你只需要放心大胆的new出任意对象...
java_指针_数组的
C#中使用指针源程序,我想许多C程序员不愿意学习Java的原因就是Java不支持指针,但是现在类似于Java的C#却已经支持了指针,你可以使用unsafe关键字来告诉编译器下面的函数或者代码是不安全的。一旦你使用了unsafe,...
C++指针详细解析——史上最精彩指针文章
c++11 智能指针(csdn)————程序
因此,在使用这类指针时,需要首先指定A类的一个对象,然后,通过对象来引用指针所指向的成员。例如,给pc指针所指向的数据成员c赋值8,可以表示如下: A a; a.*pc = 8; 其中,运算符.*是用来对指向类成员的...
STEP7——POINTER指针详解[整理].pdf
剑指offer计划13(双指针简单)---java(csdn)————程序
经过几天的奋战,终于让我搞懂了JNA的解析以及指针在结构体中的应用!!!下了很多的资料,里面包含c++的.h头文件,给需要帮助的人看看!! 里面包含代码以及解析过程。
NULL 博文链接:https://448230305.iteye.com/blog/2191121
详细分析了指针与引用的区别,适合初学者了解
设计要求:1)每个生产者和消费者对有界缓冲区进行操作后,实时显示有界缓冲区的全部内容、当前指针位置和生产者/消费者的标识符。2)生产者和消费者各有两个以上。3)多个生产者或多个消费者之间须有共享的对缓冲区...
就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。 先看下面的代码,注意看代码中的注解: #include <iostream> #include <string>...
鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载Yangcong WolfYangcong WolfYangcong WolfYangcong WolfYangcong WolfYangcong ...
c++11智能指针解析——揭开底层⾯纱,完整理解智能指针 昨天跟同事⼩⼩的研究了下关于不同平台下的字节对齐问题,起因是遇到了⼀个坑,vs上没有问题,在安卓上却崩溃了。找了半天后发现是 c++字节补齐问题,期间包括...
c#开发,圆盘指针表,完全与真实时间同步,时间显示精确,代码简洁,较为实用,应用双缓存技术避免了屏幕闪。
java 空指针异常(NullPointerException) java 空指针异常(NullPointerException)
指针和引用的区别详细解答! 指针和引用的区别总结 1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变 2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域...