您的位置:首页 > 编程语言 > Java开发

java基础学习-零星笔记3

2014-11-10 10:18 246 查看
本章学习 Object类的常用方法,java内存

类与类之间的类型转换只能用在父子类上,不能用在兄弟类,更不能用在不相关的两个类之间

子类转换成父类是自动转换,父类转换成子类需要强制类型转换

一个对象不论怎么转来转去,他当初是什么样的类,就永远是那个类的对象,所以再属性的读取和方法的调用上,要注意在什么情况下,只能做什么样的处理。

对象的比较: “==”判断两个对象是否指向同一个内存位置,即使内容相同,内存位置不同也是false。

equals方法为Object类中的public的方法。所有的类都继承Object方法,所以每个类都有equals方法。a.equals(b)

obj instanceof MyObject 判断obj是否是MyObject的对象

java中有个规定:两个相同的对象,散列码必须相同

=用在两个对象之间,表示引用的对象指向是同一个,所以一个对象的属性发生改变,另一个也会跟着改变,如果要分开,需要clone一个新的对象出来。clone为protected方法不能直接调用,需要改写。

对象转换成字符串,tostring()方法

对象的声明在内存中产生引用的空间,兑现实例的声明产生真正的空间,引用空间指向实力空间

数组array,一组相同性质数据的集合,数组的声明和实例的产生 例如: int a[ ]; 或者 int [ ] a; a = new int [ 5 ] 或者直接指定值来产生数组 例如: int a = {1,2.3,4,5} 多维数组的声明:int a [] [] = {{1,2},[2,3]};

数组的索引是从0开始到数组的大小减1,如果数组的大小为10的话,那么索引值就是0-9,java中提供了length的属性,用来表示数组的长度,也就是数组的大小,a.length表示这个数组的大小

数组的复制,System.arraycopy(a, 0 , b , 0 , a.length);

多为数组可以使不规则的,二维可单独分别在声明范围

对象数组,对象数组声明完,不能喝基本数组类型一样立即存放数据,因为对象数组只会产生对象的引用,并没有产生对象的实例,需要先产生对象的实例才能存放数据。

Arrays.tostring()可以将数组转化为字符串。转化对象时可用deepToString()将对象数组中每一项一层层的拨开转化。注意tostring可以传入所有的参数。deepToString只能传入对象数组

比较数组是否相同,可以用equals来。Arrays.equals(a,b),如果比较的数组元素里有时一个数组,这是用deepEquals这个方法

equals方法可以传入任何一种数据类型的数组(有重载方法),但是deepEquals只能传入对象数组的方法

数组排序使用Array.sort(a);来排序。可进行部分排序Array.sort(a,1,4)表示a这个数组中,索引为1的开始,到索引为4(不包含4)之间,就是a[1],a[2],a[3]数字从小到大排序

查找数组中的位置,使用binarySearch方法,该方法使用必须要注意该数组是排序排好的数组,因为本质上做的是二叉树查找,二叉树必须是要排过序的。Array.bianrySearch(a,11)表示a数组中,11在哪个位置,返回int类型。

对象的调用传递的是对象的内存地址。

垃圾回收:一个是对象的引用,一个是对象的实例,当对象的实例不被任何对象的应用指向时,那么就会吧这个对象的实例回收,释放所占用的内存。

就算我们手动调用 System.gc(),GC也不一定运行,而且不手动调用GC,GC也会在适当的时候自动运行,所以垃圾回收这东西是个神奇的玩意,交给java自行处理了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: