分享
 
 
 

我的Thinking in Java学习笔记

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

2004-8-5 23:20

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

第一章 对象导论

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

在以后的学习中,这些知识是会在里面融会贯通的。

第二章 万事万物皆对象

在java程序中,万事万物皆对象,即使是java程序本身,也是一个对象

一、Reference是操纵对象之钥匙

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

例如:String name;

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

二、所有的对象都需要你来建立

1、储存在那里

a、寄存器 这里是核心的存储空间,我们是没办法操纵的

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

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

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

e、常量储存空间 这里存放的是程序中的常量,常量值不会改变,最安全

f、non-ram 流或者是持久话对象

2、基本数据类型

boolean char byte short int long float double void 基本数据类型的数据是不用new 来创建的,直接int i=0,不使用heap空间,他是被放在stack中的,速度快!但是假如你要是想用heap来存储基本数据类型的话,就要使用该类型的外覆类来实现了 例如Integer i= new Integer("0");

注意!String不是基本数据类型,她是对象!从他的定义方法就可以知道了!

3、数组(array)

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

三、你不需要摧毁对象

1、基本类型生存范围

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

{

int i=1;

{

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

}

}

2、对象的生存范围

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

{

String name =new Sting("baby");

}

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

四、建立新的数据类型 class

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

例如:class women{ //class body}这样你就定义一个women 类,当然这个类没有任何属性

1、数据成员和方法

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

五、方法、参数、返回值

一个合法的方法包括名称、参数、返回类型、方法体 例如

void name(int i)

{

return;

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

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

未完。。。。。。。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有