第6周 使用对象
6.1 字符类型
-
单个的字符是一种特殊的类型:
char
- 用单引号表示的字符:
'a',
,'1'
- Java使用Unicode来表示字符,可以表达包括汉字在内的多种文字
- 用单引号表示的字符:
-
字符计算
- 一个字符加一个数字得到Unicode码表中的那个数之后的字符
- 两个字符的减,得到它们在表中的距离
char
可以和int
之间相互转换和赋值
char c = 'A';
c++;
System.out.println(c);
//B
int b = 'Z'-'A';
System.out.println(b);
//25
-
大小写转换
char d=od+'A'-'a'
-
字符可以比较大小,依据是它们在Unicode表中的编号
-
逃逸字符
- 用来表达无法印出来的控制字符或特殊字符,它由一个反斜杠""开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符
字符 意义 字符 意义 \b 回退一格 " 双引号 \t 到下一个表格位 ’ 单引号 \n 换行 \ 反斜杠本身 \r 回车
6.2 包裹类型
包裹类型
基础类型 | 包裹类型 |
---|---|
boolean | Boolean |
char | Character |
int | Integer |
double | Double |
包裹类型除了完成基础类型的功能以外,还提供了若干操作方法
- int整数类型占位4Byte --> 32bit,能够表达整数的范围是[ $-2{31},2{31}-1 $]
Integer.MIN_VALUE//获得int最小值
Integer.MAX_VALUE//获得int最大值
- 字符串大小写转换、判断

Math类
6.3 字符串
字符串变量和数组变量类似,它并不存放字符串,不是字符串的所有者,它是字符串的管理者。
Java的字符串还是一种特殊的“不可变”对象,所有的字符串操作都是产生一个新的字符串,而不是对原来的字符串的修改。对这一点的理解颇为重要。
- 用双引号括起来的0个或多个字符就是一个字符串字面量
- “hello”
- “1”
字符串
- String s;
- String是一个类,String的变量是对象的管理者而非所有者
- 类似于数组变量是数组的管理者而非所有者
new=创建
String s = new String("a string");
- 创建了一个String的对象
- 用"a string"初始化这个对象
- 创建管理这个对象的变量s
- 让s管理这个对象
初始化字符串变量
String s = "hello";
- 编译器帮你创建一个String类的对象,管理权限交给s
字符串连接
-
用加号(+)可以连接两个字符串
- “hello”+“world”–>“helloworld”
-
当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串然后做连接
-
"I’m "+18–>“I’m 18”
-
1+2+“age”–>“3age”
-
“age”+1+2–>“age12”
-
输入字符串
in.next();
读入一个单词,单词的标志是空格、tab、换行in.nextLine();
读入一整行
字符串变量
对象变量的赋值
- 字符串变量中,a、b是管理者,不是所有者。b=a是b和a都管理a的字符串
- int变量中,a、b是所有者,b=a是改变本身

比较两个String:同一个or相同?
==
比较两个管理者是否管理同一个字符串对象
if(input == "bye"){
...
}
.equals()
比较两个管理者分别管理的字符串对象的内容是否相同
if(input.equals("bye")){
...
}
字符串运算
字符串操作
- 字符串是对象,对它的所有操作都是通过
.
这个运算符来进行的- 字符串
.
操作
- 字符串
- 它表示对
.
左边的这个字符串做右边的那个操作 - 这里的字符串可以是变量也可以是常量
Strings大小的比较
- 两个字符串可以比较大小:
s1.compareTo(s2)
//如果s1比s2小,那么结果是负的;
//如果s1和s2相等,那么结果是0;
//如果s1比s2大,那么结果是正的;
compareToIgnoreCase
可以不区分大小写地比较大小
获得String的长度
- 用
length()
函数
String name = "Hellola";
name.length();
访问String里的字符
s.charAT(index);
- 返回在index上的单个字符
- index的范围是0到length()-1
- 第一个字符的index是0,和数组一样
- 但是不能用for-each循环来遍历字符串:for-each只对可枚举的对象有用
得到子串
- 得到n号位置到末尾的全部内容
s.substring(n);
- 得到[b,e)子串内容,左闭右开
s.substring(b,e)
寻找字符
- 查找字符
s.index0f(c)
得到c字符所在的位置,-1表示不存在
s.index0f(c,n)
从n号位置开始寻找c字符
s.index0f(t)
找到字符串t所在的位置
- 从右边开始找
s.lastIndex0f(c)
s.lastIndex0f(c,n)
s.lastIndex0f(t)
其它String操作
s.startsWith(t)
s.endsWith(t)
s.trim()
s.replace(c1,c2)
s.toLowerCase()
s.toUpperCase()
不可变的String
-
所有的字符串都是不可变的,对它们的操作的结果是制造新的字符串出来
String s = "abc"; System.out.println(s.toUpperCase()); System.lut.println(s); //abc
在switch-case中使用字符串
switch(s){
case "this"....break;
case "that"....break;
}