|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
数学运算和C的math标准库相似;字符与字符窜与C的差别很大。
|
|
|
|
|
|
|
|
|
|
## 数学运算
|
|
|
|
|
## 1. 数学运算
|
|
|
|
|
|
|
|
|
|
数学运算库(API)所涵盖的东西很多,包括:取整、三角函数、幂运算、矩阵等,这里我们只讨论该库的基本使用和常用函数。
|
|
|
|
|
|
|
|
|
@ -17,7 +17,7 @@
|
|
|
|
|
3. 随机数函数:Rounding Methods
|
|
|
|
|
4. min, max, abs, and random Methods
|
|
|
|
|
|
|
|
|
|
### 取整函数
|
|
|
|
|
### 1.1. 取整函数
|
|
|
|
|
|
|
|
|
|
1. double ceil(double x) x round up to its nearest integer. This integer is returned as a double value.
|
|
|
|
|
2. double floor(double x) x is rounded down to its nearest integer. This integer is returned as a double value.
|
|
|
|
@ -48,7 +48,7 @@ Math.round(-2.0f) returns -2
|
|
|
|
|
Math.round(-2.6) returns -3
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### min, max, and abs
|
|
|
|
|
### 1.2. min, max, and abs
|
|
|
|
|
|
|
|
|
|
1. max(a, b)and min(a, b) Returns the maximum or minimum of two parameters.
|
|
|
|
|
2. abs(a) Returns the absolute value of the parameter.
|
|
|
|
@ -64,11 +64,11 @@ Math.min(2.5, 3.6) returns 2.5
|
|
|
|
|
Math.abs(-2) returns 2
|
|
|
|
|
Math.abs(-2.1) returns 2.1
|
|
|
|
|
```
|
|
|
|
|
### The random Method
|
|
|
|
|
### 1.3. The random Method
|
|
|
|
|
|
|
|
|
|
略
|
|
|
|
|
|
|
|
|
|
## 字符类型
|
|
|
|
|
## 2. 字符类型
|
|
|
|
|
|
|
|
|
|
Java有专有的char类型,这个类型和C的字符类型是不同的。只需要记住Java的字符类型支持Unicode就可以了,关于char类型,不是我们讨论的重点。
|
|
|
|
|
|
|
|
|
@ -76,14 +76,14 @@ char对应的类类型(包装类型)是Character。
|
|
|
|
|
|
|
|
|
|
char类型是有序的(类似整形),整形可以使用的运算符都可以使用在 char 上面。
|
|
|
|
|
|
|
|
|
|
### char和整形的转换
|
|
|
|
|
### 2.1. char和整形的转换
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
int i = 'a'; // Same as int i = (int)'a';
|
|
|
|
|
char c = 97; // Same as char c = (char)97;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### char的比较
|
|
|
|
|
### 2.2. char的比较
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
if (ch >= 'A' && ch <= 'Z')
|
|
|
|
@ -93,14 +93,14 @@ char c = 97; // Same as char c = (char)97;
|
|
|
|
|
else if (ch >= '0' && ch <= '9')
|
|
|
|
|
System.out.println(ch + " is a numeric character");
|
|
|
|
|
```
|
|
|
|
|
### 字符类型的相关函数
|
|
|
|
|
### 2.3. 字符类型的相关函数
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
上述这些函数不能直接调用,而是在 Character 这个类中,因此如果你要调用上述的函数,需要使用 Character.xxx 这样的方式。所有的函数都是静态函数,静态函数,关于静态函数我们会在学习类的时候进行学习,目前我们用到的都是静态函数。
|
|
|
|
|
|
|
|
|
|
## 字符串
|
|
|
|
|
## 3. 字符串
|
|
|
|
|
|
|
|
|
|
### 字符串的初始化和赋值
|
|
|
|
|
### 3.1. 字符串的初始化和赋值
|
|
|
|
|
|
|
|
|
|
字符串与C完全不一样,Java中的字符串的类型是 String 。注意,以前在Java中出现的类型都是小写开头的,这是第一个大写开头的,因此这个是一个类的类型,而不是普通类型。前面讲到过,类是抽象描述(类似结构体指针),如果来实例化(成为可操作的对象)需要使用new 操作生成一个对象。这里我们看看字符串是如何生成的。
|
|
|
|
|
|
|
|
|
@ -131,11 +131,11 @@ public class Main {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### 字符串操作
|
|
|
|
|
### 3.2. 字符串操作
|
|
|
|
|
|
|
|
|
|
既然字符串是一个对象,那么就可以用对象的方式来操作字符串。在上述例子中,试试在 s1 这个变量后面输入一个点(.),Eclipse将提示该对象上面的属性和方法(有括号的是方法\\函数,没有括号的是属性\\对象中的变量)。
|
|
|
|
|
|
|
|
|
|
#### 字符串对象的基本操作函数
|
|
|
|
|
#### 3.2.1. 字符串对象的基本操作函数
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
@ -150,7 +150,7 @@ public class Main {
|
|
|
|
|
```
|
|
|
|
|
这里不可能解释所有字符串对象的函数,请参考在线文档。
|
|
|
|
|
|
|
|
|
|
#### 字符串连接
|
|
|
|
|
#### 3.2.2. 字符串连接
|
|
|
|
|
|
|
|
|
|
字符串连接可以使用算术运算符(+),也可以使用对象函数:
|
|
|
|
|
|
|
|
|
@ -174,7 +174,7 @@ public class Main {
|
|
|
|
|
```
|
|
|
|
|
**其实,字符串可以和几乎所有类型的变量或者字面量进行连接,这一点我们在后面还会遇到。更多的原理要我们学了类的继承才能理解。**
|
|
|
|
|
|
|
|
|
|
#### 从控制台读取字符串
|
|
|
|
|
#### 3.2.3. 从控制台读取字符串
|
|
|
|
|
|
|
|
|
|
前面学习了如何从控制台读取数值类型的值,这里我们看看如何读取字符串/字符。
|
|
|
|
|
|
|
|
|
@ -199,13 +199,13 @@ public class Main {
|
|
|
|
|
|
|
|
|
|
next() 是以空格区分字符串的,如果我们需要读取一段字符串,本身包含空格,这就需要使用 nextLine() 这个函数。试试把next() 改成 nextLine() 会是什么结果。nextLine()是以回车进行区分的。
|
|
|
|
|
|
|
|
|
|
#### 字符串比较
|
|
|
|
|
#### 3.2.4. 字符串比较
|
|
|
|
|
|
|
|
|
|
这些函数都是只能在对象上面进行操作的,想一想为什么?
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
#### 子串操作
|
|
|
|
|
#### 3.2.5. 子串操作
|
|
|
|
|
|
|
|
|
|
你可以把字符串看作是特殊的数组,使用索引来切取一个字符串的子串,注意,索引时从0开始的。
|
|
|
|
|
|
|
|
|
@ -213,13 +213,13 @@ next() 是以空格区分字符串的,如果我们需要读取一段字符串
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
#### 字符或者是子串查找
|
|
|
|
|
#### 3.2.6. 字符或者是子串查找
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
**这里会发现很多函数名是一样的,Java使用参数来具体决定调用哪一个函数,这种方式叫做函数重载(overload),后面我们会具体学到函数重载的技术。简单说来,函数重载是指可以通过传输参数来唯一确定一个同名函数的技术;这就要求同名函数的参数个数不一样,或者是类型不一样。**
|
|
|
|
|
|
|
|
|
|
#### 字符串与数字的转换
|
|
|
|
|
#### 3.2.7. 字符串与数字的转换
|
|
|
|
|
|
|
|
|
|
字符串转换成相应的数值类型:
|
|
|
|
|
|
|
|
|
@ -248,7 +248,7 @@ public class Main {
|
|
|
|
|
```java
|
|
|
|
|
String sA = 100 + "";
|
|
|
|
|
```
|
|
|
|
|
#### 格式化字符串
|
|
|
|
|
#### 3.2.8. 格式化字符串
|
|
|
|
|
|
|
|
|
|
格式化字符串如同C语言的printf方法,甚至连占位符和格式方法都一模一样。如果要输出一个字符串,可以使用 System.out.printf 方法。
|
|
|
|
|
|
|
|
|
@ -273,7 +273,7 @@ public class Main {
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
## 本章重点
|
|
|
|
|
## 4. 本章重点
|
|
|
|
|
|
|
|
|
|
1. 数学类:PI常量、取整、随机、最大、最小、绝对值等常用静态函数;
|
|
|
|
|
2. 字符类型:
|
|
|
|
|