5.1 字符类型
5.1.1 字符类型
- 单个的字符是一种特殊的类型:char
- 用单引号表示的字符字面量:’a’,’1’
- Java使用Unicode来表示字符,可以表达包括汉字在内的多种文字
字符计算
char c = 'A';
c++;
System.out.println(c);
int i = 'Z' - 'A';
System.out.println(i);
- 一个字符加一个数字得到Unicode码表中那个数之后的字符
- 两个字符的减,得到它们在表中的距离
- 字母和数字在Unicode表中是顺序排列的
- ‘a’-‘A’可以得到两段之间的距离
- 大小写转换
char c = 'D';
char d = (char)(c + 'a' - 'A');
System.out.println(d);
- 字符可以被比较大小,依据是它们在Unicode表中的编号
- ‘0’->‘9’
- ‘A’->‘Z’
- ‘a’->‘z’
- ‘Z’<‘a’
5.1.2 逃逸字符
- 用来表达无法印出来的控制字符或特殊字符,它由一个反斜杠“\”开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符
- \b:回退一格
- \”:双引号
- \t:到下一个表格位
- \’:单引号
- \n:换行
- \:反斜杠本身
- \r:回车
System.out.println("abc\bd");
5.2 包裹类型
基础类型 |
包裹类型 |
boolean |
Boolean |
char |
Character |
int |
Integer |
double |
Double |
- Integer i = 10;
- Integer i = new Integer(10);
- Integer i = new Integer(“10”);
- 获得该类型的最大值最小值
- Integer.MIN_VALUE
- Integer.MAX_VALUE
- 当需要让一个类或对象做事情的时候,用.运算符
- Character.isDigit(char ch)
- Character.toLowerCase(char ch)
5.3 字符串类型
5.3.1 字符串变量
- 用双引号括起来的0个或多个字符就是一个字符串字面量
- String是一个类,string的变量是对象的管理者而非所有者
- String s = new String(“a string”);
- 创建了一个String的对象
- 用”a string”初始化这个对象
- 创建管理这个对象的变量s
- 让s管理这个对象
- 用加号(+)可以连接两个字符串
- 当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串然后做连接
输入字符串
- in.next();读入一个单词,单词的标志是空格
- in.nextLine();读入一整行
对象变量的赋值
- int a=1,b=2;
- 把a的值赋给b
- b=a;
- 因为a和b都有自己的存储空间
- 所以b得到了a里面的值
- String a;String b;
- b=a;
- 让a和b共同管理了原来a所管理的那个字符串
比较两个String
- == 比较是否是同一个
- .equals比较内容是否相同
5.3.2 字符串操作
- 字符串是对象,对它的所有操作都是通过“.”这个运算符来进行的
- 它表示对.左边的这个字符串做右边的那个操作
- 这里的字符串可以是变量也可以是常量
String比较大小
- 两个字符串可以比较大小:s1.compareTo(s2)
- 如果s1比s2小,那么结果是负的;如果s1和s2相等,那么结果是0;如果s1比s2大,那么结果是正的
- compareToIgnoreCase可以不区分大小写地来比较大小
package com.meteor.string;
public class Main {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abb";
System.out.println(s1.compareTo(s2));
}
}
- 用length()函数获得String的长度
- s.charAt(index)访问String里的字符
package com.meteor.string;
public class Main {
public static void main(String[] args) {
String s1 = "abc";
for (int i = 0; i < s1.length(); i++) {
System.out.println(s1.charAt(i));
}
}
}
package com.meteor.string;
public class Main {
public static void main(String[] args) {
String s1 = "0123456789";
System.out.println(s1.substring(2));
System.out.println(s1.substring(2,4));
}
}
- 使用s.indexOf(c)寻找字符串s是否存在c字符
package com.meteor.string;
public class Main {
public static void main(String[] args) {
String s1 = "0123A563789";
System.out.println(s1.indexOf('4'));
System.out.println(s1.indexOf('A'));
System.out.println(s1.indexOf("A56"));
System.out.println(s1.indexOf('3'));
int loc = s1.indexOf('3');
System.out.println(s1.indexOf('3',loc+1));
System.out.println(s1.lastIndexOf('3'));
}
}
不可变的String
- 所有的字符串都是不可变的,对它们的操作的结果都是制造新的字符串出来
package com.meteor.string;
public class Main {
public static void main(String[] args) {
String s = "abc";
System.out.println(s.toUpperCase());
System.out.println(s);
}
}
- 在java1.7版本后,String支持switch-case
package com.meteor.string;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String week = in.next();
switch (week) {
case "monday":
System.out.println("周一");
break;
case "sunday":
System.out.println("周日");
break;
}
}
}
5.4 Math类
- abs,求绝对值
- pow,次方
- random,随机数,从0-1之间的随机数
- round,四舍五入
package com.meteor.string
import java.util.Scanner
public class Main {
public static void main(String[] args) {
System.out.println(Math.abs(-19))
System.out.println(Math.pow(2, 4))
System.out.println((int) (Math.random() * 100))
System.out.println(Math.round(5.68))
}
}