1. 代码点与代码单元

  Java字符串由char序列组成。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
  length()方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量
  要想的到实际的长度,即代码点数量
  int cpCount = str.codePointCount(0.str.length())
 
  调用str.charAt(n)将返回位置n的代码单元,n介于0-str.length()-1之间
 
  要想得到第i个代码点
  int index = str.offsetByCodePoints(0,i);
  int cp = str.codePointAt(index);
 

2. 字符串API

char charAt (int index)
返回给定位置的代码单元。除非对底层的代码单元感兴趣,否则不需要调用这个方法
 
int codePointAt(int index) 5.0
返回从给定位置开始或结束的代码点
 
int offsetByCodePoints(int startIndex,int cpCount)  5.0
返回从startIndex代码点开始,位移cpCount后的代码点索引
 
int compareTo(String other)
按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后,返回一个正数;如果两个字符串相等,返回0
 
boolean endsWith(String suffix)
如果字符串以suffix结尾,返回true
 
boolean equals(Object other)
如果字符串与other相等,返回true
 
Boolean equalsIgnoreCase(String other)
如果字符串与other相等(忽略大小写),返回true
 
int indexOf(String str)
int indexOf(String str,int fromIndex)
int indexOf(int cp)
int indexOf(int cp,int fromIndex)
返回与字符串str或代码点cp匹配的第一个子串开始位置。这个位置从索引0或fromIndex开始计算。如果原始串中不存在str,返回-1
 
int lastIndexOf(String str)
int lastIndexOf(String str,int fromIndex)
int lastIndexOf(int cp)
int lastIndexOf(int cp,int fromIndex)
返回与字符串str或代码点cp匹配的最后一个子串的开始位置。这个位置从原始串尾端或fromIndex开始计算。
 
int length()
返回字符串的长度
 
int codePointCount(int startIndex,int endIndex) 5.0
返回startIndex和endIndex – 1之间的代码点数量。没有配成对的代用字符将计入代码点
 
String replace(CharSequence oldString,CharSequence newString)
返回一个新字符串,这个字符串用newString代替原始字符串中所有的oldString。可以用String和StringBuilder对象作为CharSequence参数。
 
Boolean startsWith(String prefix)
如果字符串以prefix字符串开始,返回true
 
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
返回一个新字符串。这个字符串包含原始字符串中从beginIndex到串尾或endIndex-1的所有代码单元。
 
String toLowerCase()
返回一个新字符串。这个字符串将原始字符串中的所有大写字母改成了小写字母。
 
String toUpperCase()
返回一个新字符串。这个字符串将原始字符串中的所有小写字母改成了大写字母。
 
String trim()
返回一个新字符串。这个字符串将删除原始字符串头部和尾部的空格。
 
阅读联机API文档,下载JDK api 还有很多String API
 

3. 构建字符串

  每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间。使用StringBuilder类就可以避免这个问题的发生。
  如果需要用许多小段的字符串构建一个字符串,那么应该按照下列步骤进行
  1、 首先,构建一个空的字符串构建器。
           StringBuilder builder = new StringBuilder(); 
  2、当每次需要添加一部分内容时,就调用append()方法
 
           builder.append(ch);  //append a single character
           builder.append(str);  //append a string
      3、在需要构建字符串时就调用ToString方法,将可以得到一个String对象,其中包含了构建器中的字符序列。
           String completedString = builder.toString();
StringBuilder的前身是StringBuffer,其效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作。如果所有字符串在一个单线程中编辑,则应该用StringBuilder替代它。
 
StringBuilder%StringBuffer API
这两个类的API是相同的。
 
StringBuilder()
构造一个空的字符串构建器
 
int length()
返回构建器或缓冲器中的代码单元数量
 
StringBuilder append(Strigng str)
追加一个字符串并返回this
 
StringBuilder append(char c)
追加一个代码单元并返回this
 
StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回this
 
void setCharAt(int i,char c)
将第i个代码单元设置为c
 
StringBuilder insert(int offset,String str)
在offset位置插入一个字符串并返回this
 
StringBuilder delete(int startIndex,int endIndex)
删除偏移量从startIndex到endIndex-1的代码单元并返回this
 
String toString()
返回一个与构建器或缓冲器内容相同的字符串

Java基础语法<二> 字符串String的更多相关文章

  1. Java基础语法(二)之流程控制语句

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块 .控制语句分为三类:顺序,选择和循环. “顺序结构”代表”先执行a,再执行b”的逻辑.比如,先找个女朋友, ...

  2. Java基础语法(二)<运算符>

    运算符: 下面的都是相关的练习: 1.键盘录入一个三位整数数,请分别获取该三位数上每一位的数值 import java.util.Scanner; public class Test02 { publ ...

  3. java基础语法(二)

    一.运算符 算数运算符 算数运算符用在数学表达式中,它们的作用和在数学中的作用一样. 操作符 描述 例子 + 两数相加 1+1=2 - 两数相减 2-1=1 * 两数相乘 1*1=1 / 两数相除 1 ...

  4. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

  5. java基础语法(二)--单列模式

    java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...

  6. 03:Java基础语法(二)

    Java基础语法 Java运算符 算术运算符 运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等.1.操作数:参与运算的数据 称为操作数.2.表达式:运算符和操作数的整体 称为表达式.单独的一个 ...

  7. 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用

    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...

  8. 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值

    016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...

  9. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

随机推荐

  1. 分布式版本控制git常见问题之gitignore冲突(精简版)

    上次写的的太模糊了,现在简单直接写出个人心得,如下: 原因是有人提交了.gitignore里面的内容,所以和本地的不一样,这样就有问题,那么pull都不可以,所以要这样: git update-ind ...

  2. 【源码解析】BlockManager详解

    1 Block管理模块的组件和功能 BlockManager:BlockManager源码解析 Driver和Executor都会创建 Block的put.get和remove等操作的实际执行者 Bl ...

  3. 中文分词中的战斗机-jieba库

    英文分词的第三方库NLTK不错,中文分词工具也有很多(盘古分词.Yaha分词.Jieba分词等).但是从加载自定义字典.多线程.自动匹配新词等方面来看. 大jieba确实是中文分词中的战斗机. 请随意 ...

  4. 关于在Mac OS下安装npm与cnpm的ERR! Darwin 15.0.0解决办法

    mac os安装好了很久了,不过没怎么用,昨天想要体验一下大神们推荐的黑苹果系统用起来怎么样(关于安装黑苹果的可以到我的简书去看相关文章),于是乎,打开久违的vmware,看着咬一口的苹果进度图,心中 ...

  5. Python 关于字符串处理技巧

    1.使用多个字符或字符串作为分隔符分割字符串 str.split()方法只能制定单个字符或字符串作为分割符, re.split()方法可以用正则表达式作为分割符, re.split()跟str.spl ...

  6. 基于Express+Socket.io+MongoDB的即时聊天系统的设计与实现

    记得从高中上课时经常偷偷的和同学们使用qq进行聊天,那时候经常需要进行下载qq,但是当时又没有那么多的流量进行下载,这就是一个很尴尬的事情了,当时就多想要有一个可以进行线上聊天的网站呀,不用每次痛苦的 ...

  7. Xamarin开发笔记—百度在线语音合成

    语音合成:也被称为文本转换技术(TTS),它是将计算机自己产生的.或外部输入的文字信息转变为可以听得懂的.流利的口语输出的技术. 技术选型:语音合成初步选择有两个,一是讯飞.二是百度. 因为使用的是X ...

  8. android 模拟器对应键盘快捷键

    一位同事的总结资料: Android SDK2.0.1自带的虚拟机尺寸都比较小(不针对机型,只为了在PC上看的舒服一点,当然越大越好了,我最大设置成1050*450,但是自带的屏保会不够宽,900*4 ...

  9. 渗透测试工具Nmap从初级到高级

    Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...

  10. git clone https://github.com/istester/ido.git ,确提示“Failed to connect to 192.168.1.22 port 8080: Connection refused” 的解决办法 。

    不知道是否有同学遇到如下的问题: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo } span.s1 { } git clone ...