Skip to content

Commit b785252

Browse files
committed
updates
1 parent d1c6130 commit b785252

13 files changed

+354
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
* [String类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第4章%20常见对象/String类.html)
5353
* [正则表达式](https://alleniverson.gitbooks.io/java-basic-introduction/content/第4章%20常见对象/正则表达式.html)
5454
* [字符串格式化](https://alleniverson.gitbooks.io/java-basic-introduction/content/第4章%20常见对象/字符串格式化.html)
55+
* [System类和Runtime类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第4章%20常见对象/System类和Runtime类.html)
56+
* [Math类和Random类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第4章%20常见对象/Math类和Random类.html)
5557
* [第5章 多线程](https://alleniverson.gitbooks.io/java-basic-introduction/content/第5章%20多线程/README.html)
5658
* [多线程](https://alleniverson.gitbooks.io/java-basic-introduction/content/第5章%20多线程/多线程.html)
5759
* [线程池](https://alleniverson.gitbooks.io/java-basic-introduction/content/第5章%20多线程/线程池.html)

SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
* [String类](第4章 常见对象/String类.md)
4545
* [正则表达式](第4章 常见对象/正则表达式.md)
4646
* [字符串格式化](第4章 常见对象/字符串格式化.md)
47+
* [System类和Runtime类](第4章 常见对象/System类和Runtime类.md)
48+
* [Math类和Random类](第4章 常见对象/Math类和Random类.md)
4749

4850
----
4951

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
---
2+
typora-copy-images-to: img
3+
---
4+
5+
### Math类
6+
7+
Math类是数学操作类,Math类提供了常用的一些数学函数,如:三角函数、对数、指数等。一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可。
8+
9+
Math类中有两个静态常量PI和E,分别代表数学常量π和e。
10+
11+
```java
12+
Math.abs(12.3); //12.3 返回这个数的绝对值
13+
Math.abs(-12.3); //12.3
14+
15+
Math.copySign(1.23, -12.3); //-1.23,返回第一个参数的量值和第二个参数的符号
16+
Math.copySign(-12.3, 1.23); //12.3
17+
18+
Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0
19+
Math.signum(12.3); //1.0
20+
Math.signum(-12.3); //-1.0
21+
Math.signum(0); //0.0
22+
23+
24+
//指数
25+
Math.exp(x); //e的x次幂
26+
Math.expm1(x); //e的x次幂 - 1
27+
28+
Math.scalb(x, y); //x*(2的y次幂)
29+
Math.scalb(12.3, 3); //12.3*2³
30+
31+
//取整
32+
Math.ceil(12.3); //返回最近的且大于这个数的整数13.0
33+
Math.ceil(-12.3); //-12.0
34+
35+
Math.floor(12.3); //返回最近的且小于这个数的整数12.0
36+
Math.floor(-12.3); //-13.0
37+
38+
//x和y平方和的二次方根
39+
Math.hypot(x, y); //√(x²+y²)
40+
41+
//返回概述的二次方根
42+
Math.sqrt(x); //√(x) x的二次方根
43+
Math.sqrt(9); //3.0
44+
Math.sqrt(16); //4.0
45+
46+
//返回该数的立方根
47+
Math.cbrt(27.0); //3
48+
Math.cbrt(-125.0); //-5
49+
50+
//对数函数
51+
Math.log(e); //1 以e为底的对数
52+
Math.log10(100); //10 以10为底的对数
53+
Math.log1p(x); //Ln(x+ 1)
54+
55+
//返回较大值和较小值
56+
Math.max(x, y); //返回x、y中较大的那个数
57+
Math.min(x, y); //返回x、y中较小的那个数
58+
59+
//返回 x的y次幂
60+
Math.pow(x, y);
61+
Math.pow(2, 3); //即2³ 即返回:8
62+
63+
//随机返回[0,1)之间的无符号double值
64+
Math.random();
65+
66+
//返回最接近这个数的整数,如果刚好居中,则取偶数
67+
Math.rint(12.3); //12.0
68+
Math.rint(-12.3); //-12.0
69+
Math.rint(78.9); //79.0
70+
Math.rint(-78.9); //-79.0
71+
Math.rint(34.5); //34.0
72+
Math.rint(35.5); //36.0
73+
74+
Math.round(12.3); //与rint相似,返回值为long
75+
76+
//三角函数
77+
Math.sin(α); //sin(α)的值
78+
Math.cos(α); //cos(α)的值
79+
Math.tan(α); //tan(α)的值
80+
81+
//求角
82+
Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
83+
Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
84+
Math.atan(y/x); //返回角度值[-π/2,π/2]
85+
Math.atan2(y-y0, x-x0); //同上,返回经过点(x,y)与原点的的直线和经过点(x0,y0)与原点的直线之间所成的夹角
86+
87+
Math.sinh(x); //双曲正弦函数sinh(x)=(exp(x) - exp(-x)) / 2.0;
88+
Math.cosh(x); //双曲余弦函数cosh(x)=(exp(x) + exp(-x)) / 2.0;
89+
Math.tanh(x); //tanh(x) = sinh(x) / cosh(x);
90+
91+
//角度弧度互换 360°角=2π弧度
92+
Math.toDegrees(angrad); //角度转换成弧度,返回:angrad * 180d / PI
93+
94+
Math.toRadians(angdeg); //弧度转换成角度,返回:angdeg / 180d * PI
95+
96+
Math.PI
97+
```
98+
```java
99+
package cn.itcast.chapter05.example15;
100+
/**
101+
* Math类中比较常见的方法
102+
*/
103+
public class Example15 {
104+
public static void main(String[] args) {
105+
System.out.println("计算绝对值的结果: " + Math.abs(-1));
106+
System.out.println("求大于参数的最小整数: " + Math.ceil(5.6));
107+
System.out.println("求小于参数的最大整数: " + Math.floor(-4.2));
108+
System.out.println("对小数进行四舍五入后的结果: " + Math.round(-4.6));
109+
System.out.println("求两个数的较大值: " + Math.max(2.1, -2.1));
110+
System.out.println("求两个数的较小值: " + Math.min(2.1, -2.1));
111+
System.out.println("生成一个大于等于0.0小于1.0随机值: " + Math.random());
112+
}
113+
}
114+
```
115+
116+
### Random类
117+
118+
在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法,具体如下表所示。
119+
120+
![1500707150203](img/1500707150203.png)
121+
122+
表中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。
123+
124+
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,表中列举了Random类中的常用方法。
125+
126+
![1500707193893](img/1500707193893.png)
127+
128+
表中,列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。
129+
130+
```java
131+
package cn.itcast.chapter05.example16;
132+
import java.util.Random;
133+
/**
134+
* 使用构造方法Random()产生随机数
135+
*/
136+
public class Example16 {
137+
public static void main(String args[]) {
138+
Random r = new Random(); // 不传入种子
139+
// 随机产生10个[0,100)之间的整数
140+
for (int x = 0; x < 10; x++) {
141+
System.out.println(r.nextInt(100));
142+
}
143+
}
144+
}
145+
```
146+
147+
```java
148+
package cn.itcast.chapter05.example17;
149+
import java.util.Random;
150+
/**
151+
* 使用构造方法Random(long seed)产生随机数
152+
*/
153+
public class Example17 {
154+
public static void main(String args[]) {
155+
Random r = new Random(13); // 创建对象时传入种子
156+
// 随机产生10个[0,100)之间的整数
157+
for (int x = 0; x < 10; x++) {
158+
System.out.println(r.nextInt(100));
159+
}
160+
}
161+
}
162+
```
163+
164+
```java
165+
package cn.itcast.chapter05.example18;
166+
import java.util.Random;
167+
/**
168+
* Random类中的常用方法
169+
*/
170+
public class Example18 {
171+
public static void main(String[] args) {
172+
Random r1 = new Random(); // 创建Random实例对象
173+
System.out.println("产生float类型随机数: " + r1.nextFloat());
174+
System.out.println("产生0~100之间int类型的随机数:" + r1.nextInt(100));
175+
System.out.println("产生double类型的随机数:" + r1.nextDouble());
176+
}
177+
}
178+
```

第4章 常见对象/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
* [4.1 String类](String类.md)
44
* [4.2 正则表达式](正则表达式.md)
55
* [4.3 字符串格式化](字符串格式化.md)
6+
7+
API(Application Programming Interface)指的是应用程序编程接口。假设使用Java语言编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样 的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,通常把这些类称为Xxx Robot API(意思就是Xxx厂家的机器人API)。

第4章 常见对象/String类.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ typora-copy-images-to: img
1212

1313
在实际开发中,字符串的操作是最常见的操作,没有之一。而Java没有内置的字符串类型,所以,就在Java类库中提供了一个类String 供我们来使用。String 类代表字符串。
1414

15+
在应用程序中经常会用到字符串,所谓字符串就是指一连串的字符,它是由许多单个字符连接而成的,如多个英文字母所组成的一个英文单词。字符串中可以包含任意字符,这些字符必须包含在一对双引号“”之内,例如“abc”。在Java中定义了String和StringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用。
16+
1517
# **2. String类的特点**
1618
- 字符串是常量,它的值在创建之后不能更改
1719
- Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
@@ -61,6 +63,8 @@ s5 == “hello” + ”world”; //true
6163

6264
# **3. 常见操作方法**
6365

66+
![1500705653143](img/1500705653143.png)
67+
6468
## **3.1 构造方法**
6569
| 方法 | 说明 |
6670
| :------------------------------------ | :------------- |
@@ -721,13 +725,25 @@ public class StringTest5 {
721725
```
722726

723727
# **5. StringBuffer**
728+
由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。
729+
724730
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
725731

726732
- StringBuffer是线程安全的可变字符序列。
727733
- StringBuffer和String的区别?
728734

729735
前者长度和内容可变,后者不可变。如果使用前者做字符串的拼接,不会浪费太多的资源。
730736

737+
String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。
738+
739+
String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法,具体示例如下:
740+
741+
![1500705834086](img/1500705834086.png)
742+
743+
String类对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能,具体示例如下:
744+
745+
![1500705855076](img/1500705855076.png)
746+
731747
# **6. 常见操作方法**
732748

733749
![String字符串](http://img.blog.csdn.net/20161009130440163)

0 commit comments

Comments
 (0)