`
2277259257
  • 浏览: 515414 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java------String

    博客分类:
  • java
 
阅读更多

char[]就是一串字符,Java 中可以作为字符串

字符串对象的创建

String str="abc";

String s=new String("abc");

用字符数组创建字符串:

new String(char[] value) ====== String.copyValueOf(char[] value) ----创建一个char[]内容的字符串
new String(char[] value, int 起始下标, int 长度)======String.copyValueOf(char[] value, int 起始下标, int 长度) ----创建一个char[]内容的子内容字符串

用字符串创建新的字符串(相当于字符串复制)

new String(String original) 获取一个original的副本(相当于复制)

用动态字符串StringBuffer 创建字符串

new String(StringBuffer buffer) ----创建一个包含字符串缓冲区参数中当前包含的字符序列,对StringBuffer的后续修改不会影响所建的String

 

 

字符串方法

获取指定下标的 字符

char [] c =str1.charAt(int index)

获取指定字符的下标

int index = str1.indexOf(Object o) -------------------------------------第一次出现处参数的下标
int index = str1.lastIndexOf(Object o) --------------------------------最后一次出现处参数的下标
int index = str1.indexOf(Object o ,指定查询开始的下标) --------从指定位置开始第一次出现处参数的下标
int index = str1.lastIndexOf(Object o ,指定查询开始的下标) ---从指定位置开始最后一次出现处参数的下标

获取字符串长度

int index = str1.length()

复制字符串替换字符数组

str1.getChars(复制开始下标,复制结束下标,char[]目标数组,被替换字符的开始下标) -----截取String的字符替换char[]中的字符

替换字符串内容
str1.replace(char old, char new) -------------------------------------将字符串的指定字符用新字符替换
str1.replace(CharSequence "zc",CharSequence "abc") ----将str1中的"zc"用"abc"替换(注意:zc整体,若没有的话不替换)

str1.replaceAll(String regex, String 指定字符串) -------使用 指定字符串 替换str1中所有正则匹配的字符串

str1.replaceFirst(String regex, String 指定字符串) ----使用 指定字符串 替换str1中正则匹配的第一个字符串

字符串截取

str1.substring(int beginIndex) ------------------------------------------截取指定下标后的字符串

str1.substring(int beginIndex, int endIndex) ------------------------截取下标之间的字符串

字符串-----〉字符数组

char [] c = str1.toCharArray() 

字符串<------字符数组

String str = String.copyValueOf(char[] data)

String str = String.copyValueOf(char[] data ,子数组初始偏移量 ,子数组长度)

对象---------〉字符串

String str = String .valueOf(Object obj) =======String str = obj .toString();

Long-------->字符串

String str = String .valueOf(Long o) =======String str = Long .toString(Long o);

字符串-----〉集合

CharSequence subSequence(int beginIndex, int endIndex) ---截取下标之间的字符序列(类似字符list集合)

去掉字符串前后的空格

String str = str1.trim()

字符串拼接

str1.concat(str2)====== str1 + str2

判断字符串开始、结束标识

Boolean b = str1.endsWith(String suffix) ------判断str1是否是以指定的字符串suffix结束
Boolean b = str1.startsWith(String prefix) ----判断str1是否是以指定的字符串prefix开始

判断字符串关系

Boolean b = str1.contains(CharSequence str2) ------------判断是否包含(注意:内容和顺序,str2="abc"作为整体)

Boolean b = str1.contentEquals(CharSequence str2) ----判断是否相等(注意:内容和顺序)

Boolean b = str1.equals(Object anObject)-------------------判断是否相等

判断字符串是否为空

Boolean b = str1.isEmpty()  -------------------------------------当且仅当 length()0 时返回 true 

判断字符串是否匹配正则
Boolean b = str1.matches(String regex)

拆分字符串(用正则)

String[] str = str1.split(String regex)

字符串格式化

String.format(String format, Object args,... ) -----将一个或多个对象按指定的字符串格式(format中用特殊的类型转换符表示:插入数据的位置、类型以及如何格式化)进行格式化字符串输出

如:String k=String.format("%s的工资:$%d", "king",100);------>king的工资:$100
String.format("%tF%n", Date date) ------将日期按指定字符串格式以字符串形式输出

 

集锦:

JAVA组合字符串,长度不足用0补齐

 private String lpad(int length, int number) {

        String f = "%0" + length + "d";

        return String.format(f, number);

 }  

 System.out.println(test.lpad(5, 23));   //00023

 

Java字符串长度不够前面或后面补0


1、 第一种字符串补0方法,已测试过,代码如下:
 public static String addZeroForNum(String str, int strLength) {
     int strLen = str.length();
     StringBuffer sb = null;
     while (strLen < strLength) {
           sb = new StringBuffer();
           sb.append("0").append(str);// 左(前)补0
        // sb.append(str).append("0");//右(后)补0
           str = sb.toString();
           strLen = str.length();
     }
     return str;
 }

2、数字流水号长度不够补0方法,已测试过,代码如下:
 public static String codeAddOne(String code, int len){
    Integer intHao = Integer.parseInt(code);
    intHao++;
    String strHao = intHao.toString();
    while (strHao.length() < len) {
        strHao = "0" + strHao;
     }
    return strHao;
 }


 用java中的DecimalFormat,可以简化:

 // 流水号加1后返回,流水号长度为15
 private static final String STR_FORMAT = "000000000000";
 public static String haoAddOne(String liuShuiHao){
      Integer intHao = Integer.parseInt(liuShuiHao);
      intHao++;
     DecimalFormat df = new DecimalFormat(STR_FORMAT);
     return df.format(intHao);
 }

 字符串空值判断方法:

方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.
方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法.
方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.
 
1:if(s == null || s.equals(""));    <==否定形式==>  if(s != null &&  !" ".equals(s));
 
2:if(s == null || s.length() <= 0);
 
3:if(s == null || s.isEmpty());

 

 

 

 

 

常用方法:

 

Java 中但凡表示"范围",都是“包含前,不包含后”如上例表示:[39)

String 类:数据+相关的操作,即 char[ ]+操作(String 内部就是一个 char[]

char 数组只是数据,没有操作

一串字符就是字符串:char[]StringStringBuilder

charAt()

  length()

  trim()

  toLowerCase()

  toUpperCase()

  indexOf()

  lastIndexOf()

  endsWith()

  startsWith()

  substring(int start, int end)

  substring(int start)

  toCharArray()      ----------------------------------- 字符串----〉字符

 

      String str = new String(new char[]{'1','2','3'});字符-----〉字符串

      char[] chs = str.toCharArray();                         字符串----〉字符

 

正则表达式

字符集

  [1234]          表示  1,2,3,4  之一

  [^12]          表示除了  1,2

  [1-5]          表示  1,2,3,4,5

  [a-f]            表示  a-f  之间的

      [0-9a-fA-F]        表示一个 16 进制字符

0[xX][0-9a-fA-F]{1,8}   表示整数的 16 进制数表达式

[\w-]{8,15}       表示 8-15 个人以字符、下划线、数字及“-

 

预定义字符集

  \d            表示[0-9]

  “.”        表示任意字符

  \w          表示单词字符  [0-9a-zA-Z_]   注:包含下划线“_”

  \s          表示匹配空白:  \t \n \r \ b \ p      

  \D          (丌常用)表示非数字

  \S          (丌常用)表示非空白

  \W          (丌常用)表示非单词字符  [0-9a-zA-Z_]

  {m,n}          表示数词 m n

  {n}          表示数词 n 个,比如表示“5 个以上”用{5} 

         ?            表示能出现 0 1   {01}

+            表示能出现 1 n   {1}

*            表示能出现 0 n   {0}

 

正则表达式以“^”开头,“$”结尾

 

 String 对正则表达式的支持

 

1)  String  对正则表达式的支持,重点掌握如下 3 个方法:

  .matches()               匹配正则表达式

  .split("[,\s\|]")        切分字符串为字符串数组

  .replaceAll()   

 

2)  Integer.parseInt(),转换字符串到整数,如: "23"-> 23

StringBuilder StringBuffer   **

 

String  = char[] +  操作(复制创建新对象)           char[]不可变

StringBuilder = char[] +  char[]操作(处理当前数组内容)   char[]可变

StringBuilder 内部的 char[]数组内容可变,如果长度丌够,利用变长算法维护,自动扩容长度。

注:

  append()方法,表示“追加”,该方法反复操作的始终是 1 个对象

  insert()方法,表示“插入”

  delete()方法,表示“删除”

 

 StringBuilder

1)  StringBuilder 是变长字符序列

2)  StringBuilder 方法:appendinsert ...  都返回当前  StringBuilder  对象本身的引用

3)  如果软件需要大量字符串处理时候建议使用 StringBuilder

4)  String s = s1+s2; Java 实际上是如下代码运行:

String s=new StringBuilder(s1).append(s2).toString();

5)  String s = s1+s2+s3+s4;  被优化为

String s = new StringBuilder(s1).append(s2).append(s3).append(s4).toString();

6)  s += "a";会产生两个新对象(StringBuilder, String)

StringBuilder buf=new StringBuilder();

buf.append("a");

buf.append("a");

7)  StringBuffer    StringBuilder API 几乎一样!

StringBuffer  java 早期提供的(JDK1.0),速度稍慢,线程安全

s += "A";相当于 s = new StringBuilder(s).append("A").toString ,每当做一次字符创拼接,

就会创建一个 StringBuilder 新对象,同时 JVM 在适时回收这些对象,如此会严重影响性能结论:当处理少量字符串拼接时使用 String s = "a"+"b",大量字符串拼接操作时使用

StringBuilder

如果对字符串性能有极高要求,则直接操作 char[]数组

 

 

 

 

 

 

分享到:
评论

相关推荐

    java-string-similarity, 各种字符串相似性和距离算法.zip

    java-string-similarity, 各种字符串相似性和距离算法 java-string-similarity 实现不同字符串相似度和距离度量的库。 目前已经实现了许多算法( 包括Levenshtein编辑距离和 sibblings,jaro winkler,最长公共子序列...

    java-string-similarity

    各种字符串相似度和距离算法的实现:Levenshtein,Jaro-winkler,n-Gram,Q-Gram,Jaccard索引,最长公共子序列编辑距离,余弦相似度......

    java-string-similarity-master.zip_similarity

    "java-string-similarity-master.zip_similarity"这个压缩包很可能包含了一个Java实现的字符串相似度计算库,专注于cosine similarity(余弦相似度)和ontology(本体)相关的方法。 余弦相似度是一种衡量两个非零...

    mysql-connector-java-8.0.13.jar

    MySQL Connector/J 8.0.13 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动程序。这个压缩包包含的“mysql-connector-java-8.0.13.jar”是这个驱动的实现文件,而...

    mysql-connector-java-5.1.27

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java-5.1.27`则是MySQL官方为Java开发者提供的一个关键组件,用于在Java应用程序中与MySQL数据库进行交互。这个驱动包允许Java程序通过JDBC...

    mysql-connector-java-8.0.23.zip

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而MySQL Connector/J则是MySQL官方提供的用于Java应用程序与MySQL数据库进行连接的驱动程序。这个"mysql-connector-java-8.0.23.zip"文件正是MySQL Connector/J的...

    mysql-connector-java-5.1.44

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,允许Java开发者在Java应用中访问和操作MySQL数据。`mysql-connector-java-5.1.44`是这...

    mysql-connector-java-5.1.7 jar包

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.7.jar`是MySQL官方为了使得Java应用程序能够连接到MySQL数据库而提供的JDBC(Java Database Connectivity)驱动程序。JDBC是Java...

    mysql-connector-java-5.1.47.jar

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java`则是MySQL官方提供的Java数据库连接器,用于在Java应用程序中与MySQL服务器进行通信。在这个话题中,我们将深入探讨`mysql-connector-...

    mysql-connector-java-5.1.7-bin.jar

    public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydatabase", "username", ...

    mysql-connector-java-5.1.46.jar bin-jar

    MySQL Connector/J 5.1.46 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动程序。这个压缩包包含两个版本的驱动:`mysql-connector-java-5.1.46.jar` 和 `mysql-...

    MySQL-connector-java-8.0.28

    MySQL-connector-java-8.0.28 是MySQL数据库与Java应用程序之间通信的重要组件,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。在这个版本中,...

    mysql-connector-java-5.1.40.tar.gz

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的MySQL驱动程序。"mysql-connector-java-5.1.40.tar.gz" 是这个驱动程序的一个特定版本,版本号为...

    mysql-connector-java-8.0.17.jar.zip

    MySQL Connector/J 8.0.17 是MySQL官方提供的用于Java应用程序与MySQL数据库进行连接的驱动程序,也就是JDBC(Java Database Connectivity)驱动。这个压缩包"mysql-connector-java-8.0.17.jar.zip"包含了这个关键的...

    mysql-connector-java-5.1.10-bin.jar

    《MySQL数据库连接器Java驱动详解——mysql-connector-java-5.1.10-bin.jar》 MySQL数据库在软件开发中占据着重要的地位,而与之交互的Java应用程序通常依赖于`mysql-connector-java`这个数据库驱动。本文将深入...

    mysql-connector-java-8.0.20.jar

    MySQL Connector/J 8.0.20 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动程序。这个jar文件是MySQL官方提供的,旨在允许Java开发者通过Java语言轻松地访问和...

    mysql-connector-java-5.1.47-bin.jar

    MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。标题中的"mysql-...

    mysql-connector-java-8.0.23.jar

    MySQL Connector/J 8.0.23 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动程序。这个jar文件是MySQL官方提供的,确保了与MySQL数据库的高效且可靠的通信。在Java...

    mysql-connector-java-5.1.44-bin.jar 包

    MySQL是世界上最受欢迎的开源数据库系统之一,而`mysql-connector-java-5.1.44-bin.jar`是MySQL提供的一款Java驱动程序,用于在Java应用程序中连接和操作MySQL数据库。这款JDBC(Java Database Connectivity)驱动是...

Global site tag (gtag.js) - Google Analytics