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

本文介绍了Java中的String类,包括其不可变性、创建方式和常用方法。接着讲解了StringBuffer字符串缓冲区,强调其可变性、线程安全与高效操作。最后讨论了基本数据类型对象包装类的作用,如便于数据操作和类型转换,并列举了转换示例。

------- android培训java培训、期待与您交流! ----------

第一节--String

1、String类概述

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

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

String s1 = “abc”;

String s2 = new String(“abc”);

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

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);



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值