zoukankan      html  css  js  c++  java
  • java笔记 -- java字符串

    概念:

    • 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");
        }
    }
  • 相关阅读:
    互联网产品的灰度发布
    丰网速运单号查询快递鸟API接口-丰网速运
    电商系统物流管理之逆向物流退换货流程设计
    用JS进行Base64编码,MD5加密,实现签名验证 调用快递鸟API接口 完成快递单号查询 JavaScript
    京东快递上门取件接口-快递鸟在线下单API
    申通快递上门取件接口-快递鸟在线下单API
    极兔快递电子面单打印API接口-极兔速递
    电子面单模板规格汇总-快递鸟
    澳邮快递单号查询接口-快递鸟API 澳邮中国
    光线速递快递单号查询接口-快递鸟API
  • 原文地址:https://www.cnblogs.com/qiezuimh/p/9713140.html
Copyright © 2011-2022 走看看