字符串笔记

1、字符串

  ·用双引号括起来的0个或多个字符就是一个字符串变量

    “hello”

    “1”

    “”

2、字符串变量

  ·String s;

  ·String 是一个类,String的变量是对象的管理者而非所有者

  ·就像数组变量是数组的管理者而非所有者一样

  ·包裹类型的第一个字母也是大写的

3、new = 创建

  String s = new String(“a string”);

  创建了一个String的对象

  用“a string”初始化这个对象

  创建管理这个对象的变量s

  让s管理这个对象

4、初始化字符串变量

  ·String s = "hello";

  ·编译器帮你创建一个String类的对象交给s来管理

5、字符串连接

  ·用加号(+)可以连接两个字符串

  ·“hello”+“world”-->"helloworld"

  ·当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串然后做连接

  “I'm ”+18-->"I'm 18"

  1+2+"age"-->"3age"

  "age"+1+2-->"age12"

6、输入字符串

  ·in.next();读入一个单词,单词的标志是空格

  ·空格包括空格、tab和换行

  ·in.nextLine;读入一整行

 7、比较两个String

  ·String应该用.equals来比较

    if( input == "bye" ){    //比较是否管理同一个字符串
        ...
    }
    
    if( input.equals("bye") ){    //比较内容是否相同
        ...
    }

 8、字符串的改变

  以下面的代码为例

1         String s;
2         String k;
3         s = "koopa";
4         System.out.println(s);
5         k = "koopa";
6         k = k+" is a good man.";

  当第5行的k被第一次赋值的时候,其指向内存中的地址与变量s是一样的

  即,此时k与s管理着同一个字符串“koopa”,此时若是比较(s == a),其结果是true

  第六行,k发生了变化,此时意味着在一个新的地方“koopa is a good man.”的字符串被创建了,原先位置的“koopa”并没有发生变化

  即k此时管理的是另外一个字符串,(s == a),其结果是false

  更详细的内容,贴一个地址

  https://my.oschina.net/ccqy66/blog/507100

9、字符串的操作

  ·字符串是对象,对它的所有操作都是通过“.”这个运算符来进行的

  ·字符串.操作

  ·它表示对.左边的这个字符串做右边的那个操作

  ·这里的字符串可以是变量也可以是常量

  ---

    1)String大小的比较

    ·两个字符串可以比较大小:

      s1.compareTo(S2)

    如果s1比s2小,那么结果是负的;如果s1和s2相等,那么结果是0;如果s1比s2大,那么结果是正的

    ·compareToIgnoreCase可以不区分大小写地来比较大小   

    2)获得String的长度

    ·用length()函数

    String name = “Hellola”;

    str1 = “one”;

    str2 = "";

    str3;

    name.length(); -->7

    str1.length(); -->3

    str2.length(); -->0

    str3.length(); -->Error! (错误是因为str3没有管理任何String对象)

    3)访问String里的字符

    · s.CharAt(index)

      ·返回在index上的单个字符

      ·index的范围是0到length()-1

      ·第一个字符的index是0,和数组一样

    ·但是不能用for-each循环来遍历字符串

    4)得到子串

    ·s.substring(n)

      ·得到从n号位置到末尾的全部内容

    ·s.substring(b,e)

      ·得到从b号位置到e号位置之前的内容

    5)寻找字符

    ·s.indexOf(c)

      得到c字符所在的位置,-1表示不存在

    ·s.indexOf(c,n)

      从n号位置开始寻找c字符

    ·s.indexOf(t)

      找到字符串t所在的位置

    ·从右边开始找

      s.lastIndexOf(c)

      s.lastIndexOf(c,n)

      s.lastIndexOf(t)

    6)其他String操作

    ·s.startsWith(t)  //是否是以字符/字符串t开头

    ·s.endsWith(t)  //是否是以字符/字符串t结尾

    ·s.trim()  //把字符串两端的空格删掉

    ·s.replace(c1,c2)  //把字符串中所有的c1都换成c2

    ·s.toLowerCase()  //把字符串中的字母全部转换成小写

    ·s.toUpperCase()  //把字符串中的字母全部转换成大写

    7)不可变的String

    ·所有的字符串都是不可变的,对它们的操作的结果都是制造新的字符串出来

    8)在switch-case中使用字符串

    1.7及以上的Java版本才可使用    

    switch(s){
    case "this":...break;
    case "that":...break;
    }

 

posted @ 2018-03-17 17:28  库巴是个好人  阅读(114)  评论(1)    收藏  举报