JAVA基础-字符串
一,字符串的声明和赋值:
String 变量名 = "ssssss"; 注意:声明的字符串必须经过初始化才能使用!
二,字符串的创建:
1.因为java中把字符串作为对象来管理,所以还是调用String类的构造方法: String s = new String;
2.用字符串常量创建字符串变量:String str1; str1 = " abcdef ";
三,连接字符串:
可以对多个字符串进行连接,也可以使字符串与其他类型数据进行连接。
用法:用 + 操作符来连接多个操作符并产生一个String对象。
public class Job { public static void main(String[] args) { String s1 = new String("hello"); String s2 = new String("word"); String s = s1 +" "+ s2; //连接 System.out.println(s); //输出结果是 hello word } }
有一个要注意的地方:
java中一句相连的字符串不能分开在两行中写,比如
System.out.println("I Like Java");
如果一个字符串太长的话应该写成
System.out.println("I Like" + "Java");
连接其他数据类型:
如果把字符串跟其他数据类型连接起来的话,会把其他数据类型的数据直接转换成字符串
public class Link { public static void main(String[] args) { int readtime = 4; float practice = 2.5f; System.out.println("我每天花"+ readtime + "小时看书;" + practice + "小时上机练习"); //输出结果是 我每天花4小时看书;2.5小时上机练习 } }
readtime和practice都不是字符串,但是把他们与字符串相连接时自动调用toString( )方法,将其转换成字符串形式,然后才参与连接。
注意:只要 + 操作符的一个操作数是字符串,编译器就会把另一个操作数转换成字符串形式!
五,获取字符串信息:
1.获取长度:使用String类的length( )方法可获取字符串对象的长度。
2.字符串查找:indexof( )方法返回搜索的字符串(或字符)首次出现的位置。lastindexof( )方法返回搜索的字符串(或字符)最后一次出现的位置。
public class Text { public static void main(String[] args) { String str = "We are student"; int size1 = str.length(); //用length()方法返回的字符串长度中包括空格 System.out.println(size1);//输出结果是 14 int size2 = str.indexOf("e"); //直接返回 e 第一次出现的位置 System.out.println(size2);//输出结果是 1 int size3 = str.indexOf("e",2); //从第3个字符开始索引,并返回 e 第一次出现的位置 System.out.println(size3);//输出结果是 5 int size4 = str.lastIndexOf("e"); //返回最后一次出现的 e 的位置 如果没找到要检索的参数,就返回 -1 System.out.println(size4);//输出结果是 11 int size5 = str.lastIndexOf(""); //注意 "" 是空字符串,里面没有空格 System.out.println(size5);//输出结果是 14 这条语句的结果是跟str.length()是一样的 int size6 = str.indexOf(""); System.out.println(size5);//输出结果是 0 } }
同样的,我们也可以获取指定位置的字符:用 字符串对象.charAt(int n) ,n为索引位置。
public class Ref { public static void main(String[] args) { String str = "Hello Word"; char mychar = str.charAt(6); System.out.println("字符串str中索引位置是5的字符为:"+mychar); //结果是 字符串str中索引位置是6的字符为:W } }
六,获取子字符串:
可以通过String类的 toString() 方法对字符串进行截取。
subString() 有两种不同的方法重载:1.subString(int beginIndex) 从begin位置到结尾都截取。 2.subString(int beginIndex,int endIndex) 只截取从begin位置到end位置的内容。
public class Subs { public static void main(String[] args) { String str = "Hello Word"; String x = str.substring(3); System.out.println(x);//输出结果:lo Word String y = str.substring(3, 7); //[3,7)的意思,不包括第7个字符 System.out.println(y);//输出结果:lo W } }
七,去除空格和替换:
1.去除空格:使用 trim() 方法来去除字符串前后的空格,注意:在字符串中空格占用一个索引位置。
2.字符串替换:使用 replace(oldchar,newchar)方法来用newchar替换掉字符串里全部的oldchar
3.字母大小写转换:用toUpperCase()转换成大写,用toLowerCase( )转换成小写; 注意:这两个方法对数字或者非字符(比如空格)没有影响。
public class NewStr { public static void main(String[] args) { // 为方便观察往下输出结果里的字符串前后空格用 _ 代替: 一个_对应一个空格 //空格去除 String str = " He llo WWW o rd "; //字符串前面2个空格,后面1个空格 System.out.println(str.length());//输出结果:18 System.out.println(str.trim());//输出结果:He llo WWW o rd 字符串前后空格都没有了 System.out.println(str.trim().length());//输出结果:15 //字符串的替换 String newstr1 = str.replace("W", "w");// 把W替换成w, 注意:是把全部 W 都换成 w System.out.println(newstr1);//输出结果: _ _He llo www o rd_ String newstr2 = str.replace("w", "W");//替换不了 大小写要注意, System.out.println(newstr2);//输出结果:_ _He llo WWW o rd_ //大小写转换 String newstr3 = str.toLowerCase(); //转为小写 System.out.println(newstr3);//输出结果:_ _he llo www o rd_ String newstr4 = str.toUpperCase(); //转为大写 System.out.println(newstr4);//输出结果:_ _HE LLO WWW O RD_ } }
八,正则表达式:
正则表达式是用来检查某一个字符串是否满足某一特定格式。
1.用方括号括起来若干个字符来表示一个元字符,该元字符可以代表方括号内的任何一个字符。比如:
[^456]:代表4,5,6之外的任何字符。 [a-r]:代表a-r中任何一个字母。 [a-zA-Z]:可表示任意一个英文字母。 [abc]4:代表a4,b4,c4。
[a-e[g-z]]:代表a-e或者g-z的任意一个字母(并运算)。 [a-o&&[def]]:代表字母d,e,f(交运算)。 [a-d&&[^bc]:代表字母a,d(差运算)。
2.可以用限定修饰符来限定元字符出现的次数。比如:
A*:0次或多次。 A?:0次或1次。 A+:1次或多次。 A{n}:正好出现n次。 A{n,}:至少出现n次。 A{n,m}:出现n~m次。
3.正则表达式中的元字符:
\\d:0~9任意一个数。 \\D:任何一个非数字字符。 \\s:空白字符。 \\S:非空白字符。 \\{Blank}:空格或制表符。
\\p{Lower}:小写字母a~z。 \\p{Upper}:大写字母A~Z。 \\w:可用作标识符的字符(不包括$)。 \\W:不可用作标识符的字符。
\\{ASCII}:ASCII字符。 \\{Alpha}:字母字符。 \\{Digit}:十进制数字0~9。 \\{Alnum}:数字或者字母字符。
.:任意一个字符。 注意:想在正则表达式中使用普通意义的点字符“ . ”,必须使用转义字符“ \ ”。
看一个例子:
public class Judge { public static void main(String[] args) { //定义要匹配 E_mail地址的正则表达式 String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; String str1 = "aaa@"; String str2 = "aaaaa"; String str3 = "1111@111ffyu.dfg.com"; if(str1.matches(regex)) { System.out.println(str1 + "是一个合法的E_mail地址"); } if(str2.matches(regex)) { System.out.println(str2 + "是一个合法的E_mail地址"); } if(str3.matches(regex)) { System.out.println(str3 + "是一个合法的E_mail地址"); } //运行后的结果是:1111@111ffyu.dfg.com是一个合法的E_mail地址 } }
正则表达式我也是刚接触,先到这里,后面再补。
九,字符串生成器(StringBuilder)
利用Stringbuilder类中的方法可以动态地执行添加,删除和插入等字符串的编辑操作。
1.添加内容:用 append(content)方法,参数content可以是任何内容。
2.插入内容:用insert(int offset, arg),offset是插入的位置,arg是插入的内容。
3.删除内容:用delete(int start, int end),从start位置到end-1位置的字符串会被删除。(如果start = end就不会发生任何事)
public class StrBuilder { public static void main(String[] args) { StringBuilder bf = new StringBuilder("hello hi momoda you"); bf.append(123456); //数字,字符串无论什么都可以 bf.append("abcd"); //直接追加再原字符串后面 System.out.println(bf.toString()); //输出结果:hello hi momoda you123456abcd bf.insert(5, "word"); System.out.println(bf.toString()); //输出结果:helloword hi momoda you123456abcd bf.delete(5,19); System.out.println(bf.toString()); //输出结果:hello you123456abcd } }
2019-03-2115:16:33 还没完,后续修补
- 《Redis设计与实现》读书笔记(三十五) ——Redis 二进制位数组及SWAR汉明重量算法
- Android TabWidget底部显示
- 《Redis设计与实现》读书笔记(三十六) ——Redis 慢查询日志实现
- 概率学中的随机变量与分布
- 神马?SQL竟然可以解脑筋急转弯的题目?
- android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- 基于SpringBoot的任务管理平台v1.0正式发布
- 大数据系统的Lambda架构
- AKKA中的事件流
- Java初涉感悟
- Android 6.0 Permission权限与安全机制
- SpringBoot工作机制
- Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用
- SpringBoot中的IoC
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 聊聊dubbo-go的tracingFilter
- JDBC - 第一天
- JavaSE - 排序算法
- JavaSE - 多态的本质
- Result Maps collection does not contain value for XXX 错误
- 当端口被占用如何kill占用端口的进程
- 将本地仓库同步到Github上的远程仓库
- 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱
- 关于void QProcess::start参数问题的解决
- Python格式化输出
- 多线程 - 生产者消费者模式
- TCP的三次握手和四次挥手
- Springboot异常处理
- Excel实战技巧84: 让形状生动起来
- 利用Python进行组合数计算