String类是一个特殊的类,叫做只读类,一旦创建了对象,便不可被改变,同样"abc"既为一个常量,也为一个对象,也是不可以改变的
String s1 = “abc”;
此语句只包含一个对象,即为“abc”
String s2 = new String(“abc”);
此语句包含两个对象,"abc"为一个对象,new的String为一个对象
所以s1与s2的地址值是不同的
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是一个容器
特点:
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)
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_老七同学解释到,这是设计模式中的享元模式,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件,受教了,非常感谢这位同学!