java之String

一、String类的特性

String对象是不可变的,字符串一旦创建,就不可以改变。


二、构造字符串

      字符串直接量

String a=new String("字符串直接量"); 

      字符数组

String b=new String(chars);

      字符串直接量赋值,java把字符串直接量看作String对象

String c="字符串直接量";

     注意:String变量存储的是String对象的引用


三、不可变字符串与限定字符串

String对象是不可变的。

a的String对象保存在堆内存中,具有唯一的内存空间

c的String对象为限定字符串保存在JVM字符串驻留池中,多个相同的String对象共用一个内存空间

例如:

a=="字符串直接量";  // fase

c=="字符串直接量";  //true


获得字符串的限定字符串的引用使用intern方法

String d=a.intern();

d==c;     //true


四、字符串替换和分隔

repalce(char old,char new)                     String

repalceFirst(String old,String new)        Strring  

repalceAll(String old,String new)           String

split(String delimiter)                               String[]             //分割字符串

split(String delimiter,int limit)                  String[]   

           

limit 参数控制模式应用的次数,因此影响所得数组的长度。

n > 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符

n <0,那么模式将被应用尽可能多的次数,而且数组可以是任何长度

n = 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃


例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:
RegexLimit结果
   :          2        { "boo", "and:foo" }
   :          5        { "boo", "and", "foo" }
   :         -2        { "boo", "and", "foo" }
  o          5        { "b", "", ":and:f", "", "" }
  o         -2        { "b", "", ":and:f", "", "" }
  o          0        { "b", "", ":and:f" }

Limit为-2,{ "b", "", ":and:f", "", "" } 第一个“”是因为两个o之间的空数据,第二个也是这个原因,最后一个是将"boo:and:foo"中最后空字符串也算进去的。


五、模式匹配、替换和分割

matchs(String regex)    与equals方法非常相似,判断子串是否匹配。

"javac".match("javac");

"javac".equals("javac");

结果都为true。

matchs更强大,可以匹配遵循一定规律的字符串。

比如:"javac myclass".match("javac.*");                  //子串.*的意思是字符串后面紧跟0个或多个任意字符

\\d表示单个数字字符,\\d{3}表示3个数字字符

方法repalceAll、repalceFirst、split可以和正则表达式结合一起使用。

详细参考java之正则表达式


六、常用方法

 

length()                           返回字符串长度

charAt(index)                返回指定位置的字符

concat()                          与+功能相同,都是连接字符串返回新的字符串,效率比+高一些

toUpperCae()                返回转成大写的字符串

toLowerCase()             返回转成小写的字符串

trim()                              返回去除前后两端空白字符的字符串

注意:""表示空字符串,并且"".length()为0       

equals(s1)                                         判断是否相等

equalsIgnoreCase(s1)                    判断是否相等不区分大小写

compareTo(s1)                                比较大小,若大于返回大于0的整数,若小于返回小于0的数,等于返回0

compareToIgnoreCase(s1)            比较大小,若大于返回大于0的整数,若小于返回小于0的数,等于返回0,不区分大小写

startsWith(prefix)                             字符串以指定的前缀开始,返回true

endsWith(suffix)                               字符串以指定的后缀结束,返回true

contains(s1)                                     s1字符串是否该串的子串

 

          警告:字符串不能像c++一样使用<,>,<=,>=来比较。

          注意:equals方法返回是boolean类型,compareTo方法返回int类型

substring(beginIndex)                            返回子串

substring(beginIndex,endIndex)           返回子串

indexOf(ch/s)                                          返回第一个出现ch/s的下标       ch/s意思是char或者String类型的变量

indexOf(ch/s,fromIndex)                        返回在fromIndex之后第一个出现ch/s的下标

 

lastIndexOf(ch/s)                                    返回最后一个出现ch/s的下标

LastIndexOf(ch/s,fromIndex)                 返回在fromIndex之前最后一个出现ch/s的下标

以上返回下标的函数,如果没有找到这返回-1。

七、字符串与数值的转换(数值型的封装类具有字符串转数值的函数)

Integer.parseInt(s)
Double.parseDouble(s) 
Byte.parseByte(s)
Long.parseLong(s)

八、数值或者字符转字符串

1)String  s=number+"";
2)对应的封装类的toString方法调用

          3)String.valueOf(value)方法

           

九、格式化字符串

         String.fomat(format,value0,...);

%d     布尔值

%c    字符

%d    十进制整数

%x    十六进制整数

%f    浮点数

%e   科学记数法形式的数

%s   字符串

 

         %5c            输出字符并在前面加四个空格

         %10.2f       输出浮点数条目的宽度至少为10,包括小数点和小数点后两位数字

         %10.2e      输出浮点数条目的宽度至少为10,包括小数点和小数点后两位数字和指数部分

         %12s         字符串宽度至少为12个字符,如果字符串长度少于12个字符,则前面补空格。如果多于12个字符,则自动增长

         %-5c         输出字符并在后面加四个空格,即左对齐

           例如:String c= String.fomat("c=%d",9);             //c为字符串c=9


十、字符串与字符数组

         String  a = new String(new char[]{'a','b','c'});

         char[]   c = a.toCharArray();


十一、StringBuilder与StringBuffer

      StringBuilder与StringBuffer是可变类。如果频繁修改内容,StringBuilder与StringBuffer比String的效率高

      StringBuffer是线程安全的

      StringBuilder与StringBuffer的常用方法append、delete、insert、replace、reverse、setCharAt、length、substring。

      详细查阅java之StringBuilder与StringBuffer

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java记录目录树_Java记录

java记录目录树https://openjdk.java.net/jeps/359概述了Java的新功能&#xff0c;该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新的“类别”&#xff1a;记录。 JEP中的示例内容如下&#xff1a; record Range( int lo, int hi) { public Range { if (lo >…

java集合——遗留的集合

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java集合——遗留的集合 的相关知识&#xff1b; 0.2&#xff09; for full source code , please visit https://github.com/pacosonTang/core-java-volume/blo…

oracle 扩展分区,Oracle 在线扩展分区

在对Oracle分区表操作是&#xff0c;当一个分区已经有了最大的分区&#xff0c;如何再次扩展分区呢&#xff1f;简单的方式是先删除最大分区&#xff0c;然后添加需要的分区在对Oracle分区表操作是&#xff0c;当一个分区已经有了最大的分区&#xff0c;如何再次扩展分区呢&…

java之StringBuider与StringBuffer

一、StringBuider与StringBuffer StringBuider与StringBuffer类比String更加灵活&#xff0c;只要使用字符串的地方&#xff0c;都可以使用StringBuider与StringBuffer类。三者的共同之处都是 final 类&#xff0c;不允许被继承&#xff0c;这主要是从性能和安全性上考虑的&…

织机原理_项目织机

织机原理为什么为什么&#xff1f; Java 8流背后的驱动程序之一是并发编程。 在流管道中&#xff0c;指定要完成的工作&#xff0c;然后任务将自动分配到可用处理器上&#xff1a; var result myData.parallelStream().map(someBusyOperation).reduce(someAssociativeBinOp)…

java集合——java.util.Properties类

【0】README 0.1&#xff09;以下全文转自 &#xff1a;  http://trans.blog.51cto.com/503170/110227/ 【1】认识properties文件 1、 properties文件是一个文本文件2、 properties文件的语法有两种&#xff0c;一种是注释&#xff0c;一种属性配置。 注 释&#xff1a;前…

电力系统潮流计算matlab程序,大神们,求个电力系统潮流计算的matlab程序。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼ninput(Please input n\n); %n表示系统的节点数d0input(Please input d0\n); %d0表示系统的误差minput(Please inpit m\n); %m表示系统的pq节点的个数p0ones(n-1,1);q0ones(m,1);d1;dpvones(n-1,1);dqvones(m,1);dpzeros(n-1,1);dq…

java之正则表达式

一、匹配字符串String类的matchs方法用的是正则表达式匹配&#xff0c;matchs方法与equals类似。"javac".matchs("javac");"javac".equals("javac");结果都为true。match方法更强大&#xff0c;不仅能匹配固定字符串&#xff0c;还能匹…

gradle配置_Gradle配置

gradle配置在这篇文章中&#xff0c;我们将介绍有关Gradle配置的综合文章。 1.技术 Gradle是用于自动任务管理的开源构建工具。 它基于Apache Ant&#xff0c;Apache Maven的概念。 Gradle是使用Groovy语言开发的。 Gradle是使用基于Groovy的领域特定语言&#xff08;DSL&…

removeAll throws java.lang.UnsupportedOperationException

【1】出现的问题&#xff1a; 如果该列表list 不支持 removeAll 方法的话&#xff0c; 就会抛出UnsupportedOperationException 【2】解决方法&#xff1a; List<String> list new ArrayList(Arrays.asList(new String[]{"C","B","D"})…

C#的float、double与decimal

float 单精度浮点 32bit&#xff0c;double 双精度浮点64bit&#xff0c;decimal是高精度 128bit&#xff0c;浮点型。 float double 是 基本类型&#xff08;primitive type&#xff09;&#xff0c;decimal不是。 float 有效数字7位&#xff0c;范围 1.5 10E−45 to 3.4 …

matlab支持 编程语言,用于数学的10个优秀编程语言

原标题&#xff1a;用于数学的10个优秀编程语言译文&#xff1a;http://www.codeceo.com/article/10-programming-language-for-math.html英文&#xff1a;10 Great Programming Languages for Mathematics翻译&#xff1a;码农网 – 小峰作为一个对数学和编程语言充满激情的人…

java锁_Java锁

java锁锁是一种线程同步机制&#xff0c;例如同步块。 锁是使用同步块在内部实现的。 因此&#xff0c;我们可以在Java中使用锁代替同步关键字。 锁比同步块更灵活&#xff0c;更复杂。 从Java 5版本开始&#xff0c;JDK提供了几种锁实现&#xff0c;例如ReentrantReadWriteLo…

java线程——阻塞队列

【0】README 0.1&#xff09;本文均转自两篇网络文章&#xff0c; 转载地址在转载处做了标记&#xff0c; 旨在理清 “阻塞队列”的相关知识 &#xff1b; 【1】转自&#xff1a; http://www.cnblogs.com/dolphin0520/p/3932906.html 1.1&#xff09;在前面我们接触的队列都是…

C#接口

接口是指定一组函数成员而不实现成员的引用类型&#xff0c;其他类型-类和接口可以实现接口。1. 接口是一个引用类型&#xff0c;通过接口可以实现多重继承。2. C#中接口的成员不能有new、public、protected、internal、private等修饰符。3. 接口中只能声明"抽象"成员…

消费者驱动的契约测试_告诉我们您想要什么,我们将做到:消费者驱动的合同测试消息传递...

消费者驱动的契约测试相当早以前&#xff0c;我们从REST&#xff08;ful&#xff09; Web API的角度讨论了消费者驱动的合同测试 &#xff0c;尤其是将其投射到Java&#xff08; JAX-RS 2.0规范&#xff09;的角度。 可以公平地说&#xff0c;至少在公共API方面&#xff0c; RE…

linux将屏幕输出到文件,Linux命令执行的屏幕输出内容重定向到日志文件

摘要: 作者&#xff1a;Syn良子 出处&#xff1a;http://www.cnblogs.com/cssdongl 转载请注明出处快速mark一下这个命令细节&#xff0c;免得以后使用又忘记了大家都知道可以用echo来输出内容到文件&#xff0c;比如 echo “hello,word”>> temp.txt那么我现在想把hadoo…

java线程——信号量(Semaphore)+障栅(CyclicBarrier)

【0】README 0.1&#xff09;以下内容转自网络&#xff0c;旨在理清 “java线程——信号量&#xff08;Semaphore&#xff09;障栅&#xff08;CyclicBarrier&#xff09;”的相关知识 【1】信号量 1.1&#xff09;信号量定义&#xff1a;从概念上讲&#xff0c;一个信号量管…

C#的foreach

一、foreach语句 C#的foreach 语句不会解析为IL 代码中的foreach 语句。 C#编译器会把foreach 语句转换为 IEnumerable 接口的方法和属性。 下面是一个简单的foreach 语句&#xff0c;它迭代数组中的所有元素&#xff0c;并逐个显示它们&#xff1a; foreach (A a in aas)…

linux中echo命令不输出换行,shell脚本echo输出不换行功能增强实例

这是第8/101个脚本There are as many ways to solve this quirky echo problem as there are pages in this book. One of my favorites is very succinct:function echon{echo "$*" | awk { printf "%s" $0 }}You may prefer to avoid the overhead incur…