JavaSE之三个特殊的类---String----》Object----》包装类

1.String类

 1.  String类有两种实例化方式--》直接赋值传统方法(利用构造方法对象实例化);

   (1)String类中提供了一个共享模式-----》在JNM底层实际上会自动维护一个对象池,如果采用的直接赋值进行String类的对象实例化操作,那么该实例化对象就直接保存在这个对象池中,如果下次继续使用直接赋值的模式生声明String类对象,此时,对象池中若有指定内容,将直接进行引用,若没有,则开辟新的字符串对象后将其保存在对象池中以供下次使用

  使用对象池纯粹就是为了减少开销

   (2)使用构造方法就会开辟两块堆内存空间,并且其中一块会成为垃圾空间,也会对字符串共享产生问题。


 2. 在String类中字符串内容的比较用equals()方法;

     值得注意的是:在字符串比较是不能用==来进行比较,==本身是比较数值的,用==来比较两个对象,就是在比较两个对象所指空间的内存地址,而并非比较两个字符串的内容。

 3. 所有的字符串常量都是String的匿名对象,而且匿名对象一定保存在堆内存中。

  (1) 字符串常量不可变更,也就是说字符串一旦定义不能被改变,但是字符串对象的引用可以改变,这样会造成大量的垃圾空间。

    (2) 字符串使用就采用直接赋值,字符串的比较就用equals()方法。

扫描二维码关注公众号,回复: 1015185 查看本文章

  4. StringBuffer类--》由于String的不可更改特性,为了方便字符串的修改,java提供了StringBuffer类。

     ...在String中使用“+”来进行字符串连接,在StringBuffer类中需要用append()方法。

 2. Object类

   1. 在Java中,除了Object类,其他所有的类都是有继承关系的,默认会继承Object类,也就是说Object类可以接收所有类的对象。

   2. 在进行对象直接输出的时候,默认输出的是一个地址编码,String类输出的却是字符串内容,那是因为String类

 覆写了父类Object类的toString()方法。-----》由此我们得出,如果默认给出的toString()方法功能不足,就在需要的子类上覆写toString()方法。

  toString()的核心目的在于取得对象信息。

   3. String类对象的比较使用的是equals()方法,而此方法就是Object类的方法。

   4. 接收引用类型数据

     Object可以接收所有的引用数据类型--》类,接口,数组。

     Object真正实现了参数的统一。

  3.包装类

   1. 包装类就是将基本数据类型封装在类中。

    2. 将基本数据类型包装为一个类对象的本质就是使用Object类进行接收处理。

    3. java为了开发方便,专门提供了包装类的使用,而对于包装类的使用,提供了两种类型:

     (1) 对象型Object的直接子类):Boolean,Character(char);

      (2) 数值型Number的直接子类):Byte,Double,Short,Long,Integer(int),Float;

   4. 装箱和拆箱:(JDK1.5之后提供了自动拆装箱)

     如:Interger x=55;

           System.out.println(++x * 5);

   5. 对于Integer num=?赋值 在-128—127之间,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的integer值可以用==来进行判断,但区间之外的数据,都会在堆上产生,并不会复用已有对象,可使用equals来进行判断。            


     

   

猜你喜欢

转载自blog.csdn.net/eternal_01/article/details/79896977