Java-初步认识-常用对象API(String类-常见功能-获取,转换,判断,比较

一.

接下来我们把字符串当中涉及的方法,给大家介绍一下。首先介绍的是stringMethodDemo_1()方法。

准备用面向对象的思考方式,把这个方法给思考一下。

看到上图中的字符串,应该具备什么样的功能会比较合适呢?

一个字符串中有几个字符?它有几个字符它自己最清楚,它应该具备这样的功能来告诉它有多少个字符。

这个字符串第一个字符是什么?第二个字符是什么?根据位置获取字符。

这个字符串,如果它有b这个字符,b这个字符在哪个位置上?

如果现在不想要abcd,只想要abcd中的一部分。

以上都应该是字符串应该具备的功能。因为字符串最熟悉它里面有什么东西,我们想要操作字符串,先要找到对象。找其方法就可以了。它的方法很多,我们准备按照分类的方式来介绍。

1. 获取

什么是获取呢?在对字符串的操作中,我想拿字符串里面的东西,想获取字符串的一部分信息。

1.1 获取字符串中字符的个数(长度)

要是真有这功能,返回值是什么?这功能有没有参数?字符串里面本身具备的功能就是获取它的长度,我还要将字符串传递进来,再使用它的方法,(我想知道人的年龄,还要把人传递进来再获取,有劲吗?)。采用的是this,哪个字符串调用的length方法,它就返回哪个字符串的长度。

我们分析完我们认为有效地功能,可以到API中来查询。

直接在方法摘要中,查看返回值类型,(在开始将函数的时候)。函数有两点要明确,结果和未知内容。对象分析也这么去考虑问题,很方便,字符串如果有这个功能,它应该是什么样的结果?有什么样的参数?

先从方法摘要中找寻返回值类型为int 的方法。hashcode方法是object类中的方法,写在这里意味着什么?是覆写了(在方法摘要中是覆写)。如果不是覆写,则是写在继承后面。hashcode代表着字符串对象有着自己的哈希地址的算法。

从方法摘要中继续寻找,找到了int length()。返回值类型为int类型,参数列表为空参,符合我们需要的方法要求(返回长度值肯定是int类型,对象调用自己的方法,不需要输入参数,无参数列表),为了防止下面还有类似的类型和无参数列表的函数(不同的函数名,功能不一样),可以直接点击length函数名,观看它的解释API解释。

为什么要强调字符串的长度,数组也有长度,那是数组的属性。而字符串这里是方法。

先将常用的,对象本身自带的方法介绍完,再去介绍特殊的。

1.2 根据位置获取字符

这个函数名暂时不清楚,但是有返回值为char类型,同时也有参数列表int index(表明想要得到那个索引位置上的元素),现在函数的三要素已经得到了两个。直接去方法摘要中寻找对应的方法。

1.3 根据一个字符获取其在字符串中的位置

返回值类型是int类型,参数列表是char,接着在String类的方法摘要中寻找,

暂时没找到,找到一个int ch。Java中的方法的变量名取的都非常的具备阅读性,ch是char的简写,代表着字符。索引字符的位置,应该是char类型,怎么参数类型是int呢?是说传递参数为单引号'a'能索引,传递int 97也能索引。这个设置更加的深入,它支持阿斯科码数值,往里面传递a也是97。
如果字符串里面有两个a怎么办?所以应该是获取其在字符串中第一次出现的位置。

indexof是重点方法,下图中的第一个方法是从0角标开始索引,第二个方法是可以指定从哪儿开始索引。

其实这都不是索引了,更确切的说是查找。

现在想知道字符串中'bc'的位置,这也可以搜索字符串。

同时方法摘要中还有四个方法,看它们的函数名也可以猜出它们的功能。

二.

现在演示一下上面所讲述过的方法,

字符串里面的字符是有角标的,数字符个数的时候从1数,查字符角标的时候从0查。

字符的角标是固定的,不是说从右往左数,就发生了变化。

这里报错的信息就不是数组角标越界了,而是字符串角标越界。

没有该字符,索引结果就用-1表示。

index这个功能一个是索引位置,另一个是判断存在。

空格是个字符,它有自己对应的阿斯科码值。


刚才讲述的是获取字符和位置,现在接着往下说,

1.4 获取字符串中一部分字符串,也叫子串

这个功能如果存在的话,返回的是字符串类型,参数列表中有两个参数,开始位和结束位。String (int int)

这方法肯定不是静态的,它是在访问对象,而不是类。

subString中sub是子的意思。还有一个方法也是这样的,如下入所示,从开始位到最右边截取整个字符串。

DOS结果显示不太正常,看一下API的介绍。也就是包含beginIndex,不包含endIndex。


package stringd.emo;
/**
 * 
 * @author 高小硕
 * 2.转换
 * 3.判断
 */
public class StringMethodDemo {

	public static void main(String[] args) {
		/*
		 * 按照面向对象的思想对字符串进行功能分类
		 * "abcd"
		 * 1.获取;
		 * 1.1获取字符串中字符的个数(长度)
		 * 	int length();
		 * 1.2 根据位置获取字符。
		 * 		char charAt (int index)
		 * 1.3 根据字符获取在字符串中的位置
		 * 	int indexof(int ch)
		 * 	//从指定位置进行ch的查找第一次出现位置
		 * 	int indexof(int ch,frontIndex)
		 * 	int indexof(String str)
		 * 	int indexof(String str,int fromIndex)
		 * 
		 * 
		 * 	 int lastIndexof(int ch)
		 * 	//从指定位置进行ch的查找第一次出现位置
		 * 	int lastIndexof(int ch,frontIndex)
		 * 	int lastIndexof(String str)
		 * 	int lastIndexof(String str,int fromIndex)
		 * 1.4获取字符串中的一部分字符串。也叫子串。
		 * 	String substring(int beginIndex)
		 * 	String substring(int beginIndex,int endIndex)/包含beginIndex,不包含endIndex
		 * 	
		 * 2.转换
		 *	2.1将字符串变成字符串数组(字符串的切割)
		 *	String[] split(String regex)://涉及到正则表达式
		 *	2.2将字符串变成字符数组。
		 *	char[] toCharArray();
		 *	2.3将字符串变成字节数组。
		 *		byte[] getBytes()
		 *	2.4将字符串中的字母转成大小写。
		 *		String toUpperCase():大写
		 *		Srting toLowerCase():小写
		 *	2.5	将字符串中的内容进行替换
		 *		String replace(char oldch;char newcah);
		 *	2.6将字符串两端的空格字符去除。
		 *	String trim();
		 *	2.7 将字符串进行连接、
		 *	String concat(string);
		 *3.判断
		 *	3.1两个字符串内容是否相同啊?
		 *	boolean equals(object obj);
		 *  boolean equalsIgnoreCase(String str);忽略大小写比较字符串
		 *	3.2字符串中是否包含指定字符串?
		 *		boolean contains(String str);
		 *	3.3字符串是否以指定字符串开头。是否以指定字符串结尾
		 *		boolean startsWith(string);
		 *		boolean endWith(string);
		 *4.比较,按照字典的顺序
		 *	compareTo()
		 */
		
//		stringMethodDemo_1();
//		stringMethodDemo_2();
//		stringMethodDemo_3();
		stringMethodDemo_4();

		
		//这两个都行。第一个专业
//		System.out.println(String.valueOf(4)+1);
//		System.out.println(""+4+1);

	}
	
//比较
	public static void stringMethodDemo_4() {
		System.out.println("abc".compareTo("Af"));//32
		System.out.println("abc".compareTo("aqz"));//-15

		
	}

	public static void stringMethodDemo_3() {
		
		String s = "abc";
		System.out.println(s.equals("ABC".toLowerCase()));
		System.out.println(s.equalsIgnoreCase("ABC"));
		System.out.println(s.contains("cc"));
		
		String str = "ArrayDemo.java";
		
		System.out.println(str.startsWith("Array"));//true

		System.out.println(str.endsWith(".java"));//true

		System.out.println(str.contains("Demo"));//true

	}

	public static void stringMethodDemo_2() {
		String s = "张三,李四,王五";
		String[] arr  = s.split(",");
//		String[] arr  = s.split(".");//点是正则规则,需要转义
		
		String s1 = "张三.李四.王五";

		String[] arr1  = s1.split("\\.");

		
		for (int i = 0; i < arr1.length; i++) {
			System.out.println(arr1[i]);
		}
		
		char[] chs = s.toCharArray();//Converts this string to a new character array.
		//打散
		for (int i = 0; i < chs.length; i++) {
			System.out.println(chs[i]);
		}
		
		//将字符打成字节
		String s2 = "ab你";
		byte[] bytes = s2.getBytes();
		for (int i = 0; i < bytes.length; i++) {
			System.out.println(bytes[i]);
		}
		
		System.out.println("aa".toUpperCase());//AA
//		System.out.println("Abc".replace('q','z'));
		String s3 = "java";
		String s4 = s3.replace('j', 'q');
		System.out.println(s3==s4);//false
		
		//将字符串两端的空格去除。
		System.out.println("="+"   ab  c  ".trim()+"=");
		
	}

	public static void stringMethodDemo_1() {
		String s="abcdea";
		System.out.println("length:"+s.length());//6
		System.out.println("char:"+s.charAt(2));//c
		System.out.println("index:"+s.indexOf('a',1));//5
		//-1 我们可根据-1,来判断该字符或者字符串是否存在。
		System.out.println("index:"+s.indexOf('k'));//-1.

		System.out.println("lastIndex:"+s.lastIndexOf("a"));//5
		
		String s1 = "     ";
		System.out.println(s1.length());//空格是占字符的
		
		System.out.println(s.substring(0, 4));
		
		
	}

}

猜你喜欢

转载自blog.csdn.net/fighting_future/article/details/80464610