java之常用API(二)
来源:互联网 发布:虾米音乐vip 知乎 编辑:程序博客网 时间:2024/05/22 00:30
一,StringBuffer类
1,String和StringBuffer的区别:
- String是一个不可变的字符序列
- StringBuffer是一个可变的字符序列
2,StringBuffer,String和StringBuilder的区别:
StringBuffer和StringBuilder的区别
- StringBuffer是jdk1.0版本的,是线程安全的,效率低(因为要检验锁)
- StringBuilder是jdk1.5版本的,是线程不安全的,效率高
String和StringBuffer,StringBuilder的区别
- String是一个不可变的字符序列
- StringBuffer,StringBuilder是可变的字符序列
3,常用的方法
1,StringBuffer类,返回值都是StringBuffer.
- A:StringBuffer的构造方法:
- public StringBuffer():无参构造方法
- public StringBuffer(int capacity):指定容量的字符串缓冲区对象
- public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
B:StringBuffer的方法:
- public int capacity():返回当前容量。 理论值
- public int length():返回长度(字符数)。 实际值
C:添加元素的功能:
- public StringBuffer append(String str):
- public StringBuffer insert(int offset,String str):
D:删除字符的功能:
- public StringBuffer deleteCharAt(int index):
- public StringBuffer delete(int start,int end):
E:替换字符的功能:
- public StringBuffer replace(int start,int end,String str):
- public StringBuffer reverse()://字符串反转
以上功能方法有个特别要注意的事项:
就是以上方法都是有个共同的特点:底层源码均是return this;
/*以下的所有增删方法操作,所有的引用都是指向同一个地址值. (也就是说操作都是堆内存的同一个对象).因为底层是return this */ StringBuffer sb=new StringBuffer("我爱中国ilovechina"); StringBuffer sb2=sb.append("11"); StringBuffer sb3=sb.append("22"); StringBuffer sb4=sb.append("33"); StringBuffer sb5=sb2.insert(3, true); StringBuffer sb6=sb.delete(6, 8); /*输出都是一样,因为引用指向的都是同一个对象*/ System.out.println(sb); System.out.println(sb2); System.out.println(sb3); System.out.println(sb4); System.out.println(sb5);
4,String与StringBuffer的转换
StringBuffer转为String类型
- a:通过构造方法String(StringBuffer buffer)
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。 - b:通过toString()方法
- c:通过subString(0,length);
- a:通过构造方法String(StringBuffer buffer)
String 转为 StringBuffer 类
- a:通过构造方法StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 - b:通过append()方法
- a:通过构造方法StringBuffer(String str)
二,基本数据类的包装类
基本类型和包装类的对应
byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean
举个一个代表的例子,即可说明所有包装类的特性:
这些包装类就是将基本数据类型包装成对象,以及封装了许多功能方法.
int – >String
- a:和”“进行拼接;//常用
- b:public static String valueOf(int i);//常用
- c:int – Integer – String(Integer类的toString方法())
- d:public static String toString(int i)(Integer类的静态方法)
String –>int
- public static int parseInt(String s);
代码演示:
String str="11111"; Integer.parseInt(str);//字符串转int int i=3333; str=i+"";//int 转成字符串 str=String.valueOf(i);//int 转成字符串 System.out.println(str);
JDK5新特性之自动装箱和拆箱
- JDK5的新特性
- 自动装箱:把基本类型转换为包装类类型
- 自动拆箱:把包装类类型转换为基本类型
- 案例演示
- JDK5的新特性自动装箱和拆箱
Integer ii = new Integer(100);//通常的对象的创建步骤 Integer ii = 100;//有了自动装箱后,其实底层就是上一句的操作. ii += 200;//此处为自动拆箱,将Integer类对象的转换成了基本数据类型
- 注意事项
- 在使用时,Integer x = null;代码就会出现NullPointerException。
- 建议先判断是否为null,然后再使用。
以下的代码需特别比较,你会发现一个有趣的问题:
Integer i1 = new Integer(97); Integer i2 = new Integer(97); System.out.println(i1 == i2);//false System.out.println(i1.equals(i2));//true System.out.println("-----------"); Integer i3 = new Integer(197); Integer i4 = new Integer(197); System.out.println(i3 == i4);//false System.out.println(i3.equals(i4));//true System.out.println("-----------"); Integer i5 = 127; Integer i6 = 127; System.out.println(i5 == i6);//true,其实就是这里 System.out.println(i5.equals(i6));//true System.out.println("-----------"); Integer i7 = 128; Integer i8 = 128; System.out.println(i7 == i8);//false,还有这里 System.out.println(i7.equals(i8));//true
从上面的结果以及查看源码Integer类中的IntegerCache可以知道
自动装箱和拆箱的范围在 -128~ 127之间是不会创建对象的,而是从常量池中获取,如果超过了byte取值范围,就会再创建一个对象.
0 0
- java之常用API(二)
- Java之常用API
- Java常用API(二)
- Win32 API 常用函数之二
- Java常用API(二)String
- Java基础之数据类型(二)String,StringBulider,StringBuffer区别以及常用API
- Java基础-常用API之String类
- 黑马程序员Java之常用API
- Java之Javassistの常用API-yellowcong
- ElasticSearch-常用API(二)
- 常用API(二)
- 【OpenGL游戏开发之二】OpenGL常用API
- Android API指南(二)Intent之 常用Intent
- java架构搭建(二)--常用api封装
- hdfs 常用java API---代码篇(二)
- 黑马程序员 JAVA基础 ---API常用类(二)
- Java的常用包之二
- 第八天-Java常用类之二
- javax.mail发送邮件(带附件)
- http://yanwt.iteye.com/blog/1933932
- oracle database 11g安装linux系统参数要求
- extjs6.2中Ext.DomHelper类与Ext.XTemplate类初探
- 不同中奖概率的多奖包抽奖几种算法
- java之常用API(二)
- Oracle集群断电恢复实例(续)
- OpenAI:generative-models blogs
- C++ 解析flv文件
- C10K问题
- jQuery is not defined
- EOJ 1802 铁路调度
- 普通服务器与负载均衡服务器下的$_SERVER变量对比
- PopupWindow,DatePickerDialog,TimePickerDialog,ProgressDialog的使用