您的位置:首页 > 职场人生

黑马程序员--String、StringBuffer、基本数据类型包装类

2014-11-29 15:19 501 查看
------- android培训java培训、期待与您交流! ----------

第一节--String类

1、String类概述

java对字符串用String类进行了描述,将字符串封装成对象,方便于对字符串这种常用的数据进行操作。字符串的特点:一旦被初始化就不能被改变,存储在方法区中的常量池。

字符串对象的创建有两种方式:

String s1 = “abc”;

String s2 = new String(“abc”);

s1和s2是两个不同的地址值,指向的是同一个字符串对象。

String s2 = new String(“abc”);创建了两个对象,“abc”存在于常量池,new String(“abc”);存在于堆内存,这两个对象是同一个字符串。

2、String类的方法

构造方法:

String s = new String( ); 创建一个空内容的字符串

String s1 = new String(“abc”);创建一个字符串对象“abc”,一般不使用这种方式定义字符串

String s2 = “abc”;创建一个字符串对象“abc”,常使用这种方式

new String(char [] ch);将字符数组ch转化成字符串

new String(char[] ch , offset, count);将字符数组的一部分转化成字符串

一般方法:

(1)、获取

获取字符串的长度:length();

获取指定位置的字符:char charAt(int index);

获取指定字符的位置(脚标),该字符不存在返回-1。

int indexOf (int ch);返回第一次找到该字符的脚标。

int indexOf(int ch , fromIndex);返回从指定位置开始第一次找到该字符的脚标。

int indexOf(String str);返回第一次找到该字符串的脚标。

int indexOf(String str , int fromIndex);返回从指定位置开始第一次找到该字符串的脚标。

从末尾开始向前面查找:

int lastIndexOf(int ch);

int lastIndexOf(int ch , fromIndex);

int lastIndexOf(String str );

int lastIndexOf(String str , fromIndex);

获取子串:

String substring(int start);从start位开始,到length-1位的子串

String substring(int start , int end);从start位开始到end-1位的子串,区间定义一般包含头不包含尾。

String substring(0 , str.length());获取整个字符串。

(2)、判断

判断字符串中是否包含某字符串

boolean contains(String substr);

判断字符串是否以指定字符串开头

boolean startsWith(String substr);

判断字符串是否以指定字符串结尾

boolean endsWith(String substr);

判断字符串是否相同

boolean equals(String str1);复写了Object类中的equals方法,判断字符串内容是否相同。

判断字符串内容是否相同,忽略大小写

boolean equalsIgnoreCase(String str2);

(3)、转换

将字符数组转成字符串。

构造函数: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)

String.valueOf(3);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

(4)、替换

String replace(oldchar,newchar);

(5)、切割

String[] split(regex);

(6)、子串。获取字符串中的一部分。

String substring(begin);

String substring(begin,end);

(7)、转换,去除空格,比较。

将字符串转成大写或则小写。

String toUpperCase();

String toLowerCase();

将字符串两端的多个空格去除。

String trim();

对两个字符串进行自然顺序的比较。

int compareTo(string);

字符串方法练习:

public class StringDemo {

public static void main(String[] args) {
//String str = "avcabdf";
// methodGet(str);
//		String str = "ArrayDemo.java";
//		methodIs(str);
//replace();
//spl();
String s1 = "abc";
String s2 = new String("abc");
sop("s1==s2:"+(s1==s2));
sop("s1.equals(s2):"+s1.equals(s2));
}

public static void methodGet(String str) {
// 获取长度
sop(str.length());
// 根据索引获取字符
sop(str.charAt(0));
// 根据字符(串)获取索引
sop(str.indexOf('c'));
sop(str.indexOf('a', 2));
}

public static void methodIs(String str) {
//判断字符串是否为空
sop(str.isEmpty());
//判断字符串是否以某字符串开始
sop(str.startsWith("Array"));
//结尾
sop(str.endsWith(".java"));
//包含,indexOf也可以判断是否包含(获取第一次出现的位置,返回-1则
//不包含,既可以判断,又可以获取位置)
sop(str.contains("Demo"));
//相等
sop(str.equals("arrayDemo.java"));
//忽略大小写的相等
sop(str.equalsIgnoreCase("ARRaYDemo.java"));
}
public static void replace(){
String str = "abcdefg";
String str1 = str.replace('a','b');
sop(str);
sop(str1);
}
public static void spl() {
String s = "abcd,efg,hijk";
String[]arr = s.split(",");
for(int x= 0;x < arr.length;x++){
sop("chs="+arr[x]);
}
String sub = s.substring(3,12);
sop("包含头不包含尾:"+sub);
}
public static void sop(Object obj) {
System.out.println(obj);
}
}


第二节--StringBuffer 字符串缓冲区

StringBuffer可以构造一个空的字符串缓冲区。

特点:

1、可以对字符串进行增删改查操作

2、是一种可变长度的容器

3、可以存储任意类型的数据

4、最终都要变成字符串

常用操作:

1、存储

StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。

StringBuffer insert(intoffset ,数据):可以将数据插入到指定offset位置。

2、删除

StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。

StringBuffer deleteCharAt(index):删除指定位置的字符。

清空缓冲区:对象.delete(0,对象.length());

3、获取

char charAt(int index);

int indexOf(String str);

int lastIndexOf(String str);

int length();

String substring(int start,int end);

4、修改

StringBuffer replace(int start,int end,String str);

void setCharAt(int index,char ch);

5、反转

StringBuffer reverse();

6、将缓冲区中指定数据存储到指定字符数组中

void getChars(int srcBegin, int srcEnd,char[] dst,int dstBegin)

/*
* StringBuffer是一种容器
* 1.长度可变
* 2.存储多种类型数据
* 主要操作:增删改查
*/
public class StringBufferDemo {

public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//在末尾添加数据
sb.append("abc").append(true).append(110);
sop(sb);
sb.insert(3, "ABC");
sop(sb);
}
public static void sop(Object obj){
System.out.println(obj);
}
}


在JDK1.5版本之后出现了StringBuilder,方法和StringBuffer相同,两者区别是:

StringBuffer是线程同步的。有锁。效率低

StringBuilder是线程不同步的。无锁。效率高

单线程使用StringBuilder。

多线程使用StringBuffer,或者使用StringBuilder自己加锁。

第二节--基本数据类型对象包装类

按照java面向对象的思想将基本数据类型封装成了对象,这样做的好处是:

1、可以通过对象的属性和方法操作基本数据

2、可以实现基本数据和字符串之间的转换

基本数据类型 对象包装类。

byte Byte

short short

int Integer

long Long

boolean Boolean

float Float

double Double

char Character

基本数据类型对象包装类的最常见作用,

就是用于基本数据类型和字符串类型之间做转换

基本数据类型转成字符串。

基本数据类型+""

基本数据类型.toString(基本数据类型值);

字符串转成基本数据类型。

xxx a = Xxx.parseXxx(String);

int a = Integer.parseInt("123");

double b = Double.parseDouble("12.23");

boolean b = Boolean.parseBoolean("true");

Integer i = new Integer("123");

int num = i.intValue();

十进制转成其他进制。

toBinaryString();

toHexString();

toOctalString();

其他进制转成十进制。

parseInt(string,radix);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐