java String、StringBuilder 、正则表达式

String类 字符串(引用类型) 修改字符串 是重新创建 赋值地址

构造方法

public class StringDemo2 {

public static void main(String[] args) {

String s1 = "hello";

String s2 = "hello";   与s2指向同一地址  存储在堆的常量池中

String s3 = new String("hello"); 创建对象 存储了s1地址

System.out.println(s1==s2); //true      地址相等

System.out.println(s1==s3); //false

System.out.println(s1.equals(s3));//true 内容相等 重写了Object的

byte[] bytes={65,66,67,68};  正数:字母  负数:汉字(两个字节)

String str=new String(bytes);    // byte数组 转 字符串

String str=new String(bytes,1,2); //(数组,始值  个数)

byte[] bytes = str.getBytes();  // 字符串 转 byte数组

char[] ch={‘中‘,‘a‘,‘2‘};

String str=new String(ch);     // 字符数组 转 字符串

String str=new String(ch,0,1);  // 字符数组 转 字符串

char[] chs = str.toCharArray();  //字符串 转 字符数组

}

}

方法

str.toString() 获取字符串对象的内容  输出时 自动调用

str.isEmpty() 判断字符串是不是空串

str.length() 返回字符串长度

str.charAt(0) 返回索引处字符

str.equals(str2); 判断字符串 与 指定字符串 内容是否相同

str.equalsIgnoreCase(str3); 判断字符串内容是否相同  忽略大小写

str.substring(1) 截取开始索引 到最后 的字符串

str.substring(2, 4) 截取开始索引 到终止索引(不包括) 的字符串

str.indexOf("bcd") 返回第一次出现该字符串的索引,没有返回-1

str.contains("bcd") 判断是否包含指定字符串true/false

str.startsWith("Demo") 判断是否以给定字符串开头

str.endsWith("java") 判断是否以给定字符串结尾

str.toLowerCase() 把字符串转换为小写字符串

str.toUpperCase() 把字符串转换为大写字符串

str.trim()     去掉字符串两端空格

str.replace(oldChar, newChar)   将替换字符串中的老字符,为新字符

str.replace(oldstr, newstr) 将字符串中的老字符串,替换为新字符串

String[] strArray = str.split(",")   按照指定符号分割字符串

StringBuilder 字符串缓冲区(高效)  StringBuffer() 用法相同

public class StringBuilderDemo {

public static void main(String[] args) {

StringBuilder sb = new StringBuilder(); //构造方法   初始为空串

StringBuilder sb = new StringBuilder("world");//构造方法 str 转sb

String str = sb.toString();       //str 转sb    输出时 自动调用

StringBuilder sb2 = sb.append("hello");//添加数据(任意类型)

System.out.println(sb == sb2); //true 地址相同

sb.delete(1, 4);    //删除 [1,4)字符

sb.deleteCharAt(1); //删除字符

sb.insert(2, "it");   //在指定位置插入

sb.replace(1, 4, "java");//替换[1,4)的字符串为"java"

sb.reverse();反转

sb.length()    //返回长度(字符数)

sb.charAt(0)  返回索引处的字符

sb.indexOf("java",5) 查找第一次出现字符串的索引 从指定索引处

String str = sb.substring(0,1); 截取 [0,1) 返回字符串

String str = sb.substring(1); 截取[1,最后] 返回字符串

sb.append("hello").append(true).append(100); //链式调用

}

}

正则表达式(简写为regex   Pattern类  是字符串)

匹配规则

字符: 字符类:

X 字符 [abc] a或b 或 c

\\ 转义\ [^abc] 除了 a、b 或 c以外的任何字符

\t 制表符 [a-zA-Z] a 到 z 或 A 到 Z

\n 换行符 [0-9] 0到9数字

\r 回车符 [a-zA-Z_0-9] 字母或数字或下划线

预定义字符类:

. 点代表的是任何字符 \\. 匹配 点

\d 0到9数字 \D取反 \\d

\w 字母或数字或下划线 \W取反 \\w

数量词: 边界匹配器:

X? X出现0~1次 ^  行的开头

X* X出现0~∞次 $  行的结尾

X+ X出现1~∞次 \b  单词边界

X{n} X出现恰好 n 次

X{n,} X出现至少 n 次

X{n,m} X出现 n ~ m 次

regex = "(.)\\1";

点表示任意字符,\\1取第一个括号匹配的内容,加号匹配1次以上

某个字符重复两次或两次以上

正则表达式的常用方法

String str = "18369657617";

String regex = "1[34578][0-9]{9}";

boolean flag2 = str.matches(regex); 判断字符串是否匹配

String s = "18-22-40-65";

String regex = "-";

String[] result = s.split(regex); 用分隔符 分割字符串 为 字符串数组

String s = "Hello12345World6789012";

String regex = "[0-9]";

String result = s.replaceAll(regex, "*");字符串中符合规则的替换为 新字符

字符串 数字 转换

public class Demo03 {

public static void main(String[] args) {

// 字符串转成基本类型Xxx.parseXxx(String s);  xxx:基本数据类型

String str="12";

System.out.println(str+1); // 121

int s1=Integer.parseInt(str); // str内容必须是int格式

System.out.println(s1+1); // 13

String str2="2.3";

double s2=Double.parseDouble(str2);

System.out.println(s2+1); // 3.3

//基本类型 转 字符串

String s1=12+""; // 方法1

String s3=String.valueOf(2.3); // 方法2

System.out.println(10+s3); // 102.3

String s4=Integer.toString(12); // 方法3  有参数 不是重写obj

System.out.println(s4+1); // 13

}

}

原文地址:https://www.cnblogs.com/javscr/p/10206848.html

时间: 2024-10-12 16:05:33

java String、StringBuilder 、正则表达式的相关文章

【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题

REF: http://blog.csdn.net/fightforyourdream/article/details/15333405 题目是一道简单的小程序,像下面这样:[java] view plaincopypublic class Test1 {   public static void main(String args[]) {    String s = new String("Hello");    System.out.println(s);      foo(s);

Java String, StringBuilder, StringBuffer

整理自stackoverflow: Mutability Difference: String is immutable, if you try to alter their values, another object gets created, whereas StringBuffer and StringBuilder are mutable so they can change their values. Thread-Safety Difference: The difference

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

全面解释java中StringBuilder、StringBuffer、String类之间的关系

http://www.jb51.net/article/33398.htm String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似 1. String 类  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不

java String,StringBuffer,StringBuilder的区别

StringBuilder.StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...).只是StringBuffer会在方法上加synchronized关键字,进行同步. 最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer ? 这句话并不理解. 1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包

java StringBuffer,StringBuilder,String自身连接效率对比

当我们仅仅需要a+b 的时候,两个字符串链接任何方法的效率基本一样,都在0.0001毫秒内就可以完成.不过如果需要1万次,10000万次,就会发现string自身的join速度显著下降 package com.java.lang; public class StringTest { int MAX = 10000; //1万次累加 public String Buffer(){ StringBuffer sb = new StringBuffer(); for(int i = 0; i < MA

java String StringBuffer StringBuilder

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

java学习系列之二---字符串(char.String.StringBuilder以及StringBuffer)

一.String 1.String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的.String类是被final修饰 2.String str="hello world"和String str=new String("hello world")的区别 public class Main {              public static void main(String[] args) {         String s

JAVA String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

Java String,StringBuilder和StringBuffer的区别 StringBuilder &gt; StringBuffer&gt; String

可以证明,字符串操作是计算机程序设计中最常见的行为. String:不可变的对象,对String对象进行改变的时候其实都等同于生成了一个新的String对象,然后将引用指向新的String对象,原String对象GC回收.StringBuffer 字符串变量(线程安全),适用于多线程程序中,保证同步性.StringBuilder 字符串变量(非线程安全),适用于单线程程序中,不保证同步性.简要的说, String 类和 StringBuffer/StringBuilder 类的主要性能区别其实在