Java学习笔记 字符串

String类

char类型只能表示单个字符,不能表示由多个字符连接而成的字符串。在定义字符型变量时,要以单引号表示,如’s’表示一个字符,而"s"则表示一个字符串,虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符。

声明字符串

在Java中字符串必须包含在一对双引号("")之内。用双引号包围的字符串不能作为其他数据类型来使用。

声明字符串变量语法格式:

String str = "cehncehn";

创建字符串

在Java中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。String类的常用构造方法如下:

  • String(char a[])

用一个字符数组a创建String对象。

char[] a = {'g','o','o','d'};
String s = new String(a);
//等价于
String s = new String("good");
  • String(char a[],int offset,int length)

除通过String类的构造方法来创建字符串变量外,还可以通过字符串常量的引用赋值给一个字符串变量。

String str1;
String str2;
str1 = "cehncehn"
str2 = "cehncehn"
//str1与str2具有相同的实体。

连接多个字符串、连接其他数据类型

"+"运算符可以实现连接多个字符串的功能。

Java中一句相连的字符串不能分开在两行中写。例如下列语句的写法就是错误的。

System.out.println("I like
                   java");

如果一个字符串太长,需要写在两行上,可以修改为如下:

System.out.println("I like"+
                  "Java");

字符串也可同其他基本数据类型进行连接,此时会自动调用toString()方法将这些数据直接转换成字符串。

public static void main(String[] args) {
		int booktime = 4;
		System.out.println("我每天花"+booktime+"小时看书");//我每天花4小时看书
	}

注意:

	public static void main(String[] args) {
		int a = 4;
		int b = 4;
		System.out.println("a+b=" + a + b);//a+b=44
		System.out.println(a + b + "a+b=");//8a+b=
	}

获取字符串信息

获取字符串长度
str.length();//返回的长度包括字符串中的空格
字符串查找
public static void main(String[] args) {
		String name = "cehncehn";
		System.out.println(name.indexOf("a")); //-1
		System.out.println(name.indexOf("e")); //1
		System.out.println(name.lastIndexOf("h")); //6
		System.out.println(name.lastIndexOf("")); // 8
		/*
		1.indexOf(String s)返回参数字符串s在指定字符串中首次出现的索引位置,如果没有检测到s,该方法返回-1
		2.lastIndexOf(String s)返回指定字符串最后一次出现的索引位置,如果没有检测到s,返回-1
		3.lastIndexOf(String s)参数是空字符串时,返回结果与length()方法结果相同
		 */
	}
获取指定索引位置的字符
public static void main(String[] args) {
		String name = "cehncehn";
		System.out.println(name.charAt(3)); //n
	}

字符串操作

获取子字符串
  • substring(int beginIndex)
public static void main(String[] args) {
		String name = "cehncehn";
		System.out.println(name.substring(3)); //ncehn
	}
//在字符串中,空格占用一个索引位置
  • substring(int beginIndex , int endIndex)
public static void main(String[] args) {
		String name = "cehncehn";
		System.out.println(name.substring(2,5)); //hnc
	}
去除空格
  • str.trim() 忽略前导空格和尾部空格
public static void main(String[] args) {
		String name = " cehn cehn ";
		System.out.println(name.trim()); //cehn cehn
	}
字符串替换
  • str.replace(char oldChar,char newChar)
  • replace()方法会将所有oldChar全部替换为newChar
  • 要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致,否则不能成功的替换。
判断字符串的开始与结尾
  • startsWith(String prefix)
  • endsWith(String suffix)
  • 返回值为Boolean类型
判断字符串是否相等

对字符串对象进行比较不能简单地使用比较运算符"==",因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回false。

public static void main(String[] args) {
		String s1 = new String("cehn");
		String s2 = new String("cehncehn");
		System.out.println(s1==s2);//false
	}

因此比较两个字符串是否相等使用equals()和equalsIgnoreCase()方法。

equals()区分大小写,equalsIgnoreCase()忽略大小写。

按字典顺序比较两个字符串

compareTo(),基于各个字符的Unicode值。位于参数字符串之前,则比较结果为一个负整数;位于参数字符串之后,则比较结果为一个正整数;相等返回0。

字母大小写转换
  • toLowerCase()
  • toUpperCase()
  • 数字或非字符不受影响
字符转分割
  • spilt()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。
str.spilt(String sign); //sign为分割字符串的分隔符,也可以使用正则表达式
//如果想定义多个分割符,可以使用符号“|”。例如“,|=”表示分割符分别为“,”和“=”

格式化字符串

str.format(String formate,Object…args)
  • 日期格式化
  • 时间格式化
  • 日期时间组合格式化
  • 常规类型格式化

正则表达式

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。

正则表达式

字符串生成器

创建成功的x字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用"+“可以达到符加新字符或字符串的目的,但”+"会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复对字符串进行修改,将极大增加系统开销。JDK1.5新增了可变的字符序列StringBuilder类,大大的提高了频繁增加字符串的效率

public static void main(String[] args) {
		String str = "";
		long startTime = System.currentTimeMillis();
		for(int i=0;i<10000;i++){
			str = str + i;
		}
		long endTime = System.currentTimeMillis();
		System.out.println(endTime-startTime);//280

		StringBuilder builder = new StringBuilder("");
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) {
			builder.append(i);
		}
		endTime = System.currentTimeMillis();
		System.out.println(endTime-startTime);//1
	}

如果在程序中频繁的符加字符串,建议使用StringBuilder。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值