------------恢复内容开始------------

------------恢复内容开始------------

------------恢复内容开始------------

------------恢复内容开始------------

JAVA作业—字符串操作

一,不同字符串的比较

字符串操作 数据类型 可变性 内存分配 线程安全性 性能
C/C++中的char* 字符指针 可变 系统处理 未知 高效
C/C++中的String封装类 一个类 可变 手动释放 并发的读操作是线程答安全的。 较char指针低效
Java中的String 类 char[]的形式保存的字符串 不可变 系统处理 安全 对String类型的字符床做修改操作都是相当于重新创建对象。StringBuilder > StringBuffer > String。
Java中的StringBuilder类 char[]的形式保存的字符串 可变 系统处理 不安全 操作都是对同一个对象做操作,StringBuilder因为没有使用使用synchronized关键字修饰,所以性能更高。StringBuilder > StringBuffer > String。
Java中的StringBuffer类 char[]的形式保存的字符串 可变 系统处理 安全 操作都是对同一个对象做操作,StringBuffer中的方法大部分都使用synchronized关键字修饰。StringBuilder > StringBuffer > String。

二,字符串操作性能比较

测试代码

`package Stringtest;
/**
* @author 李玉
* */
public class Test {
private static final int N=100000;
public static void main(String[] args) {
StringTest();
StringBufferTest();
StringBuilderTest();
} public static void StringTest(){
long begintime=System.currentTimeMillis();
String str="";
for (int i=0;i<N;i++){
str+=i;
}
long endtime =System.currentTimeMillis();
System.out.println("StringTime is:"+(endtime-begintime)+"ms");
} public static void StringBufferTest(){
long begintime = System.currentTimeMillis();
StringBuffer str= new StringBuffer();
for(int i = 0; i< N; i++){
str.append(i);
}
long endTime = System.currentTimeMillis();
System.out.println("StringBufferTime is: "+ (endTime - begintime)+"ms");
}
public static void StringBuilderTest(){
long beginTime = System.currentTimeMillis();
StringBuilder str = new StringBuilder();
for(int i = 0; i< N; i++){
str.append(i);
} long endTime = System.currentTimeMillis();
System.out.println("StringBuilderTime is:"+ (endTime - beginTime)+"ms");
}
}`

运行结果

三,正则表达式匹配

测试代码

package Stringtest;import com.sun.org.apache.xerces.internal.impl.xpath.regex.Match;

import java.util.regex.Matcher;import java.util.regex.Pattern;
public class RegularExpressionTest {
public static void main(String[] args) {
//邮政编码
String postcode="^(?:13\\d|15\\d|18\\d)\\d{5}(\\d{3}|\\*{3})$";
//手机号
String phone="^[1-9]\\d{5}$";
//区号-座机号码
String areacode= "\\d{3}-\\d{8}|\\d{4}-\\d{7}";
//测试用例
String pc="236000";
String p="18226290524";
String ac="010-123456789";
System.out.println(match(postcode,pc));
System.out.println(match(phone,pc));
System.out.println(match(areacode,pc));
System.out.println(match(postcode,p));
System.out.println(match(phone,p));
System.out.println(match(areacode,p));
System.out.println(match(postcode,ac));
System.out.println(match(phone,ac));
System.out.println(match(areacode,ac));
} static boolean match(String str,String Ex){
Pattern p=Pattern.compile(str);
Matcher m=p.matcher(Ex);
while (m.find()){
return true;
}
return false; }
}

运行结果

四,个人小结

java中操作字符串的类,我知道的有三个类,分别是String,StringBuffer和StringBuilder.这三个类都是以char[]的形式保存的字符串,但是String类型的字符串是不可变的,对String类型的字符床做修改操作都是相当于重新创建对象.而对StringBuffer和StringBuilder进行增删操作都是对同一个对象做操作.StringBuffer中的方法大部分都使用synchronized关键字修饰,所以StringBuffer是线程安全的,StringBuilder中的方法则没有,线程不安全,但是StringBuilder因为没有使用使用synchronized关键字修饰,所以性能更高,在单线程环境下我会选择使用StringBuilder,多线程环境下使用StringBuffer.如果生命的这个字符串几乎不做修改操作,那么我就直接使用String,因为不调用new关键字声明String类型的变量的话它不会在堆内存中创建对象,直接指向String的常量池,并且可以复用.效率更高。

资料来源

java中操作字符串都有哪些类,他们之间有什么区别?

JAVA正则表达式

------------恢复内容结束------------

------------恢复内容结束------------

------------恢复内容结束------------

------------恢复内容结束------------

JAVA作业—字符串操作的更多相关文章

  1. Java的字符串操作

    目录 Java的字符串操作 一.不同字符串操作的对比 1.1 C++中const修饰指针 const在星号的左边,是被指向的常量不可变 const在星号的右边,是指针的指向不可变 二. Java字符串 ...

  2. Java的字符串操作一些简单的思考

    Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...

  3. java类库字符串操作

    在java类库中,java给我们提供了字符串几个特别的操作,分别是String,Stringbuffer,Stringbuilder等.下面就对这几个类做一个简单的介绍.首先,我们先了解一下Strin ...

  4. Java Script 字符串操作

    JS中常用几种字符串操作: big() small() bold() fontcolor() fontsize() italics() strike() link() charAt() charCod ...

  5. Java String 字符串操作小结

    // 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...

  6. 使用javap分析Java的字符串操作

    我们看这样一行简单的字符串赋值操作的Java代码. String a = "i042416"; 使用命令行将包含了这行代码的Java类反编译查看其字节码: javap -v con ...

  7. 四:Java之字符串操作String、StringBuffer和StringBuilder

    string是我们经经常使用到的一个类型,事实上有时候认为敲代码就是在重复的操作字符串,这是C的特点,在java中.jdk非常好的封装了关于字符串的操作.三个类String .StringBuffer ...

  8. Java基础(一)-- Java对字符串操作大全

    一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:二类是在程序中会被改变长度的可变字符串.J ...

  9. android TextView字体设置最少占多少行. 及其 Java String 字符串操作 . .

    ①  字体设置: 修改代码 :  GridViewActivity.java priceTv为 TextView priceTv.setMaxLines(3); //当多与7个字fu的时候 , 其余字 ...

随机推荐

  1. Day02_IP地址详解&进制转换&DOS基本命令与批处理

    学于千峰教育开源课程 感谢 千峰教育官网 b站在线视频 IP地址详解 一.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的局域网的设 ...

  2. PHP 5 echo 和 print 语句

    PHP 5 echo 和 print 语句 在 PHP 中有两个基本的输出方式: echo 和 print. 本章节中我们会详细讨论两个语句的用法,并在实例中演示如何使用 echo 和 print. ...

  3. PHP tan() 函数

    实例 返回不同数的正切: <?php高佣联盟 www.cgewang.comecho(tan(M_PI_4) . "<br>");echo(tan(0.50) . ...

  4. PHP time_sleep_until() 函数

    实例 延迟执行当前脚本直到 10 秒: <?php// wake up ten seconds from nowtime_sleep_until(time()+10);?>高佣联盟 www ...

  5. 牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式

    LINK:卷积 思考的时候 非常的片面 导致这道题没有推出来. 虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG. 容易推出 \(G(x)=\frac{F(x)}{1- ...

  6. BSOJ 5553 wangyurzee的树 prufer序列 容斥

    BSOJ我也不知道在哪. 容易想到容斥. 考虑不合法的方案 想到强制某个点的度数为限制即可. 这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了. 坑点 当强制两个相同的点时 方案 ...

  7. Hadoop学习之常用输入输出格式总结

    目的 总结一下常用的输入输出格式. 输入格式 Hadoop可以处理很多不同种类的输入格式,从一般的文本文件到数据库. 开局一张UML类图,涵盖常用InputFormat类的继承关系与各自的重要方法(已 ...

  8. 错误记录:MIME type may not contain reserved characters

    最近遇到个问题,随手记录一下! 新做了一个项目,要通过HTTP请求发送ZIP文件到OSS平台,但上传过程中,总是出现下面错误提示: 初步判定,应该是包冲突原因!于是,分析MIME-TYPE获取源码发现 ...

  9. 最优化算法【牛顿法、拟牛顿法、BFGS算法】

    一.牛顿法 对于优化函数\(f(x)\),在\(x_0\)处泰勒展开, \[f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+o(\Delta x) \] 去其线性部分,忽略高阶无穷小,令\ ...

  10. VS c# 操作 Microsoft Project mpp 文件 并遍历边关系

    网上找到资料提供了遍历.mpp文件中任务的功能: http://blog.csdn.net/gxf36/article/details/5253792 ======================== ...