java string类方法深入解析

代码如下:

import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Locale;
import java.util.Date;
import java.util.regex.PatternSyntaxException;

import javax.xml.crypto.Data;

public class Stringxuexi {
  public static void main(String[] argc)
  {
    //charAt(int index) 返回index处的Unicode字符
    String strCom = "JAVA程序设计";
    System.out.println(strCom.charAt(4));

//codePointAt(int index) 返回index处字符的Unicode编码值
    strCom = "I like JAVA ,too";
    System.out.println(strCom.codePointAt(8));

//codePointBefore 返回index-1处字符的Unicode编码值
    System.out.println(strCom.codePointBefore(2));

//codePointCount(int beginIndex,int endIndex)方法    返回指定文本范围内Unicode代码点的数量
    System.out.println(strCom.codePointCount(0, 3));

//compareTo(String str)
    //如果两个字符串不同,那么他们要么在某个索引处的字符不同,要么长度不同,或者同时具备这两种情况
    //如果在一个或多个索引处字符不同,假设k是这类索引的最小值,那么返回值就是这两个字符串在位置k处
    //两个char值之差,如果没有字符不同的索引位置,则返回值是两个字符串长度的差
    System.out.println(strCom.compareTo("I like PHP"));
    System.out.println(strCom.compareTo("I like JAVA too"));

//compareToIgnoreCase(String str)    忽略大小写比较字符串大小
    System.out.println(strCom.compareToIgnoreCase("I Like PHP"));

//concat(String str) 将另一字符串连接在此字符串的后面,如果参数字符串的长度为0,
    //则返回此字符串,否则创建一个新的String对象
    System.out.println(strCom.equals(strCom.concat("")));
    System.out.println(strCom.concat(strCom));

//contains(CharSequence s)判断字符串是否包含指定的char值序列
    System.out.println(strCom.contains("JAVA"));

//valueOf(char []data) 静态方法,返回包含字符数组的字符的字符串
    char [] array={'山','东'};
    System.out.println(String.valueOf(array));

//valueOf(char[] data,int offset,int count)返回包含字符数组从offset处开始的count个字符
    //组成的字符串
    System.out.println(String.valueOf(array, 0, 1));

//endwith(String suffix)测试字符串是否是指定的后缀结束
    System.out.println(strCom.endsWith("JAVA"));

//equals(object obj)    如果给定的对象表示的String与此String相等,则返回true,否则false
    System.out.println(strCom.equals("I like JAVA"));

//equalsIgnoreCase(String anotherString) //忽略大小写与另一字符串进行比较,注意与equals方法的参数类型不同
    System.out.println(strCom.equalsIgnoreCase("I Like JAva"));

//format(String format,Object ...args)静态方法    使用指定的格式字符串和参数返回一个格式话字符串
    //%d 格式化为十进制整数
    //%o 格式化为八进制整数
    //%x %X 格式化为十六进制整数

System.out.println(String.format("%e %x %o %d %a %% %n", 15.000,15,15,15,15.0));

//format(Locale l,String format,Object ... args)
    //通过给定的特殊转换符作为参数来实现对日期和时间字符串的格式化
    //%te 一个月中的某一天
    //%tb 指定语言环境的月份简称
    //%tB 指定语言环境的月份全称
    //%tA 指定语言环境的星期几全称
    //%ta 指定语言环境的星期几简称
    //%tc 包括全部日期和时间信息
    //%tY 4位年份
    //%ty 二位年份
    //%tm 月份
    //%tj 一年中的第几天
    //%td 一个月中的第几天
    Date date = new Date();
    Locale form = Locale.CHINA;
    String year = String.format(form, "%tY", date);
    String month    = String.format(form, "%tm", date);
    String day = String.format(form, "%td", date);
    System.out.println("今天是: "+ year + "年"+month+"月"+day+"日");
    System.out.println(String.format(form, "%tc", date));

//byte[] getBytes() 得到字符串的byte序列   
    byte[] str = strCom.getBytes();
    for (int i = 0;i < str.length;i++)
      System.out.print(str[i]+" ");

//getBytes(Charset charset)
    //getBytes(String string)
    //得到编码字符集的所得字符序列
    try {
      str = strCom.getBytes(Charset.defaultCharset());
      for (int i = 0; i < str.length; i++)
        System.out.println(str[i] + " ");
    } catch (UnsupportedCharsetException e) {
      // TODO: handle exception
      e.printStackTrace();
    }

//getchars(int srcBegin,int srcEnd,char[] dst,int dstBegin)
    //将字符从此字符串复制到目标字符数组
    char[] dst = new char[10];
    strCom.getChars(0, 10, dst, 0);
    for (int i = 0; i < dst.length;i++)
      System.out.print(dst[i]);
    System.out.println();

//hashCode()    返回字符串的哈希码,String对象的哈希码的计算公式是
    //s[0]*31^(n-1)+s[1]*31^(n-2)+...+s[n-1]
    //空串的哈希码为0
    System.out.println(strCom.hashCode());

//indexOf(int ch) 获取字符的第一个索引,ch是一个字符,如果没有,返回-1
    System.out.println(strCom.indexOf('A'));

//indexOf(int ch,int fromIndex)    //返回从从指定的索引处开始的指定字符的索引
    //fromIndex没有限制,如果为负,与0等效,如果大于等于字符串长度,则返回-1
    System.out.println(strCom.indexOf('A', 9));

//indexOf(String str)
    //indexOf(String str,int fromIndex)
    //返回指定字符串在此字符串第一次出现处的索引
    System.out.println(strCom.indexOf("JAVA"));

//intern()    返回字符串对象的规范化表示形式
    //当调用intern方法时,如果池已经包含一个等于此String对象的字符串,则返回池中的字符串
    //否则将此字符串对象添加到池中,并返回此String对象引用
    //了解这个处理机制也可以让我们在用到字符串常量的时候了解如何节省这些字符串所占用的内存。
    String strCom2 = new String("I like JAVA");
    System.out.println(strCom == strCom2);
    System.out.println(strCom.endsWith(strCom2));
    System.out.println(strCom.compareTo(strCom2));
    System.out.println(strCom.intern() == strCom2.intern());
    String s1 = new String("你好,Java自由人");
    String s2 = new String("你好,") + "Java自由人";
    System.out.println(s1==s2);
    System.out.println(s1.intern()==s2.intern());

//同indexOf,注意fromIndex 参数,是指从fromIndex处反向搜索
    System.out.println(strCom.lastIndexOf('A'));
    System.out.println(strCom.lastIndexOf('A',10));
    System.out.println(strCom.lastIndexOf("JAVA"));
    System.out.println(strCom.lastIndexOf("JAVA", 10));

//返回字符串长度
    System.out.println(strCom.length());

//matchs(String regex)匹配正则表达式
    try {
      String regex = "1234";
      System.out.println(regex.matches("//d{4}"));
      System.out.println(regex.replaceAll("//d{4}", "chen"));
      System.out.println(regex.replaceFirst("//d{4}", "chen"));
    } catch (PatternSyntaxException e) {
      // TODO: handle exception
      e.printStackTrace();
    }

// offsetByCodePoints(int index,int codePointOffset)
    //返回从给定的index处偏移codePointOffset个代码点的索引
    System.out.println(strCom.offsetByCodePoints(7, 4));

//测试两个字符串区域是否相等,第一个参数为true时表示忽略大小写
    System.out.println(strCom.regionMatches(true, 0, "I lIke", 0, 3));
    System.out.println(strCom.regionMatches(0, "I like", 0, 3));

System.out.println(strCom.replace('A', 'a'));
    System.out.println(strCom.replace("JAVA", "PHP"));

//String[] split(String regex,int limit)
    //按指定的分隔符会字符串内容分割并存放到字符串数组中,limit为控制模式应用次数
    String[] info = strCom.split(" ,");
    for (int i = 0; i < info.length;i++)
      System.out.println(info[i]);

info    = strCom.split(" ", 2);
    for (int i = 0; i < info.length;i++)
      System.out.println(info[i]);

//startsWith(String prefix,int toffset)//判断是否以指定前缀开始
    //toffset为负或大于字符串长度结果为false
    System.out.println(strCom.startsWith("I"));
    System.out.println(strCom.startsWith("I",-1));

//CharSequeuece subSequeuece(int beginIndex,int endIndex)
    //返回一个新的字符序列
    System.out.println(strCom.subSequence(2, 6));

//String substring(int beginindex,int endIndex)
    //返回子字符串
    System.out.println(strCom.substring(2));
    System.out.println(strCom.substring(2, 6));

//toCharArray() 字符串变字符数组
    char[] str1 = strCom.toCharArray();
    for (int i = 0; i < str1.length;i++)
      System.out.print(str1[i]+" ");
    System.out.println();

//toLowerCase(Locale locale) 将字符串中的所有字符变成大/小写返回新的字符串
    System.out.println(strCom.toLowerCase());
    System.out.println(strCom.toUpperCase());
    System.out.println(strCom.toUpperCase(form));
    System.out.println(strCom.toLowerCase(form));

//trim()方法取出字符串的前后空白
    System.out.println(("    "+strCom).trim());

//valueOf()     静态方法 实现基本数据类型转成字符串
    System.out.println(String.valueOf(true));
    System.out.println(String.valueOf('A'));
    System.out.println(String.valueOf(12.0));
  }
}

(0)

相关推荐

  • JAVA中STRING的常用方法小结

    一.创建并初始化一个字符串 String b = "hello"; 使用构造方法创建并初始化一个字符串 String();//初始化字符串,表示空字符序列 String(value);//利用已存在的字符串常量创建一个新的对象 String (char[] value);//利用一个字符数组创建一个字符串 String(char[] value,int offset,int count);//截取字符数组offset到count的字符创建一个非空串 String(StringBuffe

  • java中String的一些方法深入解析

    1.public String(char[] c,begin,length).从字符数组c的下标begin处开始,将长度为length的字符数组转换为字符串.begin与length可以省略,即将字符数组c转换为字符串.另:字符数组可改为字节数组byte[] b.char[] c=new char[]{'j','y','6','a','4','t','9'}; String s1=new String(c); String s=new String(c,2,3); System.out.prin

  • 老生常谈Java String字符串(必看篇)

    Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("hello"); 对于这样的常识,不再赘述. 首先String类是final类,为什么定义成final形式呢? 简单点说,对于如此高频率被使用的数据类型,设计者们认为已经设计的足够优秀了,不需要被继承,否则胡乱继承重写可能会降低程序的性能. 正如标题所述,既然深入,那我们

  • java中String的常见用法总结

    1>获取  1.1:字符串中包含的字符数,也就是字符串的长度.  int length():获取长度 1.2:根据位置获取位置上某个字符.  char charAt(int index) 1.3:根据字符获取该字符在字符串中的位置.  int indexOf(int ch):返回的是ch在字符串中第一次出现的位置.  int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置. int indexOf(String str)

  • 深入剖析Java之String字符串

    在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象有三种方法 String s1="我是字符串1"; String s2=new String();//创建一个空的字符串对象 String s3=new String("我是字符串2");//创建一个空的字符串对象

  • java string类方法深入解析

    复制代码 代码如下: import java.nio.charset.Charset;import java.nio.charset.UnsupportedCharsetException;import java.util.Locale;import java.util.Date;import java.util.regex.PatternSyntaxException; import javax.xml.crypto.Data; public class Stringxuexi {  publ

  • Java String创建对象实例解析

    本文研究的主要是Java String创建对象的问题,具体介绍如下. 首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,String只是一个引用变量. 所有的字符串都是String对象,由于字符串常量的大量使用,java中为了节省时间,在编译阶段,会把所有字符串常量放在字符串常量池中,字符串常量池的一个好处就是可以把相同的字符串合并,占用一个空间. 虽然在Java中无法直接获取变量的地址,但是可以用==判断一下两个引用变量是否指向了一个地址即一个对象. 栈内存 堆内存 基础类

  • java String源码和String常量池的全面解析

    1. String 介绍,常用方法源码分析 2. String 常量池分析 常用方法 equals trim replace concat split startsWith 和 endsWith substring toUpperCase() 和 toLowerCase() compareTo String 介绍 String类被final所修饰,也就是说String对象是不可变量,并发程序最喜欢不可变量了.String类实现了Serializable, Comparable, CharSequ

  • Java String的intern用法解析

    这篇文章主要介绍了Java String的intern用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在Java6中,intern方法返回的是对应字符串在永久态(方法区)中的地址:Java7以后,intern方法返回的是该字符串首次创建时候的堆内存的地址: 在java7中: package com.ecarx.daa.data.manager.utils; public class StringTest { public static

  • JAVA中4种解析XML文件的方法

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四种: 1.DOM解析: 2.SAX解析: 3.JDOM解析: 4.DOM4J解析. 其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台. 针对以下XML文件,会对四种方式进行详细描述: <?xml version="

  • 十大常见Java String问题_动力节点Java学院整理

    本文介绍Java中关于String最常见的10个问题: 1. 字符串比较,使用 "==" 还是 equals() ? 简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象). 而 equals 判断两个字符串的值是否相等. 除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法. 如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题 2. 对于敏感信息,为何使用char[]要比

  • java string类型转换boolean类型的方法

    今天偶然想把string 类型转换成 boolean 类型 ,查了下api文档,发现文档似乎有点不太对经... 嗯,就直接发测试代码吧,废话懒得说了... String s1 = "false"; String s2 = "true"; String s3 = "fAlSe"; String s4 = "TrUe"; String s5 = "true_a"; 以上的string 分别用 Boolean.g

  • java中使用sax解析xml的解决方法

    在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析 Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档 Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档 本文主要讲解Sax解析,其余放在后面 Sax采用事件驱动的方式解析文档.简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取) 在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或

  • java String的深入理解

    java String的深入理解 一.Java内存模型  按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配. JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存. 简单来说,非堆包含方法区.JVM内部处理或优化所需的内存(如 JITCompiler,Just-in-time Compiler,即时编译后的代码缓存).每个类结构(如

  • Java String类详解_动力节点Java学院整理

    引题 在Java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合Java内存分配深度分析关于String的许多令人迷惑的问题.下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文. 1.Java内存具体指哪块内存?这块内存区域为什么要进行划分?是如何划分的?划分之后每块区域的作用是什么?如何设置各个区域的大小? 2.String类型在执行连接操作时,效率为什么会比StringBuffer或者StringBuild

随机推荐