常用数学函数
Math类中其他有用的方法分为三类:三角函数方法、指数函数方法和服务方法。
其中服务方法包括取整、求最小值、求最大值、求绝对值和随机方法。除了这些方法之外,Math类还提供了两个很用的double型变量,PI(Π)和E(自然对数的底)。可以在任意程序中用Math.PI和Math.E的形式来使用这两个变量。
Math类中的指数函数方法
方法 | 描述 |
exp(x) | 返回e的x次方 |
log(x) | 返回x的自然底数 |
log10(x) | 返回x的以10为底的对数 |
pow(a,b) | 返回a的b次方 |
sqrt(x) | 对于x>=0的数字,返回x的平方根 |
Math类中的取整方法
方法 | 描述 |
ceil(x) | x向上取整为它最接近的整数。该整数作为一个双精度值返回。 |
floor(x) | x向下取整为它最接近的整数。该整数作为一个双精度值返回。 |
rint(x) | x取整为它最接近的整数。如果x与两个整数的距离相等,偶数的整数作为一个双精度值返回。 |
round(x) | 如果x是单精度数,返回(int)Math.floor(x+0.5);如果x是双精度数,返回(long)Math.floor(x+0.5) |
min、max和abs方法
min和max方法用于返回两个数的最小值和最大值。abs方法以返回一个数的绝对值。
random方法
生成大于等于0.0且小于1.0的double型随机数。可以使用它编写简单的表达式,生成任意范围的随机数。例如:a+Math.random()*b——>返回a--a+b之间的一个随机整数,不包括a+b。
Math类在程序中使用,但是并没有导入,因为它在java.lang包中。在一个java程序中,java.lang包中的所有类是隐式导入的。
字符数据类型和操作
特殊字符的转义序列
java定义了一种特殊的标记来表示特殊字符,这种标记称为转义序列,转义序列由反斜杠( \ )后面加上一个字符或者一些数字位组成。
System.out.println("He said\"Java is fun\"");
它的输出是:
He said "Java is fun"
注意,符号 \ 和 " 一起代表一个字符。
转义序列
转义序列 | 名称 |
\b | 退格键 |
\t | Tab键 |
\n | 换行符 |
\f | 换页符 |
\r | 回车符 |
\\ | 反斜杠 |
\" | 双引号 |
反斜杠 \ 被称为转义字符。他是一个特殊字符。要显示这个字符,需要使用转义序列 \\ 。比如,下面的代码:
System.out.println("\\t is a tab character");
显示
\t is a tab character
判断是大写字母、小写字母、数字字符
if(ch >= 'A' && ch <= 'Z')
System.out.println(ch + "is an uppercase letter");
else if(ch >= 'a' && ch <= 'z')
System.out.println(ch + "is an lowercase letter");
else if(ch >= '0' && ch <= '9')
System.out.println(ch + "is an numeric letter");
为了方便,Java的Character类提供了下列方法用于进行字符测试:
方法 | 描述 |
isDigit(ch) | 如果指定的字符是一个数字,返回true |
isLetter(ch) | 如果指定的字符是一个字母,返回true |
isLetterOrDigit(ch) | 如果指定的字符是一个字母或者数字,返回true |
isLowerCase(ch) | 如果指定的字符是一个小写字母,返回true |
isUpperCase(ch) | 如果指定的字符是一个大写字母,返回true |
toLowerCase(ch) | 返回指定的字符的小写形式 |
toUpperCase(ch) | 返回指定的字符的大写形式 |
String类型
String实际上与System类和Scanner类一样,都是java库中的一个预定义的类。String类型不是基本类型,而是引用类型。任何java类都可以将变量表示为引用变量。使用引用类型声明的变量称为引用变量,它引用一个对象。这里,message是一个引用变量,它引用一个内容为Welcome to Java的字符串对象。
String message = "Welcome to Java";
求字符串长度
String message = "Welcome to Java";
System.out.println("The length of " + message + "is" + message.length());
注意,""表示空字符串,并且"".length()为0.
从字符串中获取字符
message.charAt(0)返回字符W
注意:要确保使用的下标不会超过 s.length()-1。
连接字符串
可以使用concat方法连接两个字符串。例如,如下所示的语句将字符串s1和s2连接构成s3:
String s3 = s1.concat(s2);
因为字符串连接在程序设计中应用非常广泛,所以Java提供了一种实现字符串连接的简便方法。可以使用加号(+)连接两个或多个字符串。因此,上面的语句等价于:
String s3 = s1 + s2;
//String myString = message + " and " + "HTML"
如果操作数之一不是字符串(比如,一个数字),非字符串值转换为字符串,并于另外一个字符串连接。示例:
String s = "Chapter" + 2;//s becomes Chapter2
字符串的转换
方法toLowerCase( )返回一个新字符串,其中所有字母小写;方法toUpperCase( )返回一个新字符串,其中所有字母大写;方法trim( )通过删除字符串两端的空白字符返回一个新字符串。字符' '、\t、\f、\r或者\n被称为空白字符。
"Welcome".toLowerCase();//返回一个新字符串welcome
"Welcome".toUpperCase();//返回一个新字符串WELCOME
"\t Good Night \n".trim();//返回一个新字符串Good Night
从控制台读取字符串
为了从控制台读取字符串,调用Scanner对象上的next()方法。next()方法读取以空白字符结束的字符串(即' '、'\t'、'\f'、'\r'或'\n')。可以使用nextline()方法读取一整行文本。nextline()方法读取以按下回车键为结束标志的字符串。
重要警告:为了避免输入错误,不要在nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()和next()之后使用nextline()。
字符串比较
方法 | 描述 |
equals(s1) | 如果该字符串等于字符串s1,返回true |
equalsIgnoreCase(s1) | 如果该字符串等于字符串s1,返回true;不区分大小写 |
compareTo(s1) | 返回一个大于0、小于0、等于0的整数,表明一个字符串是否大于、等于或小于s1 |
compareToIgnoreCase(s1) | 和compareTo一样,除了比较是区分大小写的之外 |
startsWith(prefix) | 如果字符串以特定的前缀开始,返回true |
endsWith(prefix) | 如果字符串以特定的后缀开始,返回true |
contains(s1) | 如果s1是该字符串的子字符串,返回true |
操作符==只能检测string1和string2是否指向同一个对象,但它不会告诉你他们的内容是否相同。因此,不能使用==操作符判断两个字符串变量的内容是否相同。
compareTo方法也用来对两个字符串进行比较。如果s1和s2相等,那么该方法返回值为0;如果按字典顺序(即以Unicode码的顺序)s1小于s2,那么方法返回值小于0;如果按字典顺序s1大于s2,方法返回值大于0.
方法compareTo返回的实际值是根据s1和s2从左到右第一个不同字符之间的距离得出的,例如,假设s1为“abc”,s2为“abg”,那么s1.compareTo(s2)返回-4.首先比较的是s1和s2中第一个位置的两个字符(a与a)。因为它们相等,所以比较第二个位置的两个字符(b与b)。因为他们也相等,所以比较第三个位置的两个字符(c与g)。由于字符c比字符g小4,所以比较之后返回-4。
警告:如果使用像>、>=、<或<=这样的比较操作符比较两个字符串,就会发生语法错误。替代的方法就是使用s1.compareTo(s2)来进行比较。
获得子字符串
方法s.charAt(index)可用于提取字符串s中的某个特定字符。也可以使用String类中的substring方法从字符串中提取字串。
方法 | 描述 |
substring(beginIndex) | 返回该字符串的子串,从特定位置beginIndex的字符开始到字符串的结尾 |
substring(beginIndex,endIndex) | 返回该字符串的字串,从特定位置beginIndex的字符开始到下标为endIndex-1的字符。注意,位于endIndex位置的字符不属于该子字符串的一部分 |
获取字符串中的字符或者子串
方法 | 描述 |
indexOf(ch) | 返回字符串中出现的第一个ch的下标。如果没有匹配的,返回-1 |
indexOf(ch,fromIndex) | 返回字符串中fromIndex之后出现的第一个ch的下标。如果没有匹配的,返回-1. |
indexOf(s) | 返回字符串中出现的第一个字符串s的下标。如果没有匹配的,返回-1. |
indexOf(s,fromIndex) | 返回字符串中fromIndex之后出现的第一个字符串s的下标。如果没有匹配的,返回-1. |
lastIndexOf(ch) | 返回字符串中出现的最后一个ch的下标。如果没有匹配的,返回-1. |
lastIndexOf(ch,fromIndex) | 返回字符串中fromIndex之前出现的最后一个下标。如果没有匹配的,返回-1. |
lastIndexOf(s) | 返回字符串中出现的最后一个字符串s的下标。如果没有匹配的,返回-1. |
lastIndexOf(s,fromIndex) | 返回字符串中fromIndex之前出现的最后一个字符串s的下标。如果没有匹配的,返回-1. |
字符串和数字间的转换
可以将数值型字符串转换为数值。要将字符串转换为int值,使用Integer.parseInt方法,如下所示:
int intVaule = Integer.parseInt(intString);
//intString是一个数值型字符串,例如"123"
要将字符串转换为double值,使用Double.parseDouble方法,如下所示:
double doubleVaule = Double.parseDouble(doubleString);
//doubleString 是一个数值型字符串,例如"123.45"
可以将数值转换为字符串,只需要简单使用字符串的连接操作符,如下所示:
String s = number + "";
格式化控制台输出
可以使用System.out.printf方法在控制台上显示格式化输出。
double amount = 12618.98;
double interestRate = 0.0013;
double interest = amount * interestRate;
System.out.printf("Interest is $%4.2f",interest);
//Interest is $16.40
%4.2f叫做格式标识符,其中4为域宽度,2为精度,f为转换码。
调用这个方法的语法是:System.out.printf(format,item1,item2,...,itemk)这里的format是指一个由子串和格式标识符构成的字符串
常用的格式标识符
标识符 | 输出 | 标识符 | 输出 |
%b | 布尔值 | %f | 浮点数 |
%c | 字符 | %e | 标准科学记数法形式的数 |
%d | 十进制整数 | %s | 字符串 |
条目与标识符必须在次序、数量和类型上匹配。默认情况下,浮点值显示小数点后6位数字。可以在标识符中指定宽度和长度。