Java之字符串(十)

我们已经接触了一些简单的字符类型,就要学习强大的字符串了


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

e.g.
"hello"
"1"
""

我们都是用String来定义的

  • String s;
  • String 是一个类,String的变量是对象的管理者,而非所有者
  • 就像数组变量是数组的管理者而非所有者

字符串创建
new

String s = new String("a string");
创建了一个String 对象

这里我们用a string来初始化这个对象
创建管理这个对象的变量s
让s来管理这个对象

字符串变量初始化

String s = "hello";

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

字符串连接
用加号可以连接两个字符串
e.g.

"hello" + "world" ---> "helloworld"

注意在这个加号的左边会作为加号进行运算,而在这个加号右边会作为字符串的连接
一些例子来说明

"I'm " + 18 ---> "I'm 18
1+2+"age"  ---> "3age"
"age"+1+2 ---> "age12"

输入字符串

  • in.next()
    读入一个单词,单词的标志是空格
  • in.nextLine()
    读入一整行

e.g.

Scanner in = new Scanner(System.in);
String s;
s = in.next();
System.out.println(s);

输出就为

输入This is a book.
输出This

而若是in.nextLine();
输出就为输入的那一行

对象变量赋值
与数组相同,只是那块区域的管理者,要想比较的利用equals

if (input == "bye") {...}
#比较是否为同一个
if (input.equals("bye"){''')
#比较内容是否相同

举个栗子

String s;
s = in.next();
System.out.println(s);
System.out.println(s=="bye");

输出就为false,这是由于它们所指的内存不同

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

s1.compareTo(s2)

如果s1比s2小,则结果为负,如果s1,s2相等,那么结果为0,如果s1比s2大,则结果为正
compareToIgnoreCase可以不区分大小写来比较大小

String s1 = "abc";
String s2 = "abcd";
System.out.println(s1.compareTo(s2));

输出为-1

string长度的获取
用Length函数

String name = "hellola";
String str1 = "one";
String str2 = "";
String str3 ;

输出分别为

7
3
0
Error

访问String里的字符
s.charAt(index)

  • 返回在index上的单个字符
  • index的范围是0到length-1
  • 第一个字符的index是0,和数组一样
  • 但不能用for-each来遍历字符串(由于它不是枚举类型)

得到子串

  • s.substring(n)
    得到从n号位置到末尾的全部内容
  • s.substring(b,e)
    得到从b号位置到e号位置之前的内容
String s1 = "01234sdf";
System.out.println(s1.substring(2));
System.out.println(s1.substring(2,4));

寻找字符

  • s.index0f©
    得到c字符所在的位置,-1表示不存在
  • s.index0f(c,n)
    从n号位置开始寻找c字符
  • s.index0f(t)
    找到字符串t所在的位置(得到结果为字符串第一个字符所在位置)

从右边开始找(同上)

  • s.lastIndex0f©
  • s.lastIndex0f(c,n)
  • s.lastIndex0f(t)
String s1 = "0123A56789";
System.out.println(s1.index0f('4');
System.out.println(s1.index0f('A');

输出

-1
4
String s1 = "0123A56389";
int loc = s1.index0f('3');
System.out.println(s1.index0f('3',loc+1));
System.out.println(s1.index0f”A56"));

输出为
7
4

其他的String操作

  • s.startWith(t)
  • s.endWith(t)
  • s.trim()
  • s.replace(c1,c2) 把所有的c1用c2来代替
  • s.toLowerCase() //都转换为小写
  • s.toUpperCase() //都转换为大写

我们可以很容易知道这些用法的意思,所以我们就不详细说了

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

String s = "abs";
System.out.println(s.toUpperCase());
System.out.println(s);

这个写法是错误的,会导致报错
我们应该这样写

String s = "abs";
String s2 = s1.toUpperCase();
System.out.println(s2);
发布了78 篇原创文章 · 获赞 181 · 访问量 8681

猜你喜欢

转载自blog.csdn.net/qq_44790423/article/details/100858726