概念:

  • Java字符串就是Unicode字符序列, Java没有内置的字符串类型, 而是在标准Java类库中提供了一个预定义类.

每个用双引号括起来的字符串都是String类的一个实例.
String e = ""; // an empty string
String greeting = "Hello";

  • 子串:

String类的substring方法可以从一个较大的字符串提取一个子串.
substring(a, b):
  a: 截取字符串开始的index
  b: 截取字符串结束的index, 但不包含b.
  截取字符串的长度为b-a

  String greeting = "Hello";
  String s = greeting.substring(0,3); // Hel

  • 拼接: +

字符串 + 非字符串 : 非字符串被转化为字符串.
任何一个Java对象都可以转换成字符串

  • 不可变字符串:

String类没有提供用于直接修改字符串的方法, 如果需要改, 需对变量重新赋值(并不是修改了字符串, 而是变量重新引用了另一个字符串).
所以String类对象称为不可变字符串
例:
  String greeting = "Hello";
  greeting = greeting.substring(0, 3) + "p!" // Help!

  • 检测字符串是否相等:

equals方法: s.equals(t), 返回true或者false
检测两个字符串是否相等而不区分大小写, 可以使用equalsIgnoreCase方法
== 只能确定两个字符串是否在同一个位置上, 但是不能判断不同位置上的内容相同字符串是否相同, 所以不能用来判断两个字符串是否相同.

  • 空串与null串

空串""是长度为0的字符串, 是一个Java对象, 有自己的长度(0)和内容(空).
检查一个字符串是否为空: if (str.length() == 0) 或者 if (str.equals("") == 0)
null: String变量可以存放的一个特殊的值, 表示目前没有任何对象与该变量关联.
检查一个字符串既不是null也不为空串: if (str != null && str.length() != 0)
null值上不能调用方法, 所以要先检测String不为null.

  • 代码点与代码单元

Java字符由char序列组成, char数据类型时一个采用UTF-16编码表示Unicode代码点的代码单元.
大多数的常用Unicode字符使用一个代码单元就可以表示, 而辅助字符需要一对的代码单元表示.
length方法将返回采用UTF-16表示的给定字符串所需要的代码单元数量, 而非我们所认为的字符的个数.
charAt方法返回的是指定位置的代码单元, 而非我们所认为的字符.
string.codePointCount(0, string.length()) 获取字符串中字符的个数.
string.codePointAt(i) 获取指定位置处的字符, 返回的是int而非char.

例:
  String greeting = "Hello";
  int n = greeting.length(); // is 5
  int cpCount = greeting.codePointCount(0, greeting.length()); // is 5
  char first = greeting.charAt(0); // is 'H'
  char last = greeting.charAt(4); // is 'o'

  要想得到第i个代码点, 应该使用下列语句.
  int index = greeting.offsetByCodePoints(0, i);
  int cp = greeting.codePointAt(index);

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.

  • String substring(beginIndex, endIndex)(含头不含尾)

返回一个新字符串. 这个字符串包含原始字符串中从beginIndex到串尾或endIndex-1的所有代码单元.

  • String trim()

返回一个新字符串, 这个字符串删除原始字符头部和尾部空格.

  • boolean endsWith(String suffix)

如果字符串以suffix结尾, 返回true

  • boolean equals(Object other)

如果字符串与other相等, 返回true

  • boolean equalsIgnoreCase(String other)

如果字符串与other相等(忽略大小写), 返回true

  • int indexOf(String str, int fromIndex)
  • int indexOf(int cp, int fromIndex)

返回与字符串或代码点cp匹配的第一个子串的开始位置. 从位置从索引0或fromIndex开始计算. 如果在原始串中不存在str, 返回-1.

  • int lastIndexOf(String str, int fromIndex)
  • int lastIndexOf(int cp, int fromIndex)

返回与字符串或代码点cp匹配的最后一个子串的开始位置. 这个位置从原始串尾端或fromIndex开始计算.

  • int length()

返回字符串的代码单元长度, 一般就是所见的字符串的长度, 但是如果有特殊两个代码单元的字符, 就不是字符串长度了.

  • int codePointCount(int startIndex, int endIndx)

返回startIndex和endIndx-1之间的代码点数量, 没有配成对的代用字符将计入代码点.

  • String replace(charSequence oldString, charSequence newString)

返回一个新字符串, 这个字符串用newString代替原始字符串中所有的oldString. 可以用String或StringBuilder对象作为charSequence参数.

  • boolean startsWith(String prefix)

如果字符串以prefix字符串开始, 返回true

  • String toLowerCase()

返回一个新字符串.这个字符串将原始字符串中所有大写字母改成了小写字母

  • String toUpperCase()

返回一个新字符串.这个字符串将原始字符串中所有小写字母改成了大写字母

构建字符串:

由许多小的字符串构建一个字符串时
  StringBuilder builder = new StringBuilder(); // 新建一个空字符串构造器
  当每次添加一部分内容时, 就调用append方法.
  builder.append(ch);
  ...
  String completedString = builder.toString; // 用toString方法得到String对象

// StringSample .java

package com.picc.sample.firstsample;
public class StringSample {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "aBc";
// A的Unicode码为65,a的Unicode码为97,所以A<a
if(s1.compareTo(s2)>0)
System.out.println("s1>s2");
if(s1.compareTo(s2)==0)
System.out.println("s1==s2");
if(s1.compareTo(s2)<0)
System.out.println("s1<s2");
}
}

java笔记 -- java字符串的更多相关文章

  1. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

  2. 菜鸡的Java笔记 - java 反射机制

    反射机制        1.观察 Class 类的使用        2.利用反射改善工程设计模式        3.反射操作类结构            content (内容)        1. ...

  3. Java笔记:字符串详解

    字符串详解 更新时间:2018-1-6 21:20:39 String 字符串创建 String str1="ABC";//推荐使用 String str2 = new Strin ...

  4. JAVA笔记3__字符串String类/对象一对一关联

    import java.lang.String; import java.util.Scanner; public class Main { public static void main(Strin ...

  5. 菜鸡的Java笔记 - java 正则表达式

    正则表达式 RegularExpression        了解正则表达式的好处        正则表达式的基础语法        正则表达式的具体操作            content (内容 ...

  6. 菜鸡的Java笔记 - java 常用类库

    CommonClassLibrary 常用类库        定时调度            定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式                    con ...

  7. 菜鸡的Java笔记 java基础类库 BaseClassLibrary

    java基础类库 BaseClassLibrary        StringBuffer 类的特点        StringBuffer,StringBuilder,String 类之间的关系   ...

  8. java笔记——Java关键字static、final使用小结

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  9. Java笔记--java一行一行写入或读取数据

    转自 Ruthless java一行一行写入或读取数据 链接:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/ ...

随机推荐

  1. 误用WeakHashMap引起的死循环cpu跑满问题

    最近使用mvel 2.2.0.Final,出现一次cpu跑满,经过线程栈分析,发现是误用WeakHashMap引起的. 故障现场: 看WeakHashMap源码: public V get(Objec ...

  2. Cocos Creator JS 时间戳日期转换

    /*** 时间戳换算日期* */function formatDateTime (timeStamp) { var date = new Date(); date.setTime(timeStamp ...

  3. dedecms二次开发

    安装遇到的问题 修改文件如下 1.date目录下的config.cache.bak.php改成config.cache.php 2install目录下的index.html.install_lock. ...

  4. 蓝桥杯近三年决赛题之一(15年B组)

    自己计时4小时做了试试,发现只用了2个小时多一点,第二题和第六题实在没办法,不会做,第五题用了暴力(过不了多少数据),其他三题在网上看了看 应该都是对的,下面放上试题及答案. 1. 标题:积分之迷 小 ...

  5. php魔术变量以及命名空间

    魔术变量: PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常量它们 ...

  6. 插播一则关于HTTP Headers详解~~~

    URL REQUEST : ------ 使用通讯录请求对象,构建URLLoader对象,并发出数据请求(对指定地址发出数据请求)   status code(状态码)------ 200(成功)-- ...

  7. html5 css折叠导航栏

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. zw版足彩大数据&报价

    zw版足彩大数据&报价 ::zw增强版足彩大数据,文件名后缀是'.dat' ::文件格式是标准文本格式,逗号分隔 ::zw增强版,在标准版赔率基础上,增加了倒数.比率两组归一化数据 ::zw版 ...

  9. intellij idea 官方帮助文档翻译(一)安装

    安装需求: 硬件需求: 最低2GB内存,推荐4GB内存 最少要有1.5GB的硬盘空间,以及1GB空间用于缓存 最低1024*768的分辨率 软件需求: intellij idea中包含了jre 1.8 ...

  10. JavaScript笔记1———js的数据类型

    JS的数据类型有: 1.数值类型(Number):js中所有数字均用浮点数字表示. 可以表示32位(即4字节)的整数,也可以表示64位(即8字节)的浮点数(小数). 也可以用二进制.八进制.十进制.十 ...