2015年12月20日18:25:21
Java常用类和方法重点总结
作者:数据分析玩家
1、简述Java中内存分配的问题
1>凡是new()出来的东西,都是在堆中进行分配的
2>局部变量【数据类型+变量名】都是在栈中进行分配的
3>静态变量【static】和字符串常量【“String”】都是在数据区进行分配的
4>方法【代码】都是在代码区进行存放的
2、简述Java中Object类的地位
1>Java中所有的类【自己定义的类以及Sun公司提供的类】都默认自动继承了Object类
2>Java中所有的类都从Object类中继承了toString()方法、hashCode()方法和equals()等方法
3、简述Object类中toString()方法的注意事项
1>toString()方法的返回值是一个字符串
2>toString()方法返回的是类的名字和该对象的哈希码组成的一个字符串,即toString()方法返回的是该对象的字符串表示形式
3>在Java中System.out.println(类对象名)实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString(),toString方法的好处是在碰到println方法的时候会被自动调用,不用显示的写出来
4>建议所有的子类都重写从Object类中继承过来toString方法,否则toString方法的返回值没有什么实际含义
4、简述Object类中equals()方法的注意事项
1>equals方法的返回值为true或false
2>Object类中equals方法只有在两个对象是同一块内存区域时,即不但内容相同、地址还必须相同时才返回true,否则即便内容相同、如果地址不同只会返回false
3>重写Object类中的equals方法目的在于:保证只要两个对象的内容相同,equals方法就返回true
5、简述Object类中hashCode()方法的注意事项
1>哈希码原本指的是内存空间地址的十六进制表示形式
2>hashCode()方法返回的是该对象的哈希码、即该对象的真实内存地址的十六进制表示形式,但是重写完hashCode()方法之后,返回的不再是该对象真实内存地址的十六进制表示形式
6、学习Java中toString方法、equals方法、hashCode方法共同的一个注意事项
在Java中,凡是动态分配的内存都是没有名字的,而是将其地址赋给一个指针变量【引用】,用指针变量去代表这个事物,所以引用和动态分配的内存有本质上的区别,但是在学习Java中的toString方法、equals方法和hashCode方法时默认引用和其指向的动态分配的内存是一个事物,不区分彼此
7、从逻辑上阐述为什么要重写equals方法和hashCode方法
1>对于用户来说,逻辑上只要两个对象的内容相同,其地址以及这两个对象就应该相等,而要保证地址相同就应该重写hashCode方法,而要保证对象相同就应该重写equals方法
2>凡是Java中自带的类都已经重写了equals方法和hashCode方法,重写之后只要两个对象的内容相同,hashCode方法的返回值就相同,保证地址相同,equals方法就返回true,保证两个对象是同一个对象,而Java中凡是用户自己定义的类只能自己去重写这两个方法
【new Integer(1)与new Integer(2)】
8、简述String类中的equals方法与Object类中的equals方法的不同点
String类中的equals方法是用来判断两个对象的内容是否相同、而Object类中的equals方法是用来判断两个对象是否是同一个对象,所谓同一个对象指的是内存中的同一块存储空间
9、对于Java中动态分配的内存来说,等号与equals方法的不同点
等号比较的是两个对象的地址而equals方法比较的是两个对象的内容,本质上比较的都是内存空间里面所存储的东西
10、简述Java中StringBuffer类的由来
String类对象表示不可修改的UniCode编码字符串、即String类对象一旦创建就不可在更改,即只要创建一个字符串,就会重新分配一块内存空间,因此如果经常对字符串的内容进行修改而使用String类的话,就会造成空间以及时间的浪费,因此如果经常对字符串的内容进行修改的话,可以使用StringBuffer类,StringBuffer类可以一直对同一块内存空间进行操作,对一个字符串不断的进行修改,正因为StringBuffer类的这个优点,所以StringBuffer类中存在着大量修改字符串的方法,但是String类中却没有
11、简述String、StringBuffer类中常用的一个方法
valueOf():将基本类型数据转化为字符串
12、简述String类与StringBuffer类的关联
1>先使用StringBuffer类将字符串的内容不断的进行修改、最后将成品放到String类里面去
2>StringBuffer类中的toString方法可以将String类对象转化为StringBuffer类对象
String str1 = str2.toString();
3>在Java中双引号括起来的字符串也可以被当做String类对象 如:“zhang”.length();
2015年12月20日20:04:03