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



String类概述

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

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

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

String s1 = "abc";  在内存中有一个对象

String s3 = new String("abc");在内存中有两个对象;new是一个对象(堆),"abc"是一个对象(堆中的常量池)

 s1 = "bbb";/改变s1的指向/;aaa不会变成”bbb“;而是s1的从"aaa"指向了”bbb“;这也是字符串对象的特殊之处

s2 = "abc",s1和s2指向了常量池中同一个字符串对象

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

在String类中复写了equals方法,用于判断字符串是否相同


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

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

示例

class StringMethodDemo
{
	public static void main(String[] args) 
	{
		//method_get();
		//method_is();
		//method_trans();
		//method_replace();
		//method_split();
		//method_sub();
		method_7();
	}
	public static void sop(Object obj)//多态性	也可是(String str)
	{
		System.out.println(obj);//将输出封装,简化书写
	}
	
	public static void method_get()	//获取
	{
		String str = "abcdabfgk";
		sop(str.length());			//字符串长度
		sop(str.charAt(3));			//下标为3的字符
		sop(str.indexOf('b'));		//'b'的角标位置
		sop(str.indexOf('b',3));	//从下标3开始第一次出现'b'的位置
		sop(str.indexOf("ab"));		//
		sop(str.indexOf("ab",3));	//
		sop(str.lastIndexOf('a'));	//'a'最后一次出现的位置
	}
	
	public static void method_is()	//判断
	{
		String str="StringDemo.java";
		String s="stringDemo.java";
		sop(str.contains("string"));//是否存在false
		sop(str.indexOf("String"));	//是否存在及存在的位置0
		sop(str.isEmpty());			//是否为空false
		sop(str.startsWith("Str"));	//是否Str开头true
		sop(str.endsWith(".java"));	//是否是.java文件reue
		sop(str.equals(s));			//是否相同,区分大小写 false
		sop(str.equalsIgnoreCase(s));//不区分大小写 true
	}

	public static void method_trans()//转换
	{
		char[] arr= {'H','e','l','l','o','W','o','r','l','d','!'};	//将字符数组转换成字符串
		//构造函数	需要分配一个新的String	一定要注意new
		sop(new String(arr));	//将字符数组转换成字符串
		sop(new String(arr,5,6));//从角标5开始,将数组后面的6个元素转换成字符串
		//静态方法
		sop(String.copyValueOf(arr));//同上
		sop(String.copyValueOf(arr,5,5));//同上
		sop(String.valueOf(arr));//有无copy的区别,能从指定位置,指定个数
								//static String valueOf();将基本数据类型转换成字符串
		String s = "Hello Java!";									//将字符串转换成字符数组
		char[] ch = s.toCharArray();
		for (int x=0 ;x<ch.length ;x++ )
		{
			sop("ch="+ch[x]);
		}
	}

	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 = "zhangsan,lisi,wangwu";
		String[] arr = s.split(",");	//根据,号切割

		for (int x=0; x<arr.length ;x++ )
		{
			sop(arr[x]);
		}
	}

	public static void method_sub()//子串,获取字符串中的一部分
	{
		String s = "abcdefg";
		sop(s.substring(3));	//从指定位置到结束,如果不存在会发生字符串角标越界异常
		sop(s.substring(3,6));	//包含头 不包含尾
	}

	public static void method_7()
	{
		String s = "    Hello Java !   ";
		sop(s.toUpperCase());	//转换大写
		sop(s.toLowerCase());	//转换小写
		sop(s.trim());			//去除两端空格
		
		String s1 = "abc";		//字典偏移值
		String s2 = "a1d";		//等于返回0,正大于 负小于
		sop(s1.compareTo(s2));	//对两个字符串进行自然顺序的比较
	}
}




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值