Java笔记(二十一)……String与StringBuffer
String类
String类是一个特殊的类,叫做只读类,一旦创建了对象,便不可被改变,同样"abc"既为一个常量,也为一个对象,也是不可以改变的
String s1 = “abc”;
此语句只包含一个对象,即为“abc”
String s2 = new String(“abc”);
此语句包含两个对象,"abc"为一个对象,new的String为一个对象
所以s1与s2的地址值是不同的
String类常见操作
获取
int length():获取字符串的长度
char charAt(int index):获取字符串某个位置上的字符
根据字符获取该字符在字符串中的位置
int indexOf(int ch):返回的是ch在字符串中的第一次出现的位置
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置
int indexOf(String str):返回的是str在字符串中的第一次出现的位置
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置
int lastIndexOf(int ch):从末尾获取ch在字符串中最后一次出现的位置
判断
字符串中是否包含某一个字串
boolean contains(String str)
特殊之处:indexOf(str)可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中,所以也可以用于对指定字符串判断是否包含
字符串中是否有内容
boolean isEmpty():原理就是判断长度是否为0
字符串是否是以指定内容开头
boolean startWith(str)
字符串是否是以指定内容结尾
boolean endsWith(str)
判断字符串内容是否相同,复写了Object中的equals方法
boolean equals(str)
判断内容是否相同,同时忽略大小写
boolean equalsIgnoreCase()
转换
将字符数组转成字符串
构造函数:
String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串
静态方法
static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count)
static String valueOf(char[])
将字符串转成字符数组
char[] toCharArray()
将字节数组转成字符串
构造函数:
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串
将字符串转成字节数组
byte[] getBytes()
将基本数据类型转成字符串
static String valueOf(int)
static String valueOf(double)
//3+"";=====String.valueOf(3);
特殊:字符串和字节数组在转换过程中是可以指定编码表的
替换
String replace(oldchar,newchar);
切割
String[] split(regex);
子串,获取字符串中一部分
String subString(begin)
String subString(begin,end);
转换:去除空格,比较
将字符串转成大写或者小写
String toUpperCase();
String toLowerCase();
将字符串两端的多个空格去除
String trim();
对两个字符串进行自然顺序的比较
int compareTo(String str)
StringBuffer类
StringBuffer是一个容器
特点:
- 长度可以变化
- 可以自己操作多个数据类型
- 最终会通过toString方法变化成字符串
StringBuffer类常见操作
C create U update R read D delete
存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定index位置
删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置的字符
获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String subString(int start,int end)
修改
StringBuffer replace(start,end,string)
void setCharAt(int index,char ch)
反转
StringBuffer reverse()
将缓冲区中指定数据存储到指定字符数组中
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)
StringBuilder类
JDK1.5之后出现了StringBuilder类
StringBuffer与StringBuilder的区别
StringBuffer是线程同步的
StringBuilder是线程不同步的
由于
升级有三个因素
- 提高效率
- 简化书写
- 提高安全性
故
开发建议使用StringBuilder,因为StringBuilder效率较高
基本数据类型对象包装类
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| boolean | Boolean |
| float | Float |
| double | Double |
| char | Character |
基本数据类型对象包装类的最常见作用
就是用于基本数据类型和字符串类型之间的转换
基本数据类型转成字符串
基本数据类型+""
基本数据类型.toString(基本数据类型值)
如:Integer.toString(123);
字符串转成基本数据类型
xxx a = Xxx.parseXxx(String);
如:
静态方法:
int a = Integer.parseInt();
double d = Double.parseDouble();
boolean b = Boolean.parseBoolean(“true”);
对象调用:
Integer i = new Integer(“123”);
int num = i.intValue();
十进制转成其他进制:
Integer.toBinaryString():二进制
Integer.toHexString():十六进制
Integer.toOctalString():八进制
其他进制转十进制
Integer.parseInt(String,radix);
一个特殊的例子
1: class IntegerDemo
2: {
3: public static void main(String[] args)
4: {
5: //JDK1.5版本新特性
6:
7: Integer x = 4;//自动装箱,相当于new Integer(4)
8:
9: x = x + 2;//x进行自动拆箱,变成int之后与2相加,再将和装箱
10:
11: Integer i = null;//此语句编译可通过
12:
13: Integer m = 128;
14: Integer n = 128;
15:
16: //打印false,因为地址不同
17: System.out.println(m==n);
18:
19: Integer a = 127;
20: Integer b = 127;
21: /*
22: 打印true,因为a和b指向了同一个对象
23: 当数值在byte范围内时,对于新特性,如果该数值已存在,则不会再开辟空间
24: 热心观众@Tony_老七同学解释到,这是设计模式中的享元模式
25: 用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件
26: 受教了,非常感谢这位同学
27: */
28: System.out.println(a==b);
29: }
30: }
热心观众@Tony_老七同学解释到,这是设计模式中的享元模式,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件,受教了,非常感谢这位同学!
Java笔记(二十一)……String与StringBuffer的更多相关文章
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...
- 四:Java之字符串操作String、StringBuffer和StringBuilder
string是我们经经常使用到的一个类型,事实上有时候认为敲代码就是在重复的操作字符串,这是C的特点,在java中.jdk非常好的封装了关于字符串的操作.三个类String .StringBuffer ...
- java‘小秘密’系列(一)---String、StringBuffer、StringBuilder
java'小秘密'系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现b ...
- (C/C++学习笔记) 二十一. 异常处理
二十一. 异常处理 ● 异常的概念 程序的错误通常包括:语法错误.逻辑错误.运行异常. 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译.连接时由编译器指出. 逻辑错误是指程序能顺利运行 ...
- Java容器深入浅出之String、StringBuffer、StringBuilder
对字符串的花式处理一直是现代应用系统的主要操作之一,也是对Java基础知识考察的重要方面.事实上,Java字符串类的底层是通过数组来实现的.具体来说,String类是固定长度的数组,StringBuf ...
- java基础学习日志--String、StringBuffer方法案例
package StringDemo; import java.util.Arrays; /* * 常用String.StringBufer类的方法 */ public class Demo1 { p ...
- Java面试概念之String、StringBuffer与StringBuilder的区别
参考博客 http://www.cnblogs.com/lchzls/p/6711375.html java中String.StringBuffer.StringBuilder是Java编程中经常使用 ...
- Java基础学习笔记二十一 多线程
多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
随机推荐
- Extension method for type
扩展其实真的很简单 msdn是这样规定扩展方法的:"扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的. 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为 ...
- ORA-12012 error on auto execute of job 8887
*** ACTION NAME:(AUTO_SPACE_ADVISOR_JOB) -- ::58.046 *** MODULE NAME:(DBMS_SCHEDULER) -- ::58.046 ** ...
- Oracle wrap 测试的一些细节问题
今天在做 wrap 的测试实验的时候,出现一个很奇怪的现象,就是加密不成功.具体表现为:1.加密后的文件大小为0kb. 2.加密后的文件仍然可视. 具体测试步骤如下: D:\Just4work\som ...
- Substring的简单使用
string myString = "测试一下函数Substring()是怎么用的"; //Substring()在C#中有两个重载函数 //分别如下示例 //如果参数为一个长整数 ...
- C# - 接口,继承
接口 接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合.不能像实例化一个类那样实例化接口.接口不能包含实现其成员的任何代码,而只能定义成员本身.实现过程必须在实现接口的类中完成. ...
- 在MAC中安装Compass的方法 (转)
在MAC中通过gem命令安装compass时会出异常,原因是compass版本更新了,一些运行时所用到的依赖软件的版本没能得到更新,故而出现错误.例如,用以下命令安装compass: $ gem in ...
- Jquery 操作Html 控件 CheckBox、Radio、Select 控件
在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio.select,用 Jquery 库操作其他会方便很多,下面用Jq对这些控件的操作进行一 ...
- HDU 1059 Dividing(多重背包)
点我看题目 题意: 将大理石的重量分为六个等级,每个等级所在的数字代表这个等级的大理石的数量,如果是0说明这个重量的大理石没有.将其按重量分成两份,看能否分成. 思路 :一开始以为是简单的01背包,结 ...
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问 已重装office2 ...
- html5 spring demo
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...