【Java高级特性】实用类(二)

发布于:2022-11-28 ⋅ 阅读:(297) ⋅ 点赞:(0)

1.String类

1.1 概述

1.Java中,字符串被作为String类型的对象来处理;

2.String类位于java.lang包中,默认情况下,该包自动导入所有程序;

3.创建String对象的方式如下:

String str="qwer";

String str=new String("asdf");

4.字符串是一个字符序列,每个字符都有自己的位置,字符串事实上也是一个字符数组,它的索引位置从0开始到(字符串长度-1)结束

1.2 String类常用方法

char charAt(int index) 返回指定索引处的char类型的值
int length() 返回字符串的长度
boolean equals(Object anObject) 将此字符串与指定的对象比较
boolean equalslgnoreCase(String anotherString) 将此String和另一个String比较,不考虑大小写
String toLowerCase() 将此String中的所有字符都转换成小写
String toUpCase() 将此String中的所有字符都转换成大写

代码举例

public static void main(String[] args) {
		// 创建String对象
		String str1 = new String("qwertyuiop");
		String str2 = "QWErtyuiop";

		// String类中包含很多方法以实现不同的功能
		// char charAt(int index):返回指定索引处的char值
		char ch1 = str1.charAt(0);
		System.out.println(ch1);//q

		// int length():返回此字符串的长度
		System.out.println(str2.length());//10

		// boolean equals(Object anObject) 将此字符串与指定的对象比较。
		// String类中重写了Object类中的equals()方法,比较的是两个字符串的内容是否相同
		boolean result = str1.equals(str2);
		System.out.println(result);//false

		// boolean equalslgnoreCase(String anotherString)
		// 将此String和另一个String比较,不考虑大小写
		System.out.println(str1.equalsIgnoreCase(str2));//true

		String str3 = "QWERT";
		String str4 = "asdfg";
		// String toLowerCase():将此String中的所有字符都转换成小写
		// String toUpCase():将此String中的所有字符都转换成大写
		String newStr3 = str3.toLowerCase();
		System.out.println(str3);//QWERT
		System.out.println(newStr3);//qwert

		System.out.println(str4.toUpperCase());//ASDFG
		System.out.println(str4);//asdfg
		// String类的对象调用方法时,都是值传递
	}

1.3 字符串连接

字符串的连接方法主要有两种:使用“+”连接;使用concat()方法

代码举例说明

public static void main(String[] args) {
		String str1="hello";
		String str2="world";
		System.out.println(str1+str2);//helloworld,这里的“+”表示连接符
		
		//String concat(String str):将指定字符串连接到此字符串的结尾
		String newString=str1.concat(str2);//将字符串str2连接到字符串str1的结尾
		System.out.println(newString);
		System.out.println(str1);
		System.out.println(str2);
		
		System.out.println(1+2+str1);//3hello
		System.out.println(1+str1+2);//1hello2
		System.out.println(str1+1+2);//hello12

	}

1.4 字符串常用提取方法

 代码举例:

public static void main(String[] args) {
		//字符串常用提取方法
		String str="qweratyuioperauip";
		
		//int indexOf(int ch):返回指定字符在此字符串第一次出现处的索引
		int index1=str.indexOf('a');
		System.out.println(index1);//4
		int index2=str.indexOf(97);//输入字符相对应的ASCII编码值也可以
		System.out.println(index2);//4
		//int indexOf(int ch,int fromIndex):返回指定字符串在此字符串第一次出现处的索引,从指定索引处开始搜索
		int index3=str.indexOf('a', 5);//从索引5处开始搜索字符'a'所在的索引
		System.out.println(index3);//13
		//int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引(指定字符串中第一个字符的下标)。
		int index4=str.indexOf("aty");
		System.out.println(index4);//4
		int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
		int index5=str.indexOf("aty", 5);
		System.out.println(index5);//-1,找不到就会返回一个负整数
		
		//int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现的索引
		int index6=str.lastIndexOf('a');
		System.out.println(index6);//13
		
		//String subString(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串
		//String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串
		//包含开始下标的字符,不包含结束下标的字符。
		String subString1=str.substring(5);
		System.out.println(str);//qweratyuioperauip
		System.out.println(subString1);//tyuioperauip
		
		String subString2=str.substring(5, 13);//[5,13)之间的字符
		System.out.println(str);//qweratyuioperauip
		System.out.println(subString2);//tyuioper
		
		//String trim():返回字符串的副本,忽略前导空白和尾部空白。
		String str2="    qwert    asdffg     ";
		String newStr2=str2.trim();
		System.out.println(str2);//    qwert    asdffg     
		System.out.println(newStr2);//qwert    asdffg
		
		String str3="    sdgfhfk   qweee    ";
		System.out.println(str3.trim());//sdgfhfk   qweee
	}

1.5 字符串常用拆分方法

String[ ]  split(String regex) 根据给定的正则表达式拆分此字符串
boolean endWith(String suffix) 判断此字符串是否以指定的后缀结束
boolean startWith(String perfix,int toffset) 测试此字符串从指定索引处开始的子字符串是否以指定的前缀开始
byte[ ] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte数组中
char[ ] toCharArray() 将此字符串转换成一个新的字符数组

代码举例:

public static void main(String[] args) {
		String song = "长亭外 古道边 芳草碧连天 晚风拂 柳笛声残 夕阳山外山";

		// String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
		String[] strs = song.split(" ");
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}

		String str = "qwertyuiop";
		// boolean endWith(String suffix):测试此字符串是否以指定的后缀结束。
		System.out.println(str.endsWith("iop"));// true
		// boolean startWith(String perfix,int toffset)
		// 测试此字符串从指定索引处开始的子字符串是否以指定的前缀开始
		System.out.println(str.startsWith("qwe", 1));// 判断从索引1开始的子字符串前缀是否是"qwe",false

		// byte[] getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte数组中
		byte[] bytes = str.getBytes();
		for (int i = 0; i < bytes.length; i++) {
			System.out.print(bytes[i] + " ");
		}
		System.out.println();
		// char[] toCharArray():将此字符串转换成一个新的字符数组
		char[] chs = str.toCharArray();
		for (int i = 0; i < chs.length; i++) {
			System.out.print(chs[i] + " ");
		}
	}

2.StringBuffer类

2.1 概述

1.StringBuffer类也是Java提供的用于处理字符串的一个类,它比String类更高效;

2.使用StringBuffer类对字符串进行连接操作,可以大大提高程序的执行效率。

2.2 如何使用StringBuffer类

StingBuffer类位于java.lang包中,是String类的增强类。

StringBuffer 对象名=new StringBuffer("字符串内容");

 2.3 常用方法

1)toString()方法:将StringBuffer类型的字符串转换为String类型的对象。

2)append(参数)方法:将参数连接到字符串后,可以将任何类型的值追加到字符串后。

3)insert(位置,参数)方法:将参数插入到字符串指定位置后并返回。参数值可以是包括String的任何类型。

代码举例说明:

public static void main(String[] args) {
		
		StringBuffer sb1=new StringBuffer("qwertyuiop");
		StringBuffer sb2=sb1.append("asdfg");//append()方法:将指定字符串"asdfg"追加到此字符串sb1末尾
		
		//StringBuffer类的对象调用方法时,传递的是地址,效率比String类高,线程安全
		System.out.println(sb1);//qwertyuiopasdfg
		System.out.println(sb2);//qwertyuiopasdfg
		
		StringBuffer sb3=sb1.delete(2, 5);//删除字符串sb1中[2,5)之间的字符
		System.out.println(sb3);//qwyuiopasdfg
		System.out.println(sb1);//qwyuiopasdfg
		
		sb1.insert(3, "opq");//在指定索引处插入字符串到此字符串中
		System.out.println(sb1);//qwyopquiopasdfg
		
		sb1.reverse();//反转字符串
		System.out.println(sb1);
	}

3.StringBuilder类

(1)java.lang.StringBuilder是JDK 1.5之后新增的类,它是一个可变的字符序列。

(2)此类提供一个与StringBuffer类兼容的API,被设计用作StringBuffer类的一个简易替换,在大多数实现中,它比StringBuffer执行要快。

(3)使用StringBuilder类处理字符串的方法与StringBuffer类基本一样。

4.String类、StringBuffer类和StringBuilder类

String:字符串常量

String是不可变的对象,在每次对String类型进行改变时,实际上是生成一个新的String对象,然后指向这个新String对象,所以经常改变内容的字符串最好不使用String类型,每次生成对象会对系统的性能产生影响。

StringBuffer:字符串变量

StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,都是操作StringBuffer对象本身,而不是生成新的对象。所以,在字符串对象经常改变的情况下,建议使用StringBuffer类

StringBuilder:字符串变量

JDK 1.5版本以后提供了StringBuilder类,它和StringBuffer类等价,区别在于StringBuffer类是线程安全的,StringBuilder类是单线程的,不提供同步,理论上效率更高

5.Date类和DateFormat类

Date类对象用来表示日期和时间。该类提供了一系列操作日期和时间各组成部分的方法。Date类中使用最多的是获取系统当前的日期和时间。

Date date = new Date();//使用系统当前时间创建日期对象。

 DateFormat类用来格式化日期和时间,它在java.text包下,是一个抽象类,提供了多种格式化和解析时间的方法。

格式化是将日期转换成文本,解析是将文本转换成日期格式。使用比较多的是它的子类SimpleDateFormat类。

SimpleDateFormat类是一个以语言环境有关的方式格式化和解析日期的具体类,如“yyyy-MM-dd HH:mm:ss”就是指定的一种日期和时间格式。

代码举例说明

//Date类和SimpleDateFormat类
	public static void main(String[] args) {
		// 创建Date类对象
		Date date=new Date();
		//System.out.println(date);
		
		//SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
		//它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  HH点mm分ss秒");
		//format(Date date):将给定的 Date 格式化为日期/时间字符串,返回的是一个字符串
		String str=sdf.format(date);
		System.out.println("现在是:"+str);
	}

6.Calendar类

Calendar类也是用来操作日期和时间的类它可以看作是Date类的一个增强版。Calendar类提供了一组方法,允许把一个以毫秒为单位的时间转换成年、月、日、小时、分、秒。

Calendar类是抽象类,可以通过静态方法getInstance()获得Calendar类的对象其实这个获得的对象是它的子类的对象

Calendar类提供一些方法和静态字段来操作日历,例如:

int get(int field):返回给定日历字段的值。

YEAR:指示年。

MONTH:指示月。

DAY_OF_MONTH:指示一个月中的某天。

DAY_OF_WEEK:指示一个星期中的某天。

代码举例说明

public static void main(String[] args) {
		//Calendar类是抽象类,不能实例化,可以通过Calendar的一个引用对象来调用方法
		//static getInstance():创建一个Calendar引用
		Calendar cal=Calendar.getInstance();
		//int get(int field):返回给定日历字段的值。
		//获取年
		int year=cal.get(Calendar.YEAR);
		System.out.println(year);
		//获取月
		int month=cal.get(Calendar.MONTH);//MONTH月份字段的值从0开始到11
		System.out.println(month+1);
		//获取日
		int day=cal.get(Calendar.DAY_OF_MONTH);
		System.out.println(day);
		//获取时分秒
		int hour=cal.get(Calendar.HOUR_OF_DAY);
		System.out.println(hour);
		int minute=cal.get(Calendar.MINUTE);
		System.out.println(minute);
		int second=cal.get(Calendar.SECOND);
		System.out.println(second);
		
		//获取星期
		int week=cal.get(Calendar.DAY_OF_WEEK);//DAY_OF_WEEK字段以星期天作为第一天,返回的是[1,7]之间星期对应的整数
		System.out.println(week);
		String[] weeks={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
		System.out.println(weeks[week-1]);
		System.out.println("现在是:"+year+"年"+(month+1)+"月"+day+"日,"+weeks[week-1]+" "+hour+"点"+minute+"分"+second+"秒");
		
	}

在JDK 1.1之间,Date类允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的API不易于实现国际化。从JDK 1.1开始,使用Calendar类实现日期和时间字段之间的转化,使用DataFormat类来格式化和解析日期字符串。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到