Java基础-->API常见对象

本文深入探讨了Java中字符串的特性和使用方法,包括String类的定义、字符串池的概念及字符串不可变性的原因。此外,还介绍了StringBuilder与StringBuffer在字符串构建上的应用差异,并详细列举了基本数据类型及其对应的包装类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一节   String 类

一、定义:

1、从概念上讲,java字符串就是Unicode字符序列。每个用双引号括起来的字符串都是String类的一个实例。

Java字符串由char序列组成,也就是说,String的最小单位是char类型的字符。字符数据类型是一个采用UTF-16的编码表示Unicode代码点的代码单元。

3、StringPool(字符串池):

在java的内存分配中,存在着一个方法区,这里有一个常量池,是存放那些常量等不变的值,StringPool即字符串池就是存在于这里,它是一个存放字符串的公共存储池。字符变量指向存储池中的相应位置。如果是通过复制一个字符串变量,原始的字符串和复制的字符串将共享这个相同的字符串。

二、特点:

1、String是一种特殊的数据类型,可创建对象。

2、通过String创建的对象分别可存在于字符串池(StringPool)和堆内存中

3、String是一个final的类型,即不可被继承修改,一经初始化就终生不可改变。(要改变也是改变的引用变量)

4、StringPool中的数据可共享,即两个引用变量可指向同一个字符串池中的字符串

5、Java中的任何对象都可写成字符串的形式。

注:字符串不可变的原因:

a. 可以想得出,每种固定的东西是不会改变的,1就是1,也就是说你若想改变,只得改变这个引用变量所指向的地址。

b. 编译器可以让字符串共享数据。所以不必改变字符串,直接改变变量即可。

c. java的开发者认为共享数据的效率要远远胜于提取、拼接字符串的效率。程序中对字符串的修改操作很少,更多的是对字符串进行比较。

(例外:将源自于文件或键盘的单个字符或较短的字符串汇集成字符串。具体在下面会说到。)


三、字符串方法:

String类适用于描述字符串事物,它提供了多个方法对字符串进行操作,下面给大家介绍几个比较常用的关于字符串的方法;如果还想了解更多关于字符串的方法,可以查看字符串API。

 

四、构造字符串

在这里以StringBuilder为例,在穿插着说一下StringBuffer。

1、概述:

       上面也提到了:按键或者来自文件中的单词。采用字符串连接的方式达到此目的的效率是十分低的,每次连接字符串,都会构建一个新的String对象,既降低了效率,又占用大量的空间。通过使用StringBuilder类局可以避免这个问题。另外,在构建字符串时就调用toString方法,可以得到一个String对象。

StringBuilder作为一个容器,是被final修饰的,它是字符串缓冲区,可以对这个“容器”进行“CURD”操作,即存储(creat),修改(update),获取(read),删除(delete)。

这里需要说明的一点是:StringBuilder是在JDK1.5之后才出来的,相对于StringBuffer的效率要高。因为可以不用每次判断锁。虽然不安全,但是效率更高,建议开发使用StringBuilder。StringBuilder和StringBuffer的对比:

----StringBuilder:是线程不同步的,相对效率更高,但是不安全

----StringBuffer:  是线程同步的,相对效率较低,但安全。

2、构建格式:

                    StringBuilder bul = new StringBuilder();

3、特点:

第一、StringBuilder的长度是可变的,也可以通过length()的方法求当前对象的长度。

第二、可以直接操作多个数据类型。可将如int、double、char、boolean等类型的数据作为字符串相连接存入容器中。

第三、最终会通过toString方法变为字符串。


4、StringBuilder的操作方法:

 


第一节   包装类

一、概述:

1、有时候,需要将int这样的基本类型转换为对象,以便可以使用一些方法。所有的基本类型都有一个相对应的类。这些类就称之为包装类。

2、基本数据类型对应的包装类:

      基本数据类型              引用数据类型(包装类)

           byte                               Byte

           short                             Short

           int                                  Integeter

           long                              Long

           float                              Float

           double                         Double           

           boolean                       Boolean

           char                              Character

二、常见操作:

再来个包装类的面试题(装箱与拆箱):

自动封箱:其中Integer x = 4;就是自动封箱的过程,即Integer x = new Integer(4);

自动拆箱:其中x+2就是进行了自动拆箱的过程,将x变为int类型,再和2进行加法运算,在拆箱的时候,要先进行 x.intValue()的判断,是否x为null,不可为null,否则编译失败

自动封箱:再将求的和进行封装,赋值给x


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值