黑马程序员----------java基础API之String类的介绍和使用
来源:互联网 发布:java逆序输出节点 编辑:程序博客网 时间:2024/05/23 19:12
----------------------android培训、java培训、期待与您交流! ----------------------
因为在java中String类应用非常广泛,所以单独总结一下String类的常用方法以及注意事项。
字符串(String)
常用字符串的操作:
1、初始化一个新字符对象new String();
package HomeWork2;/* * 需求: * 键盘录入一个字符串,遍历该字符串 * */import java.util.Scanner;public class PrintString {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//从键盘录入一个字符串String str = sc.nextLine();//定义一个记录该字符串长度的变量int length = str.length();for (int i = 0; i < length; i++) {System.out.println(str.charAt(i));}}}
2、charAt(int index);返回指定索引处的char值;
3、compareTo(String a,String b);按活字典的顺序比较两个字符串;
package cn.itheima;/* * 按照字典顺序比较: * public int compareTo(String anotherString) * public int compareToIgnoreCase(String str) */public class StringDemo3 {public static void main(String[] args) {String s = "hello";String s1 = "abc";String s2 = "hello";String s3 = "kimi";String s4 = "Hello";System.out.println(s.compareTo(s1));System.out.println(s.compareTo(s2));System.out.println(s.compareTo(s3));System.out.println(s.compareTo(s4));System.out.println(s.compareToIgnoreCase(s4));}}
4、concat(String s);将指定字符串连接到此字符串结尾;
5、contains(char[] s);判断字符串中是否包含此字符串。
6、copyValueOf(char[] s);将字符数组转换成String 字符串;
7、endsWith(String s);判断此字符串是否以指定的后缀结束;
8、getBytes();将String字符串转换成字节(byte)数组;
9、indexOf(String s)返回此字符串在指定字符串中第一次出现的索引位置
10、isEmpty()判断该字符串是否是空值当且仅当length()为0时返回true
11、lastIndexOf()返回指定字符串在此字符串中最后一次出现的索引值
12、Length()返回字符串的长度
13、Replace(char oldChar,char newChar)返回一个新的字符串,
package cn.itheima;/* * 替换功能: * public String replace(char oldChar,char newChar) * public String replace(String oldString,String newString) */public class StringDemo {public static void main(String[] args) {String s = "helloworld";// public String replace(char oldChar,char newChar)String result = s.replace('o', 'a');System.out.println(result);// public String replace(String oldString,String newString)String result2 = s.replace("owo", "ak47");System.out.println(result2);}}
它是通过用newChar 替换此字符串中出现的所有oldChar。
14、split(String s)用于分隔字符串
15、startsWith(String s)判断此字符串是否以指定的前缀开始。
16、Substring(int beginIndex,int endIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
17、toCharArray()将此字符串转换为一个新的字符数组;
18、toLowerCase()将此字符串中所有的字符都转换为小写;
19、toUpperCase()将此字符串中所有的字符都转换为大写;
20、Trim()删除字符串中的前后空格;
package cn.itheima;/* * 场景: * 用户名:" ad min " * * 作业:假如我们要自己实现一个去除字符串前后空格的功能。怎么做。 */public class StringDemo2 { public static void main(String[] args) { // public String trim() String s = " a dmin "; String result = s.trim(); System.out.println("---" + s + "----"); System.out.println("---" + result + "----"); }}
package cn.itcast_01;/* * 描述一下: * 假如我一个字符串: * " a dmin " * * A:定义字符串 * B:定义一个起始索引,记录查找到第一个不是空格的位置。 * C:定义一个结束索引,记录查找到从后往前第一个不是空格的位置。 * D:截取。 */public class StringTest {public static void main(String[] args) {// 定义字符串String s = " a dmin ";String result = myTrim(s);System.out.println("---" + result + "---");}/* * 明确返回值类型:String 没有前后空格的 明确参数列表:String 带前后空格的 */public static String myTrim(String str) {// 定义一个起始索引,记录查找到第一个不是空格的位置。int start = 0;// 定义一个结束索引,记录查找到从后往前第一个不是空格的位置。int end = str.length() - 1;// 记录第一个不是空格的索引while (String.valueOf(str.charAt(start)).equals(" ") && start <= end) {start++;}// 记录最后一个不是空格的索引while (String.valueOf(str.charAt(end)).equals(" ") && start <= end) {end--;}// 截取String result = str.substring(start, end + 1);// 返回return result;}}
21、valueOf(char c)将char转换成字符串
StringBuffer :字符串缓冲区
CRUD:增删改查
Create read update delete
1、增加插入
StringBuffer insert(index,data):可以将数据插入到指定index位置
2、删除。
StringBuffer delete(start ,end):删除缓冲区中的数据,包含start,但不包含end;
StringBuffer deleteCharAt( int index):删除指定位置的字符;
3、修改:
StringBuffer replace(int start,int end);
Void setCharAt(int index,char chr);
4、查询获取:
Char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
Int length();
String subString(int start,int end);
5、反转:
StringBuffer reverse();
StringBuffer是线程同步
StringBuilder是线程不同步
升级三个因素:提高效率、简化书写、提高安全性
package cn.itcast_06;/* * 需求: * 我有一个字符串:"egabdcf" * 请想办法,我要最终看到一个字符串:"abcdefg" * * 分析: * A:定义一个字符串。 * B:把字符串转换成字符数组。 * C:对数组排序。模仿刚才的代码,把int改为char即可。 * D:把排序后的字符数组转成字符串。 */public class StringTest { public static void main(String[] args) {//定义一个字符串。String s = "egabdcf";//把字符串转换成字符数组。char[] chs = s.toCharArray();//对数组排序。模仿刚才的代码,把int改为char即可。for(int x=0; x<chs.length-1; x++){for(int y=0; y<chs.length-1-x; y++){if(chs[y]>chs[y+1]){char temp = chs[y];chs[y] = chs[y+1];chs[y+1] = temp;}}}//把排序后的字符数组转成字符串。String result = String.valueOf(chs);System.out.println(result);}}
package HomeWork;/* * A:模拟用户登录 * 分析: * 1.键盘录入账号密码 * 2.判断密码是否相同,如果相同,提示登录成功 * 如果不相同,提示再次输入,并提示剩余输入错与的次数 * 3.输入错误的次数为三次 * */public class TestUser {//成员变量private String userName = "Adim";private String code = "admin";//构造方法public TestUser(String userName, String code) {super();this.userName = userName;this.code = code;}public TestUser() {super();}//set\get方法public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}}
package HomeWork3;/* * 需求 :键盘录入一个字符串 * 统计字符串中大写字母,小写字母以及数字字符出现的次数 * */import java.util.Scanner;public class TestBigSmallCount {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.nextLine();tongJi(str);}public static void tongJi(String str) {//定义三个变量,分别表示记录大写字母,小写字母以及数字个数的变量//记录大写字母int bigCount = 0;//记录小写字母int smallCount = 0;//记录数字int number = 0;//定义一个变量,记录该字符串的长度int length = str.length();for (int i = 0; i < length; i++) {if(str.charAt(i)>='a' && str.charAt(i)<='z'){smallCount++;//判断如果是小写字母,则加一}else if(str.charAt(i)>='A' && str.charAt(i)<='Z'){ bigCount++;//判断是大写字母,则加一}else{number++;//剩下只有是数字,则加一}}//输出打印大写字母,小写字母以及数字的个数System.out.println("该字符串中包含大写字母"+bigCount+"个,"+"小写字母"+smallCount+"个"+"数字"+number+"个");}}
(3)面试题
A:字符串一旦被赋值,就不能被改变。
内容不能被改变,引用可以改变。
B:String s = new String("hello"); String s = "hello"的区别?
前者创建了两个对象。
后者创建了一个对象。
C:写出程序的结果
String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1==s2); //false System.out.println(s1.equals(s2)); //true String s3 = new String("hello"); String s4 = "hello"; System.out.println(s3==s4); //false System.out.println(s3.equals(s4)); //true String s5 = "hello"; String s6 = "hello"; System.out.println(s5==s6); //true System.out.println(s5.equals(s6)); //true
D:字符的比较
String s7 = "中国";
String s8 = "你好";
String s9 = "中国你好";
System.out.println(s9==s7+s8); //false 因为两个变量相加,首先会开辟空间,固然地址值是不可能相等的
System.out.println(s9=="中国"+"你好");//true 因为两个常量相加,会先相加,然后再找是否有该常量,如果有,就将这个有的常量地址值赋值,固然是相等的
- 黑马程序员----------java基础API之String类的介绍和使用
- 黑马程序员----JAVA基础之String类
- 黑马程序员----Java基础之String类
- 黑马程序员----Java基础之StringBuffer 与 String的区别(常用API)
- 【黑马程序员】---- Java 基础之 学习使用API文档
- 黑马程序员——JAVA基础之String和StringBuffer
- 黑马程序员--JAVA基础复习之String
- <<黑马程序员>>java基础之String字符串
- 黑马程序员--Java基础之API
- 黑马程序员-JAVA基础之常见API
- 黑马程序员 Java基础之API(一)
- 黑马程序员--------JAVA基础---集合和API
- 黑马程序员—17—java基础:有关API的使用学习笔记和心得体会
- 黑马程序员—Java API(String类)
- 黑马程序员 _ java基础_之String类
- 黑马程序员--Java基础之String类和基本数据类型对象包装类
- 黑马程序员————Java基础之String类和基本数据类型包装类
- 黑马程序员——java基础知识之String类和基础数据类型对象包装类
- In-Stream Big Data Processing译文:流式大数据处理
- ASCII字符表
- 写一个方法,用一个for循环打印九九乘法表
- 黑马程序员_C#中的一些基本操作
- 选择排序法
- 黑马程序员----------java基础API之String类的介绍和使用
- nyoj 643intersection set
- Question:58 (Shrink)
- 职业规划
- 线之绘艺术滤镜Redfield Fractalius2 v2.01汉化版支持CC
- 21天战拖记——Day15:填坑:行动、任务、项目的区别(2014-05-18)
- jstl标签详解
- 聊聊我的产后心得吧
- 用js模拟struts2的多action调用