String的特点以及String和StringBuilder常用的方法

1 篇文章 0 订阅
1 篇文章 0 订阅

String的特点:

1.String使用final修饰,不能被继承,在字符串的底部封装了字符数组以及针对字符数组的操作。

2.字符串对象一旦被创建内容将不会改变(这个是对重用对象来说的,后面将会说道原因),但是字符串的引用可以重新赋值。

3.java语言中的字符串使用Unicod编码方式,任何一个字符串对应两个字节的长度。

关于字符串对象一旦被创建就不能被改变的原因解释如下:

       由于字符串的重用的概率远远大于修改的概率,因此java中规定字符串对象一旦被创建,就不能改变。我们都知道基本数据类型存放在栈里面,引用数据类型存放在堆里面,当程序中多次出现相同的字符串对象的时候,为了降低内存的开销,java中提供一个常量池(用来存放字符串字面量),建立的引用指向同一个内存区,因此字符串对象一旦被创建,就不能改变。 如果使用new的话将会强制的创建一个对象。

String常用的方法:

1.获取字符串长度:

package Day01;
/**
 * int length()
 * 获取字符串长度
 * 无论是中文还是英文每个字符都是一个长度
 * @author 123
 *
 */
public class StringDemo1 {

	public static void main(String[] args) {
		String str="我爱学习";
		System.out.println(str.length()); 

	}

}

2.indexOf方法,该方法有几个重载方法:

package Day01;
/**
 * int indexOf(String str)
 * 该方法用来查找给定的字符串在当前字符串中的位置
 * 如果有返回下标,如果没有返回-1。
 * 该方法有几个重载方法
 * @author 123
 *
 */
public class StringDemo2 {

	public static void main(String[] args) {
		String str="thinking in java";
		int index=str.indexOf("in");
		System.out.println("index:"+index);
		/**
		 * 重载方法允许从指定的位置开始查找
		 */
		index=str.indexOf("in",3);
		System.out.println("index:"+index);
		/**
		 * 查找最后一次出现字符串的位置
		 */
		index=str.lastIndexOf("in");
		System.out.println("index:"+index);
	}

}

3.字符串的截取:

package Day01;
/**
 * String substring(int start,int end)
  * 截取字符串,从指定的位置(start)开始截取到指定的位置
 * end
 * java api 有一个特点,通常用两个数字表示范围,都是
  * 含头不含尾
 * @author 123
 *
 */
public class StringDemo3 {

	public static void main(String[] args) {
		String str="thinking in java";
		/**
		 * 截取字符串
		 */
		String str1=str.substring(0, 10);
		System.out.println("sub:"+str1);
		/**
		 * String substring(一个参数)
		 * 表示从这个数字开始截取到字符串的末尾
		 */
		String str2=str.substring(1);
		System.out.println("sub:"+str2);
		

	}

}

4.去除字符串两边的空白字符

package Day01;
/**
 * String trim()
 * 去除当前字符串两边的空白字符
 * @author 123
 *
 */
public class StringDemo4 {

	public static void main(String[] args) {
		String str="   helloworld       ";
		String trim=str.trim();
		System.out.println(str);
		System.out.println(trim);

	}

}

5.返回指定位置的字符:

package Day01;
/**
 * char charAt(int index)
 * 返回指定索引位置的字符
 * @author 123
 *
 */
public class StringDemo5 {

	public static void main(String[] args) {
		String str ="thinking in java";
		//查看第五个字符是什么?
		String str1=str.substring(4, 5);
		System.out.println(str1);
		char c=str.charAt(4);
		System.out.println(c);
		
		

	}

}

6.判断字符串是否是以指定的字符结尾或者开始:

package Day01;
/**
 * booelan startWith(String Str)
 * boolena endWith(String str)
 * 判断当前字符串是否是以指定的字符串开始或者结尾
 * @author 123
 *
 */
public class StringDemo6 {

	public static void main(String[] args) {
		String str="thinking in java";
		boolean start=str.startsWith("thi");
		System.out.println("strat:"+start);
		boolean end=str.endsWith("java1");
		System.out.println("end:"+end);
	}

}

7.字符串大小写的转化:

package Day01;
/**
 * String toUpperCase()
 * String toLowerCase()
 * 将当前字符串的英文转化为全部大写或者小写
 * 只支持英文
 * @author 123
 *
 */
public class StringDemo7 {
	public static void main(String[] args) {
		String str="我爱Java";
		String upper=str.toUpperCase();
		System.out.println("转化为大写:"+upper);
		String lower=str.toLowerCase();
		System.out.println("转化为小写:"+lower);
	}

}

StringBUilder的用法:由于java中规定了字符串对象一旦被创建就不能被改变,但是如果要改变的话,就需要重新创建新的字符串的对象,这样的话,内存中将会不断的开辟内存空间,与c语言不同的是,java中不在使用的对象有垃圾回收机制gc来回收,而c语言需要人为的开辟内存空间和释放内存空间,因此内存能够得到充分的利用,但java的不同,因此gc的速度跟不上cpu的速度。为此java中提供了对字符串操作的类StringBuilder。String中对字符串值的改变需要重新开辟内存空间,后者是在原来的基础上对字符串进行操作。下面将对StrinBuilder中对字符串操作的方法做出介绍具体的代码实现如下:

 

package Day01;
/**
 * StringBuiler提供了用于修改字符串内容的相关的方法
 * 其内部的维护是一个可变的字符数组,当数组满了之后会自动的扩容,所以修改的都是在当前对象的
 * 内部完成
 * 当频繁修改字符串内容时应该使用当前类来完成
 * @author 123
 *
 */
public class StringBuilderDemo1 {

	public static void main(String[] args) {
		String str="努力学习java";
		/*
		 * 为了提高字符串的拼接的效率,应该将
		 * 将String转化为StringBuilder
		 * 可以使用有参的构造方法
		 * StringBuider也有无参的构造方法,默认
		 * 表示空字符串
		 */
		StringBuilder builder=new StringBuilder(str);
		/*
		 * 从StringBuilder转化为String
		 * 使用StringBuilder的toString方法即可
		 */
		str=builder.toString();
		/*
		 * StringBuilder append(String str)
		 * 向字符串末尾指定的内容。
		 * 有若干重载方法,参数的类型不同,这些重载方法允许追
		 * 加其他的内容(先转化为字符串在追加)
		 */
		builder.append(",为了找个好工作");
		System.out.println(builder.toString());
		/*
		 * StringBuilder replace(int start,inr end,String Str)
		 * 将指定范围之内的字符串替换为指定的字符串
		 * 努力学习java,就是为了改变世界!
		 */
		builder.replace(9, 16, "就是为了改变世界!");
		System.out.println(builder.toString());
		/*
		 * StringBuilder delete(int start,int end)
		 * 将当前字符串的指定范围之内的内容删除
		 */
		builder.delete(0, 8);
		System.out.println(builder.toString());
		/*StringBuilder insert(int index,String str)
		 * 将给定的字符串插入到指定的位置,原位置以及后续字符串顺
		 * 序向后移动。
		 * 
		 * 改革,就是为了改变世界!
		 */
		builder.insert(0, "活着");
		System.out.println(builder.toString());
		/*
		 * StringBuilder reverse();
		 * 翻转字符串
		 */
		builder.reverse();
		System.out.println(builder.toString());
		 

	}

}

由于时间比较仓促,关于StringBuilder的方法不做过多的介绍,但是程序中有关于代码以及方法的注释。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值