字符串笔记
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; }

浙公网安备 33010602011771号