无指针,不java——40岁偷练java之内功心法(3)
来源:互联网 发布:杭州php学费多少 编辑:程序博客网 时间:2024/06/10 09:06
1. 指针的本质
指针的本质是地址。 变量按存放的数据不同,可分为两大类,一类是直接存放数据的,另一类是存放数据所在地址的。后一种变量就叫指针变量。
2.有人说java中没有指针
只要理解了“指针的本质是地址”这句话,答案就很明确了。C定义了一个指针“int *p”, java说,我的也定义一个“Integer p”,我的p就相当于你的*p。我是不是比你简单,我是不是比你好用?此话很差矣,我看也没简单,也没好用,当然也没复杂,也没难用。java的p不叫指针,但是叫引用对吧,引用只是指针的一个不同叫法而已,用赵老的话说:换个马甲我就不认识你了? 指针无处不在,java也不例外。
3. *、 &、数组 风马牛不相及吗?
在c语言中,*用来声明指针变量:
int *p; //定义一个整型指针变量p
p=&q; //取变量q的地址(假设q是个已声明的整型变量),并把所取地址赋给p,&为一目运算符,意为“取地址” int q [10]; //定义一个整型数组q
p=&q; //这是非常不对的,因为数组本身已经是指针类型,即数组变量是一个在声明时不需加*的指针变量,此处p=q即可,即表示把q的值(q的值是数组的首地址)赋给p.
而对于java,就没有这些乱七八糟的事了,java除了基本类型外都是引用类型,换句话说,除了基本类型外其它全是指针了。需要注意的还是数组,java中的多维数组与c、c++中的多维数组是不一样的。java中的多维数组是数组的嵌套,举个例子来说,java 中的二维数组,就是由一维数组组成的数组,而且这个一维数组的长度还可以不一样,一定要注意。另外就是在java 中进行数组的复制时,一定要深刻理解复制的实质,搞清楚是深层复制还是浅层复制。(关于此问题后面将专文讲述)。
4. 货比三家,参悟指针一个不错的方法
将java,C,C++,C#中关于指针的定义、用法,统一地拿出来进行一下比较学习,是一个不错的学习方法,不但可以加深理解指针的内涵,更有可能使自己可以在以后的项目中不管是什么语言写的,都能见鬼杀鬼,极大增强内功层级。台湾碁峰的一本书“指针的艺术”挺不错,这是我见过的把几种语言的指针一起拉出来讲的书。这本书将有可能会在10月份在万水出简体中文版,值得期待一下。
5.得指针者得天下
编程语言的难点,我感觉还是在指针这一块,指针吃透了,就仿佛能够看到数据及代码在内存中的栖息和活动场景,可以极大地提高编程素养,减少不可预知的bug。指针吃不透,项目中将处处碰壁,写代码往往也不敢下笔。而吃透了指针,写代码时将下手如有神。 对于面向对象的java来说,当然更是——无指针,不java。
学编程如果不懂分析设计与建模,那永远是苦力。《大象-thinking in UML》是迄今为止最好最好最好最好的讲分析设计与建模的好书。http://www.china-pub.com/129881
- 无指针,不java——40岁偷练java之内功心法(3)
- 你的类中有几个方法?——40岁偷练java之内功心法(1)
- 基本类型与基本类型的包装类型,即生瑜何生亮?——40岁偷练java之内功心法(2)
- Android 内功心法(1.9)——java设计模式之装饰模式
- Android 内功心法(1.10)——android常用设计模式之建造者(Builder)模式
- 如何写代码 —— 编程内功心法(转载)
- 软件测试内功心法—序
- 「Java基础教程」java基础学习内功心法
- 内功心法 -- java.util.ArrayList<E> (1)
- 内功心法 -- java.util.ArrayList<E> (1)
- 内功心法 -- java.util.ArrayList<E> (1)
- 内功心法 -- java.util.ArrayList<E> (1)
- Android 内功心法(1.1)——android常用设计模式之单例模式
- Android 内功心法(1.2)——android常用设计模式之工厂模式
- Android 内功心法(1.3)——android常用设计模式之观察者模式
- Android 内功心法(1.4)——android常用设计模式之代理模式
- Android 内功心法(1.5)——android常用设计模式之命令模式
- Android 内功心法(1.6)——android常用设计模式之适配器模式
- SaaS 软件服务化
- 查找两个字符串的最长公共子串的Javascript函数
- inezha(哪吒网)这个思路很不错
- 开始鄙视我自己
- FLEX实践—Application与Module之通信
- 无指针,不java——40岁偷练java之内功心法(3)
- 免费调节阀流量系数(KV/CV)计算选型软件
- 搜索引擎之内存映射快速索引文件
- 独家:.NET开发人员必知的八个网站
- 女人一生必须死守的14个部位
- 开发javamail
- 由JS中toString()方法所想到的
- [轻松一下]-笑话巨搞,饭后帮助消化
- vs2008的dvcemumanager.exe出现无法启动仿真程序错误0x80040154