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 }}
相关推荐
开发者巧妙地结合了Java的图形库、定时器和变换机制,创造了一个既实用又有趣的时钟应用。对于学习Java GUI编程的人来说,这是一个很好的示例,可以从中学习到如何构建动态的、交互式的桌面应用。
在C++或Java中,我们可以直接定义类来创建对象,但在C语言中,我们需要通过结构体来模拟类,并通过函数指针来模拟方法。 首先,我们可以通过创建一个结构体来表示类的实例,这个结构体包含了类的属性,即数据成员。...
### Java基础教程——Java的起源 #### 1. Java 的由来 Java 是一种流行的编程语言,其发展历程深受计算机科学史上一系列重要事件的影响。要理解 Java 的独特之处及其为何能够成为当今广泛使用的语言之一,我们需要...
1. **跨平台性**:Java通过Java虚拟机(JVM)实现了真正的跨平台兼容性,开发者只需编写一次代码,即可在任何支持JVM的操作系统上运行,无需针对不同平台进行额外修改,大大降低了开发成本和维护难度。 2. **安全性**...
本项目“安卓Android源码——三原色圆形时间锁屏”就是一个很好的实例,它展示了如何通过源码实现一个独特的锁屏界面,将时间显示与用户交互巧妙结合,为用户提供个性化的体验。 首先,我们要理解“三原色圆形时间...
循环队列是一种数据结构,它在数组或链表的基础上实现了队列的特点,同时通过巧妙的设计使得“出队”和“入队”的操作更为高效,尤其在处理满队列时避免了数组或链表的重新分配。以下是对这个主题的详细解释: 1. *...
这种方法对那些希望利用面向对象设计但受限于嵌入式环境或仅支持C语言的开发者来说尤其有用。它可以提高代码的可重用性、模块化和健壮性,同时帮助开发者平滑地过渡到面向对象的思维方式。 需要注意的是,虽然C语言...
在IT领域,尤其是在网络编程和高性能通信框架中,Netty是一个非常重要的开源库,它提供了高效、可扩展的网络应用程序...对于Java和网络编程的开发者来说,理解和掌握Netty的零拷贝机制是提升应用程序性能的重要手段。
对于C语言这样的语言来说,虽然缺乏内置的支持机制,但依然可以通过技巧性的编码方式实现设计模式的核心理念。这对于提升C语言程序的质量至关重要。 #### 软件设计层面的三个主要方面 1. **软件设计受众**:明确...
总结来说,哈希表的时间复杂度为O(1)是基于它能够快速通过哈希函数计算出数组下标并直接访问数据的假设。虽然实际操作中可能会遇到冲突,但通过有效的冲突解决策略,哈希表依然能提供高效的性能,成为解决大量查找...
《LeetCode源码解析——Java实现》 LeetCode是一个在线平台,它提供了各种算法和编程题目,旨在提升程序员的技能并帮助他们准备技术面试。"leetcodes2013"是一个存储库,包含了2013年部分LeetCode问题的Java源代码...
今天我们将深入探讨一个有趣的项目——"Bluetooth MeyMouse Accelerometer camera",它巧妙地利用了J2ME(Java Micro Edition)平台,将老旧的J2ME手机转化为一个创新的蓝牙加速度计摄像头鼠标。 这个开源项目的...
总结来说,基于Disruptor的RingBuffer阻塞队列是一种高效、低延迟的并发解决方案。它通过消除锁竞争、实现无锁顺序化处理,以及引入智能的中断器机制,极大地提升了并发环境下的数据处理能力。对于需要处理大量并发...
总的来说,"CS262F-TheFantasticFive"项目展示了Android开发的全面技术栈,包括Java编程、UI设计、数据库操作、地理位置服务、权限管理和用户体验优化。对于学习Android开发的初学者和专业人士来说,这是一个极好的...
总结来说,"将军"可能暗指Kotlin编程中的智慧和策略,而"Checkmate-main"可能是一个使用Kotlin开发的项目,可能涉及了游戏逻辑、函数式编程、空安全特性和并发处理等多个知识点。通过深入研究这些内容,我们可以更好...
17.1. 从直接代码操作到通过函数指针操作 17.2. 从函数参数到参数指针 17.3. 从文件系统到文件系统层 17.4. 从代码到DSL(Domain-Specific Language) 17.5. 复用与分离 17.6.分层是永恒之道? 第18章 Python的字典类...
【标题】: "Kotlin在码头工人建设中的应用——深入解析dojob项目" 【正文】: Kotlin,一种由JetBrains公司开发的静态类型的编程语言,近年来在Android开发领域获得了广泛的认可,同时也被广泛应用于服务器端开发、...
总的来说,"Scripts-2.0"项目展示了C#在脚本环境中的强大潜力,不仅体现了其语言的强大功能,也反映了开发者的创新思维和技术实力。通过学习和研究这个项目,开发者不仅可以提升C#的编程技能,还能了解到如何构建一...
总的来说,Rez.App的成功在于其巧妙地利用了Kotlin语言的优势,如空安全、函数式编程、扩展功能和协程等,从而实现了高效、稳定且易于维护的代码。这不仅体现在应用本身的功能实现上,也体现在开发流程的优化和团队...