当前位置: 首页 > news >正文

对JAVA 中“指针“理解

对于Java中的指针,以下典型案例会让你对指针的理解更加深刻。

首先对于:

f24826fcb2a34d9c9895c4cf831503da.png

  系统自动分配对应空间储存数字 1,这个空间被变量名称b所指向即:

  b                    ——>                1

变量名称                                空间

明白上述再来分析以下典型案例:

import java.util.*;public class Main {public static int N = 100;public static void main(String[] args) {good a[] = new good[N];a[0].m = 1;a[0].v = 2;System.out.print(a[0].m + " " + a[0].v);}
}
class good{int m;int v;good(){};
}

对以上代码的测试结果可以试着自己分析一下,正确结果如下:

8e2694384a704b218baeb01f1a370d1d.png

为什么会报错?对代码进行分析:

    1. 首先我们设立了一个good类,并定义了一个good类数组a。即a[0],a[1].......,a[N - 1]都是good类。

    2.对a[0]内的m,v进行赋值。

对a[0]单独输出试试 :

import java.util.*;public class Main {public static int N = 100;public static void main(String[] args) {good a[] = new good[N];System.out.print(a[0]);}
}
class good{int m;int v;good(){};
}

输出: dfb69a06805a44d8a7d4d28551ebb0d1.png

即:  a[0]     ——>       null

  推测出,本代码没有给a[0]分配空间,即只有变量名,没有指向空间。那么a[0]就是一个good类空指针。

修改方法:

import java.util.*;public class Main {public static int N = 100;public static void main(String[] args) {good a[] = new good[N];a[0] = new good();a[0].m = 1;a[0].v = 2;System.out.print(a[0].m +" "+ a[0].v);}
}
class good{int m;int v;good(){};
}

输出:

c2098468168c47b2b5209c56b66919a3.png

即:给a[0]分配空间后再对,空间内部变量m,v操作 。

为了进一步证明a[0]是good类型空指针:

  如下对a[1]分配空间,对内部变量进行操作,再让a[0] 指向 a[1]所指向的空间即a[0],a[1]都指向一处空间:

import java.util.*;public class Main {public static int N = 100;public static void main(String[] args) {good a[] = new good[N];a[1] = new good();a[1].m = 1;a[1].v = 2;System.out.println(a[0]);a[0] = a[1];//a[0]指向a[1]System.out.println(a[0].m +" "+ a[0].v);System.out.print(a[1].m +" "+ a[1].v);}
}
class good{int m;int v;good(){};
}

输出: 

b4f4428f6fa1464b9668a0325f6862e6.png

以上就是目前我对此特殊指针案例的理解。

 

http://www.lryc.cn/news/9375.html

相关文章:

  • 功率放大器在MEMS微结构模态测试研究中的应用
  • 【算法基础】字典树(Trie树)
  • MyBatis 插件 + 注解轻松实现数据脱敏
  • MySQL优化篇-MySQL压力测试
  • CF43A Football 题解
  • Nginx常用命令及具体应用(Linux系统)
  • 从零实现Web服务器(三):日志优化,压力测试,实战接收HTTP请求,实战响应HTTP请求
  • MFC入门
  • 1、H5+CSS面试题
  • 亚马逊云科技重磅发布《亚马逊云科技汽车行业解决方案》
  • Springboot扩展点之FactoryBean
  • 新库上线 | CnOpenDataA股上市公司交易所监管措施数据
  • 同步辐射XAFS表征方法的应用场景分析
  • 06 antdesign react Anchor 不同页面之间实现锚点
  • mysql调优-内存缓冲池
  • 【LeetCode】每日一题(5)
  • 输入任意多个整数, 把这些数据保存到文件data.txt中.(按ctrl + z)
  • Mysql数据库的时间(3)一如何用函数插入时间
  • 关于eval函数(将JSON格式的字符串转换成JSON格式对象)
  • 2023最强软件测试面试题,精选100 道,内附答案版,冲刺金3银4
  • 一文搞懂Docker容器里进程的 pid 是如何申请出来的?
  • 若依框架如何新增自定义主题风格
  • C语言格式化输入和输出; Format格式化
  • Revit教程:怎么关掉工具栏的实时提示?
  • javascript 简介
  • 医学图象分割常用损失函数(附Pytorch和Keras代码)
  • 【新2023】华为OD机试 - 病菌感染(Python)
  • QGIS中进行批量坡向计算
  • Redis持久化机制
  • 2、VUE面试题