您的位置:首页 > 其它

String类__【概述】【String类的常见操作】

2014-06-12 20:29 337 查看
---------------------------------------- android培训java培训、期待与您交流!
------------------------------------

String类概念

用于描述字符串;字符串是String类类型的变量,而类类型的变量一定是对象;

1.所以每个字符串都是一个特殊的对象

2.字符串一旦初始化就不可以被改变;是被final修饰的常量

3.在Object中的equals方法比较的是对象的内存地址,即哈希值的方法体中是"==";

在String类中复写了equals方法,首先比较的是两个字符串的内存地址是否相同,如果相同返回值等于true,

如果内存地址值不同则比较字符串的内容,如果内容相同,则返回true;



创建字符串:

String str =new String("abc");

使用new创建字符串对象的步骤如果,每调用一次就会创建一个新的对象。

1.首先在堆(不是常量池)中创建一个包含指定内容的字符串对象,并将字符串的引用指向该对象

2.去字符串常量池中查看,是否有包含该内容的对象。

3.若有,则将new出来的字符串对象与字符串常量池中的内容相同的对象联系起来

4.若没有,则在字符串常量池中再创建一个包含该内容的字符串对象,并将堆中的对象与字符串常量池中新创建出来的对象联系起来。

字符串特殊的内存机制带来的好处,即是:只比较两个字符串联系的常量池中对性爱那个是否为同一即可,不论字符串大小,比较速度一样。

String str ="abc";

1.先在栈中创建一个字符串引用对象str;

2.然后查找堆中常量池里有没有存放"abc";

3.如果没有,则将"abc"存放进常量池,并令str指向"abc"

4.如果已经有"abc",则直接令str指向"abc";



String类的方法操作

获取

1.1--获得字符串的包含的字符数,即字符串的长度

int length();获取长度

1.2--根据位置获取位置上某个字符

char charAt(int index)

1.3--根据字符获取该字符在字符串中的位置

int indexOf(int ch);返回ch在字符串中第一次出现的位置

int indexOf(int ch,int formIndex);从fromIndex指定位置开始,获取ch字符在字符串中第一次出现的位置

int indexOf(String str)返回str在字符串中第一次出现的位置

int indexOf(String str,int formIndex)从fromIndex指定位置开始,获取str字符串中第一次出现的位置

int lastIndexOf(int ch);返回ch在字符串最后一次出现的位置。



判断

2.1--字符串中是否包含某一个字串

boolean contains(str);

特殊之处indexOf(str)可以索引str第一次出现的位置,如果返回-1,表示str不存在该字符串中 ;可以用于对指定判断是否包含

if (str.indexOf("aa")!= -1);既可以判断是否存在,又可以获取出现的位置

2.2--字符串是否为空

boolean isEmpty();原理就是判断长度是否为0

2.3--字符串是否以指定内容开头 boolea startsWith(str);

2.4--字符串是否以指定内容结尾 boolean endsWith(str);

2.5--判断字符串内容是否否相同 boolean equals(str); 复写了Object类中的equals方法

2.6--判断内容是否相同(忽略大小写)boolean equalsIgnoreCase();



③转换

3.1将字符数组转换成字符串

构造函数:要注意new

new String (char[]);分配一个新的String,使其包含当前字符数组的字符序列

new String(char[], offset,count) ;将字符数组中的一部分转成字符串。offset起点;count数量

静态方法:

static String copyValueOf(char[]);

static String copyValueOf(char[] data, int offset ; int count);

static String valueOf(char[]);

3.3将字节数组转成字符串。

String(byte[])

String(byte[],offset,count):将字节数组中的一部分转成字符串。

3.2将字符串转成字符数组。char[] toCharArray():

3.4将字符串转成字节数组。byte[] getBytes():

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

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

⑦转换 去除空格,比较。

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

String toUpperCase();

String toLowerCase();

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

String trim();

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

int compareTo(string);

package string;

public class StringMethodDemo {
	public static void main(String[] args) {
		// method_get();
		// method_is();
		// method_trans();
		// method_replace();
		// method_split();
		// method_sub();
		method7();
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}

	// 获取
	public static void method_get() {
		String str = "abcdefgk";
		sop(str.length());
		sop(str.charAt(2));
		sop(str.indexOf('k'));
		// 从下标2开始,获取'd'第一次出现的位置, 如果没有这个字符返回-1
		sop(str.indexOf('d', 2));
		sop(str.indexOf("bc"));
		sop(str.indexOf("bc", 1));
		sop(str.lastIndexOf('g', 6));// 从后往前找,
		sop(str.lastIndexOf("g"));

	}

	// 判断
	private static void method_is() {
		String str = "StringDemo.java";
		String s = "stringDemo.java";
		sop(str.contains("String"));// 区分大小写
		sop(str.indexOf("String"));// 0
		sop(str.isEmpty());// 判断是否为空,默认等于true,为空,有数据则为false;
		sop(str.endsWith(".java"));// 判断后缀名
		sop(str.startsWith("String"));// 判断前缀名
		sop(str.equals(s));// 判断两个字符串的内容
		sop(str.equalsIgnoreCase(s));// 不区分大小写,所以为true

	}

	// 转换
	private static void method_trans() {
		char[] arr = { 'a', 'h', 'k', 'g', 'c', 't', 'y', 'r' };
		// 创建一个匿名的String对象
		sop(new String(arr));// 将字符转为字符串
		sop(new String(arr, 0, arr.length));// 从0开始,到最后一个
		// 静态方法
		sop(String.copyValueOf(arr));
		sop(String.copyValueOf(arr, 0, arr.length));// 结果同上
		sop(String.valueOf(arr));// 将字符数组转换为字符串

		String s = "Hello Java";
		char[] ch = s.toCharArray();// 将字符串转换为字符数组
		for (int i = 0; i < ch.length; i++) {
			sop("ch:" + ch[i]);
		}
	}

	// 替换
	public static void method_replace() {
		String s = "Hello World!";
		String s1 = s.replace("World", "Java");
		sop(s);
		sop(s1);
	}

	// 切割
	public static void method_split() {
		String s = "xiaojie,shuaige,jiejie";
		String[] arr = s.split("\\,");
		for (int i = 0; i < arr.length; i++) {
			sop(arr[i]);
		}
	}

	// 截取
	private static void method_sub() {
		String str = "asdfghjkl";
		sop(str.substring(0));
		sop(str.substring(3, str.length()));

	}

	// 大小写转换
	public static void method7() {
		String s = "             Hello Java!        ";
		sop(s.toLowerCase());// 转为小写
		sop(s.toUpperCase());// 转为大写
		sop(s.trim());// 去掉空格

		String s1 = "abc";// 字典偏移值
		String s2 = "abhjlj";// 返回int 0等于相等,正数大于,负数小于
		sop(s1.compareTo(s2));

	}

}




---------------------------------------- android培训java培训、期待与您交流!
------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: