java基础知识梳理(String_String与基本数据间的转换_string、stringbuffer、stringbuilder三者间的关系)

写在前面 程序的执行过程

一、String与基本数据间的转换

int -> String

int i=12345;
String s="";
第一种方法:s=i+"";
第二种方法:s=String.valueOf(i);
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?

String -> int

当String转换成基本数据类型时,需要使用到基本数据类型的封装类的parseXxx()方法,先转成封装类,再有封装类转换成基本数据类型,这里可由自动拆箱完成。

s="12345";
int i;
第一种方法:i=Integer.parseInt(s);//隐示(自动)拆箱
第二种方法:i=Integer.valueOf(s).intValue();//显示拆箱
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?

以下是答案:

第一种方法:s=i+"";   //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象

第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象

--------------------------------------------------------------------

1如何将字串 String 转换成整数 int?

A. 有两个方法:

1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);

2). int i = Integer.valueOf(my_str).intValue();

注: 字串转成 Double, Float, Long 的方法大同小异.

2 如何将整数 int 转换成字串 String ?

A. 有叁种方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

注: Double, Float, Long 转成字串的方法大同小异.

二、string、stringbuffer、stringbuilder三者间的关系

String 被定义为final class 所以是不可变的字符序列 ,多线程使用时是线程安全的。

Stringbuffer 是可修改可变的字符序列,所有修改方法上都加上了synchronized的,是单线程的,是线程安全的。

Stringbuilder 是可修改可变的字符序列,与Stringbuffer的唯一区别在于Stringbuilder是多线程的,是线程不安全的。但是效率高

1)由于String是不可变的,所以当就行字符串拼接时会产生额外的heap来存放拼接后的字符串,所以执行效率低,且浪费内存。

为了解决这一缺点,出现了stringbuffer。

2)buffer即缓冲的意思,stringbuffer是一个缓冲容器,最终会通过toString方法变成字符串。但是stringbuffer是单线程的效率低,为了提高效率出现了stringbulder

3)stringbulider 与Stringbuffer的唯一区别在于Stringbuilder是多线程的,是线程不安全的。但是效率高

为什么要用Stringbuffer呢?下面展示一个小例子

String s1 = "hello";

String S2 = "world";

//现在需要拼接s1、s2,

String s3 = s1+s2;

它的步骤是如下:

产生了一个新的String对象

而使用Stringbuffer可在原基础进行修改

上面的s3可这样写

Stringbuffer s3 = new Stringbuffer(s1)

s3.append(s2);

继续append

s3.append(s2).append("123");

因为stringbuffer是可变的,且提供了许多方法可直接修改

append() 在末尾追究字符串

insert(index,"xxx")在索引为index的后面插入字符串

delete(index,"XXX".length()) 删除字符串从下标为index至最后的字符

例子:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值