Java常用类和方法重点总结

  1. 简述Java中内存分配的问题
    • 凡是new() 出来的东西,都是堆中进行分配的
    • 局部变量【数据类型+变量名】都是在栈中进行分配的
    • 静态变量【static】和字符串常量【”String”】都是在数据区进行分配的
    • 方法【代码】都是在代码区进行存放的
  2. 简述Java中Object类的地位
    • Java中所有的类【自己定义的类以及Sun公司提供的类】都默认自动继承了Obeject类
    • Java中所有的类都从Object类中继承了toString()方法、hashCode()方法和equals等方法
  3. 简述Object类中toString()方法的注意事项

    • toString()方法的返回值是一个字符串
    • toString()方法返回的是类的名字和该对象的哈希码组成的一个字符串,即toString()方法返回的是 该对象的字符串表现形式
    • 在Java中,System.out.println(类对象名)实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString(),toString()方法的好处 在碰到println方法的时候,会被自动调用,不用显示的写出来

      eg: 
      
      1
      2
      String str =  new String();
      System.out.println(str) <==> System.out.println(str.toString()) ---->toString()自动隐藏
    • 建议所有的子类都重写从Object类中继承过来toString方法,否则toString方法的返回值没有什么实际含义(为什么要重写的原因)

  4. 简述Object类中equals()类方法的注意事项
    • equals方法的返回值为true或false
    • Object类中equals方法只有在 两个对象是同一块内存区域时,即不但内容相同、地址还必须相同时,才返回true,否则即便内容相同、如果地址不同只会返回false
    • 重写Object类中的equals方法目的在于:保证只要两个对象的内容相同,equals方法就返回true(为什么要重写的原因)
  5. 简述Object类中hashCode()方法的注意事项
    • 哈希码原本指的是 内存空间地址的十六进制表示形式
    • hashCode()方法返回的是 **该对象的哈希码,即该对象的真实内存地址的十六进制表示形式,但是重写完hashCode()方法之后,返回的不再是该对象真实内存地址的十六进制表示形式
  6. 学习Java中toString方法、equals方法、hashCode方法共同的一个注意事项
    在Java中,凡是动态分配的内存都是没有名字的,而是将其地址赋给一个引用变量【引用】,用引用变量去代表这个事物,所以引用和动态分配的内存有本质上的区别,但是学习Java中的toString方法、equals方法和hashCode方法时默认引用和其指向的动态分配的内存是一个事物,不区分彼此
  7. 从逻辑上阐述为什么要重写equals方法和hashCode方法 (重点
    • 对于用户来说,逻辑上只要两个对象的内容相同,其地址以及这两个对象就应该相等,而要保证地址相同就应该重写hashCode方法,而要保证对象相同就应该重写equals方法
    • 凡是Java中自带的类都已经重写了equals方法和hashCode方法,重写之后只要两个对象的内容相同,hashCode方法的返回值就相同,保证地址相同,equals方法就返回true,保证两个对象是同一个对象,而Java中凡是用户自己定义的类只能自己区重写这两个方法( 为什么我们自己定义的类,要自己重写这两个方法,toString()也要重写 );
      【new Integer(1)与new Integer(2)】
  8. 简述String类中的equals方法与Object类中的equals方法的不同点
    • String类中的equals方法是用来判断两个对象的内容是否相同、而Object类中的equals方法是用来判断两个对象是否是同一个对象,所谓同一个对象指的是内存中的同一块存储空间
  9. 对于Java中StringBuffer类的由来
  10. String类对象表示不可修改的UniCode编码字符串、即String类对象一旦创建就不可在更改,即只要创建一个字符串,就会重新分配一块内存空间,因此如果经常对字符串的内容进行修改而使用String类的话,就会造成空间以及时间的浪费,因此如果经常对字符串的内容进行修改的话,可以使用StringBuffer类,StringBuffer类可以一直对同一块内存空间进行操作,对一个字符串不断的进行修改,正因为StringBuffer类的这个优点,所以StringBuffer类中存在着大量修改字符串的方法,但是String类中却没有
  11. 简述String、StringBuffer类中常用的一个方法
    • valueOf():将基本类型数据转化为字符串
  12. 简述String类与StringBuffer类的关联
    • 先使用StringBuffer类将字符串的内容不断的进行修改、最后将成品放到String类里面去
    • StringBuffer类中的toString方法可以将String类对象转化为StringBuffer类对象
      String str1 = str2.toString();
    • 在Java中双引号括起来的字符串也可以被当做String类对象 如:“zhang”.length();
0%