您的位置:网站首页 > Java教程 > 正文

我的Thinking in Java学习笔记

类别:Java教程 日期:2017-10-14 14:30:22 人气: 来源:

  其实我早就有想写个学习笔记的想法了。今天终于下定决心要写了,写的不好的地方,大家给我啊!其实也就是个简化版的TIJ

  其实这章介绍的是oop的思想,知道什么是抽象、接口、继承等等,其实这些我觉得没有必要专门提出来写一章,这个我就不介绍了

  c语言中是使用指针来对象的,但是java呢?用的是reference来对象,我习惯把他叫做句柄,句柄和对象的关系就想是电视遥控器和电视机的关系一样,既然是这样,那么遥控器和电视机都是可以出现的

  这个java语句只会产生句饼(遥控器),并不产生实际的对象(电视机),就想你老婆还没生孩子之前你们就把名字给取好了一样,句柄并没有连接到实际的对象上。这个样子写代码是不推荐的,一个没有指向对象的句柄在调用的时候编译器会抱错,应当使用String name=baby;,或者使用String name =new String(baby);这里new的意思是产生一个string类型的对象,并且这个string叫做baby。这2个方法都可以实现对象的建立。

  b、栈 (stack )这里的存取速度快,效率高,因为这里要求被存储的数据有具体大小和存活时间,使用弹性小,这里一般存储的是我们的对象句柄,而对象是不存在这里的

  c、堆 (heap) 这里是通用的存储空间,他比stack好在编译器不需要知道实际在heap中存储数据的大小,也不知道这个空间需要分配多长时间,弹性好,所以用来存储对象,但是速度要比stack慢很多

  d、静态存储空间(static storage)这里是存放被声明为static的特定,java对象本身是不会分配在这里的

  java中的数组使用和定义上要比c中的数组更安全,当你在定义数组的时候其实产生的是一个储存对象句柄的数组,而每一个句柄所指向的值回被设定为null,也就是不指向任何对象

  java中基本类型的范围是由一对大括号决定的,在空间内定义的变量,只能用于空间结束之前

  int i=100;//错误!这样的定义在java总是不允许的!编译器会认为i已经被定义过了

  对象拥有的寿命和基本类型是不一样的,当你使用new来产生一个对象的时候,即使离开了大括号,该对象还是存在的

  句柄name会在大括号的空间之外消失的,但是他所指向的string对象却还在继续占用着内存,但是大家会认为大量的无用对象会占用大量的内存,java中是怎么解决的呢?他使用的是垃圾回收机制,垃圾回收器会在特定的时间检查使用new创建的对象,假如这些对象已经没有句柄指向他们,那么他就回把无用的对象清理掉。

  java中既然一切全是对象,那么是什么来对象的属性呢?通过使用类。java中使用class关键字来自己定义一个类

  一个类中,存在2中,一个是数据,一个是方法。数据可以是基本数据类型,也可以是对象,而基本数据类型在声明的时候系统会自动的给他赋予一个初始值

  }其中 名称name() 参数int i 返回类型 void 方法体 {},对于一个class而言,名称+参数的组合必须是唯一的,参数也可以是空的,有一个叫test的对象允许你调用一个返回值为string的方法getTest(),则 String name = test.getTest(); name的类型一定要和返回值的类型相同。

  在向一个方法传递一个对象的时候,其实传递的是该对象的句柄(基本数据类型除外),而传递的对象类型一定要和方法中接受参数的参数类型相同。当你不需要方法给你返回什么东西的时候,你可以把该方法的返回类型设置为void,而此时方法中的return就是用来离开方法的,不需要等到他执行完毕,如果方法的返回类型不为void的时候,你可以使用return 返回一个和返回类型一样的值

  推荐:

  

关键词:java学习笔记
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved