JAVA进阶(八)包装类、StringBuffer与StringBuilder

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/83043544

前言

学习了String类之后,大家感觉到吃力了吗?撸起袖子加油干,我们继续包装类的学习

范例

1.包装类概述

java是面向对象的语言,但并不是 “纯粹的面向对象",我们之前经常写的基本数据类型就不是对象。但是我们在实际应用中经常要将基本数据类型转化为对象,以便于操作。为了解决这个问题,java设计了如下八个包装类,对应八个基本数据类型:

 Boolean,Byte,Short,Integer,Long,Float,Double,Character这八个代表其基本的数据类型boolean,byte,short,int,long,float,double,char

2.Integer类讲解(其他类基本用法一致,以Integer为例说明)

(1)常量值(主要是MAX_VALUE和MIN_VALUE的值)

(2)构造方法(主要有以下两种构造方法)

 

(3)常用方法

  •  public static Integer valueOf(int i):通过一个基本数据类型int构造一个包装类Integer对象,推荐该方法而不是构造方法。

注意:该方法将缓存储存过的-128~127之间的整数值,如创建多个值相同Integer对象,那么它们的变量引用将指向一处,提升性能

  • public int intValue():将包装类对象转化为基本数据类型int

 

 (4)自动装箱和拆箱

jdk1.5之后,为了解决基本数据类型与包装类的转换问题,提供了自动装箱和拆箱的功能。实际上这是编译器自动的帮你调用了相应的ValueOf(int a)方法以及intValue()方法进行了装箱和拆箱,例如:

Integer a = 3;//自动装箱
int b = a;//自动拆箱

3.探究String类是不可变字符串

有的人可能会有疑惑?之前说String是不可变字符序列,那么如下程序你怎么解释?

其实,原理是这样的。str指向了方法区的字符串常量“aaa”,当执行了str = "bbb"时,方法区创建了字符串常量“bbb”,且str的引用指向“bbb”的内存地址。换句话说,我们创建了新对象“bbb”,没有改变“aaa”!!!

通过源码分析一样可以得出结论(String类的值已被final关键字修饰,一旦赋初始值将不能被改变):

 4.StringBuffer与StringBuilder类

同String类为不可变字符序列不同的是,StringBuffer和StringBuilder类是可变的。通过源码分析一样可以得出结论:

探究如下程序的运行结果,请运用内存分析合理解释为什么?

StringBuffer与StringBuilder的区别:

  • StringBuffer线程安全,效率低
  • StringBuilder线程不安全,效率高(在不涉及线程安全的情况下,优先使用该类)

5.这里以StringBuilder为例,介绍其常用方法

  • public StringBuilder append(String str):用来进行字符串的拼接,类似于String的concat()以及字符串连接符“+”

 

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/83043544