一.
接下来我们把字符串当中涉及的方法,给大家介绍一下。首先介绍的是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)); } }