java string类方法深入解析_java

复制代码 代码如下:

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));
  }
}

时间: 2024-10-22 09:37:25

java string类方法深入解析_java的相关文章

Java Thread多线程全面解析_java

多线程是java中很重要的知识点,在此小编给大家总结Java Thread多线程,非常有用,希望大家可以掌握哦. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了.主要包括: Java线程具有五种基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnab

java String的intern方法_java

首先我们应该清楚的是JDK1.6和JDK1.7中String类的intern方法还是有差别的:   JDK1.6中的intern:    调用intern方法的时候首先会去常量池中查看是否存在与当前String值相同的值,如果存在的话,则直接返回常量池中这个String值的引用:如果不存在的话,则会将原先堆中的该字符串拷贝一份到常量池中.   JDK1.7中的intern:    调用intern方法的时候首先会去常量池中查看是否存在与当前String值相同的值,如果存在的话,则直接返回常量池中

JAVA中StringBuffer与String的区别解析_java

看到这个讲解的不错,所以转一下 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作,不可变类. 3.StringBuffer 也是对一串字符进行操作,是可变类. String:    是对象不是原始类型.    为不可变对象,一旦被创建,就不能修改它的值.    对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承. StringBuffer:   

Java String源码解析

public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 /**

Java中Date与String相互转换的方法_java

我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt.DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFormat.SimpleDateFormat有4个构造函数,

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

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

java中break和continue源码解析_java

在自己学习java语言的过程中,很容易把break和continue的用法混淆.为了便于以后快速查阅及温习,在此特留学习笔记一份.简述在任何迭代语句的主体部分,都可以用break和continue控制循环的流程.其中,break用于强行退出循环,不执行循环中剩余的语句.而continue则停止执行当前迭代,然后退回循环起始处,开始下一次迭代. 源码下面这个程序向大家展示了break和continue在for和while循环中的例子: package com.mufeng.thefourthcha

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

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

Java String类的常用方法汇总_java

一.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间.二.String类对象的创建 字符串声明:String stringName; 字符串创建:stringName = new String(字符串常量);或stringName = 字符串常量;三.String类构造方法1.public Str