Skip to content

Commit d1c6130

Browse files
committed
updates
1 parent ea778f0 commit d1c6130

19 files changed

+317
-9
lines changed

第1章 Java开发入门/Java概述.md

+68-8
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ public static void main(String [] args){
329329

330330
在计算机操作系统中可以定义一系列变量,这些变量可供操作系统上所有的应用程序使用,被称作系统环境变量。在学习Java的过程中,需要涉及两个系统环境变量path和classpath
331331

332-
## path环境变量
332+
## 5.1 path环境变量
333333

334334
path环境变量是系统环境变量中的一种,它用于保存一系列的路径,每个路径之间以分号分隔。当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path环境变量中定义的路径下寻找这个文件,如果仍未找到,系统会报错。例如,在命令行窗口输入“javac”命令,并按下回车,会看到错误提示。如下图所示:
335335

@@ -386,7 +386,7 @@ Files\Java\jdk1.7.0_60\bin”,末尾用英文半角分号(;)结束,与后面
386386

387387
从上图中环境变量path值的第一行中,已经显示出来配置路径信息。在命令行窗口中执行javac命令,如果能正常地显示帮助信息,说明系统path环境变量配置成功,这样系统就永久性地记住了path环境变量的设置。
388388

389-
## classpath环境变量
389+
## 5.2 classpath环境变量
390390

391391
classpath环境变量也用于保存一系列路径,它和path环境变量的查看与配置的方式完全相同。当Java虚拟机需要运行一个类时,会在classpath环境变量中所定义的路径下寻找所需的class文件。
392392

@@ -410,12 +410,12 @@ set classpath=C:\Program Files\Java\jdk1.7.0_60\bin
410410

411411
值得注意的是,在1.3小节中并没有对classpath环境变量进行设置,但在“C:\Program Files \Java\jdk1.7.0_60\bin”目录下仍然可以使用“java”命令正常运行程序,而没有出现无法找到“HelloWorld.class”文件的错误。这是因为从JDK5.0开始,如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。
412412

413-
## 5.1 path环境变量配置的作用
413+
## 5.3 path环境变量配置的作用
414414

415415
- 程序的执行需要使用外部指令javac,但是javac指令仅仅能在JDK安装目录下的bin目录下时候,因此程序只能写入bin目录
416416
- 程序开发过程中,不能将源代码写入JDK的安装目录,因此需要将源程序保存到任意位置的指定目录(英文目录),所以需要使javac指令在任意目录下可以运行
417417

418-
### 5.1.1 path环境变量配置方式1
418+
### 5.3.1 path环境变量配置方式1
419419

420420
通过配置path环境变量,将javac指令所在目录也就是JDK安装目录下的bin目录配置到path变量下,即可使javac指令在任意目录下运行
421421

@@ -425,15 +425,15 @@ XP系统:右键点击桌面计算机→选择属性→选择高级选项卡→
425425

426426
将jdk安装目录下的bin目录添加到最左边并添加分号
427427

428-
### 5.1.2 path环境变量配置方式2
428+
### 5.3.2 path环境变量配置方式2
429429
path环境变量的参照形配置方式
430430

431431
- 创建新的变量名称:JAVA_HOME
432432
- 为JAVA_HOME添加变量值:JDK安装目录
433433
- 将path环境变量中JDK目录修改:%JAVA_HOME%\bin;
434434
- path环境变量具有先后顺序
435435

436-
### 5.1.3 classpath环境变量配置方式
436+
### 5.3.3 classpath环境变量配置方式
437437
classpath环境变量配置方式
438438

439439
- 创建新的变量名称:classpath
@@ -442,7 +442,67 @@ classpath环境变量配置方式
442442

443443
技巧:通常将配置的目录最前面添加.配置,即便当前目录,使.class文件搜索时首先搜索当前目录,然后根据目录配置的顺序依次查找,找到后即运行,因此classpath目录中的配置存在先后顺序
444444

445-
## 5.2 path和classpath的区别
445+
## 5.4 path和classpath的区别
446446

447447
- path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找
448-
- classpath环境变量里记录的是java类的运行文件所在的目录
448+
- classpath环境变量里记录的是java类的运行文件所在的目录
449+
450+
# 6. Java的运行机制
451+
452+
使用Java语言进行程序设计时,不仅要了解Java语言的显著特点,还需要了解Java程序的运行机制。
453+
454+
Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。
455+
456+
以HelloWorld为例,对Java程序的运行过程进行详细的分析,具体步骤如下:
457+
458+
- 编写一个HelloWorld.java的文件。
459+
- 使用“javac HelloWorld.java”命令开启Java编译器并进行编译。编译结束后,会自动生成一个HelloWorld.class的字节码文件。
460+
- 使用“java HelloWorld”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为类加载,它是由类加载器完成的,然后虚拟机针对加载到内存中的Java类进行解释执行,便可看到运行结果。
461+
462+
通过上面的分析不难发现,Java程序是由虚拟机负责解释执行的,而并非操作系统。这样做的好处是可以实现跨平台性,也就是说针对不同的操作系统可以编写相同的程序,只需安装不同版本的虚拟机即可,如下图所示:
463+
464+
![1500702562133](img/1500702562133.png)
465+
466+
从上图可以看出,不同的操作系统需要使用不同版本的虚拟机,这种方式使得Java语言具有“一次编写,到处运行(write once,run anywhere)”的特性,有效地解决了程序设计语言在不同操作系统编译时产生不同机器代码的问题,大大降低了程序开发和维护的成本。
467+
468+
需要注意的是,Java程序通过Java虚拟机可以达到跨平台特性,但Java虚拟机并不是跨平台的。也就是说,不同操作系统上的Java虚拟机是不同的,即Windows平台上的Java虚拟机不能用在Linux平台上,反之亦然。
469+
470+
# 7. Eclipse开发工具
471+
472+
在实际项目开发过程中,由于使用记事本编写代码速度慢,且不容易排错,所以程序员很少用它来编写代码。为了提高程序的开发效率,大部分软件开发人员都是使用集成开发工具(IDE,Integrated Development Environment)来进行Java程序开发的。正所谓“工欲善其事,必先利其器”,接下来就为读者介绍一种Java常用的开发工具——Eclipse。
473+
474+
Eclipse是由蓝色巨人IBM花费巨资开发的一款功能完整且成熟的IDE集成开发环境,它是一个开源的、基于Java的可扩展开发平台,是目前最流行的Java语言开发工具。Eclipse具有强大的代码编排功能,可以帮助程序开发人员完成语法修正、代码修正、补全文字、信息提示等编码工作,大大提高了程序开发的效率。
475+
476+
Eclipse的设计思想是“一切皆插件”。就其本身而言,它只是一个框架和一组服务,所有功能都是将插件组件加入到Eclipse框架中来实现的。Eclipse作为一款优秀的开发工具,其自身附带了一个标准的插件集,其中包括了Java开发工具(JDK),因此,使用Eclipse工具进行Java程序开发不需要再安装JDK以及配置Java运行环境。下面将为读者具体的讲解Eclipse工具的使用。
477+
478+
# 8. 包的定义与使用
479+
480+
为了便于对硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类在项目中分目录存放,以便于文件管理。为此,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。
481+
482+
Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:
483+
484+
```java
485+
package cn.itcast.chapter01; // 使用package关键字声明包
486+
public class Example01{…}
487+
```
488+
489+
需要注意的是,包的声明只能位于Java源文件的第一行。
490+
491+
在实际程序开发过程中,定义的类都是含有包名的,如果没有显式地声明package语句,创建的类则处于默认包下,在实际开发中,这种情况是不应该出现的,本教材的示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名,但是在提供的源码中,都已使用包名。
492+
493+
在开发时,一个项目中可能会使用很多包,当一个包中的类需要调用另一个包中的类时,就需要使用import关键字引入需要的类。使用import可以在程序中一次导入某个指定包下的类,这样就不必在每次用到该类时都书写完整类名,简化了代码量。使用import关键字的具体格式如下所示:
494+
495+
```java
496+
import 包名.类名;
497+
```
498+
499+
需要注意的是,import通常出现在package语句之后,类定义之前。如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*; ”来导入该包下所有类。
500+
501+
在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java包及其子包下,Java扩展的大部分类都放在javax包及其子包下。为了便于后面的学习,接下来简单介绍Java语言中的常用包。
502+
503+
- java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。
504+
- java.net:包含Java网络编程相关的类和接口。
505+
- java.io:包含了Java输入、输出有关的类和接口。
506+
- java.awt:包含用于构建图形界面(GUI)的相关类和接口。
507+
508+
除了上面提到的常用包,JDK中还有很多其它的包,比如数据库编程的java.sql包,编写GUI的javax.swing包等等,JDK中所有包中的类构成了Java类库。在以后的章节中,这些包中的类和接口将逐渐介绍,这里只需要有个大致印象即可。
50.9 KB
Loading

第2章 Java编程基础/Java语法基础-1.md

+70-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
---
2+
typora-copy-images-to: images
3+
---
4+
15
# 1. 关键字
26

7+
关键字是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。和其它语言一样,Java中保留了许多关键字,例如,class、public等,下面列举的是Java中所有的关键字。
8+
39
## 1.1 关键字概述
410

511
被Java语言赋予特定含义的单词
@@ -14,6 +20,7 @@
1420
- 类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
1521

1622
![用于定义数据类型的关键字](http://img.blog.csdn.net/20150915084548059)
23+
1724
![用于定义访问权限修饰符的关键字](http://img.blog.csdn.net/20150915084600280)
1825

1926
# 2. 标识符
@@ -36,6 +43,37 @@
3643

3744
### 2.4.1 包
3845
其实就是文件夹,用于把相同的类名进行区分,全部小写,单级:liuyi,多级:cn.itcast
46+
47+
为了便于对硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类在项目中分目录存放,以便于文件管理。为此,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。
48+
49+
Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:
50+
51+
```java
52+
package cn.itcast.chapter01; // 使用package关键字声明包
53+
public class Example01{…}
54+
```
55+
56+
需要注意的是,包的声明只能位于Java源文件的第一行。
57+
58+
在实际程序开发过程中,定义的类都是含有包名的,如果没有显式地声明package语句,创建的类则处于默认包下,在实际开发中,这种情况是不应该出现的,本教材的示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名,但是在提供的源码中,都已使用包名。
59+
60+
在开发时,一个项目中可能会使用很多包,当一个包中的类需要调用另一个包中的类时,就需要使用import关键字引入需要的类。使用import可以在程序中一次导入某个指定包下的类,这样就不必在每次用到该类时都书写完整类名,简化了代码量。使用import关键字的具体格式如下所示:
61+
62+
```java
63+
import 包名.类名;
64+
```
65+
66+
需要注意的是,import通常出现在package语句之后,类定义之前。如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*; ”来导入该包下所有类。
67+
68+
在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java包及其子包下,Java扩展的大部分类都放在javax包及其子包下。为了便于后面的学习,接下来简单介绍Java语言中的常用包。
69+
70+
- java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。
71+
- java.net:包含Java网络编程相关的类和接口。
72+
- java.io:包含了Java输入、输出有关的类和接口。
73+
- java.awt:包含用于构建图形界面(GUI)的相关类和接口。
74+
75+
除了上面提到的常用包,JDK中还有很多其它的包,比如数据库编程的java.sql包,编写GUI的javax.swing包等等,JDK中所有包中的类构成了Java类库。在以后的章节中,这些包中的类和接口将逐渐介绍,这里只需要有个大致印象即可。
76+
3977
### 2.4.2 类或者接口
4078
一个单词:单词的首字母必须大写,举例:Student,Dog
4179
多个单词:每个单词的首字母必须大写举例:HelloWorld,StudentName
@@ -330,6 +368,8 @@ B:已知某数X的补码11101110B,试求其原码
330368
原码: 10010010
331369
# 5. 变量
332370

371+
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。
372+
333373
## 5.1 变量概述
334374

335375
在程序执行的过程中,在某个范围内其值可以发生改变的量,理解:如同数学中的未知数
@@ -351,6 +391,10 @@ B:已知某数X的补码11101110B,试求其原码
351391

352392
# 6. 数据类型和类型转换
353393

394+
Java是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。
395+
396+
![1500703408708](images/1500703408708.png)
397+
354398
## 6.1 数据类型
355399

356400
6.1.1 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
@@ -486,14 +530,33 @@ C:在一行上建议只定义一个变量
486530

487531
## 6.2 类型转换
488532

533+
当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。
534+
535+
根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。
536+
489537
### 6.2.2 默认转换(从小到大的转换)
490538

539+
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。
540+
541+
要实现自动类型转换,必须同时满足两个条件,
542+
543+
- 第一是两种数据类型彼此兼容,
544+
- 第二是目标类型的取值范围大于源类型的取值范围。
545+
546+
(1)整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量
547+
(2)整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
548+
(3)其它类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。
549+
491550
A:byte,short,char—int—long—float—double
492551

493552
B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
494553

495554
### 6.2.2 强制转换:
496555

556+
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。
557+
558+
当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
559+
497560
从大的数据类型到小的数据类型
498561
格式:目标数据类型 变量 = (目标数据类型) (被转换的数据);
499562
注意:不要随意的去使用强制转换,因为它隐含了精度损失问题
@@ -678,7 +741,13 @@ class OperatorDemo {
678741
int x=3,y=4,z;
679742
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
680743
```
681-
## 7.8 Math
744+
## 7.8 运算符的优先级
745+
746+
在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,把这种顺序称作运算符的优先级。
747+
748+
![1500703686246](images/1500703686246.png)
749+
750+
## 7.9 Math
682751

683752
Math类提供了常用的一些数学函数,如:三角函数、对数、指数等。一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可。
684753

第2章 Java编程基础/Java语法基础-2.md

+68
Original file line numberDiff line numberDiff line change
@@ -1352,3 +1352,71 @@ class ArrayTest5 {
13521352
运行结果:
13531353

13541354
![](http://img.blog.csdn.net/20150915210925705)
1355+
1356+
## 4.11 随机点名器
1357+
1358+
```java
1359+
package cn.itcast.chapter02.task03;
1360+
import java.util.Random;
1361+
import java.util.Scanner;
1362+
/**
1363+
* 随机点名器
1364+
*/
1365+
public class CallName {
1366+
/**
1367+
* 1.存储全班同学姓名 创建一个存储多个同学姓名的容器(数组) 键盘输入每个同学的姓名,存储到容器中(数组)
1368+
*/
1369+
public static void addStudentName(String[] students) {
1370+
// 键盘输入多个同学姓名存储到容器中
1371+
Scanner sc = new Scanner(System.in);
1372+
for (int i = 0; i < students.length; i++) {
1373+
System.out.println("存储第" + (i + 1) + "个姓名:");
1374+
// 接收控制台录入的姓名字符串
1375+
students[i] = sc.next();
1376+
}
1377+
}
1378+
1379+
/**
1380+
* 2.总览全班同学姓名
1381+
*/
1382+
public static void printStudentName(String[] students) {
1383+
// 遍历数组,得到每个同学姓名
1384+
for (int i = 0; i < students.length; i++) {
1385+
String name = students[i];
1386+
// 打印同学姓名
1387+
System.out.println("" + (i + 1) + "个学生姓名:" + name);
1388+
}
1389+
}
1390+
1391+
/**
1392+
* 3.随机点名其中一人
1393+
*/
1394+
public static String randomStudentName(String[] students) {
1395+
// 根据数组长度,获取随机索引
1396+
int index = new Random().nextInt(students.length);
1397+
// 通过随机索引从数组中获取姓名
1398+
String name = students[index];
1399+
// 返回随机点到的姓名
1400+
return name;
1401+
}
1402+
1403+
public static void main(String[] args) {
1404+
System.out.println("--------随机点名器--------");
1405+
// 创建一个可以存储多个同学姓名的容器(数组)
1406+
String[] students = new String[3];
1407+
/*
1408+
* 1.存储全班同学姓名
1409+
*/
1410+
addStudentName(students);
1411+
/*
1412+
* 2.总览全班同学姓名
1413+
*/
1414+
printStudentName(students);
1415+
/*
1416+
* 3.随机点名其中一人
1417+
*/
1418+
String randomName = randomStudentName(students);
1419+
System.out.println("被点到名的同学是 :" + randomName);
1420+
}
1421+
}
1422+
```
Loading
Loading

第3章 面向对象/Object类.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
1+
---
2+
typora-copy-images-to: img
3+
---
4+
15
## Object类
6+
在JDK中提供了一个Object类,它是类层次结构的根类,每个类都直接或间接继承自该类,所有对象(包括数组)
7+
28
Object:所有类的根类。Object是不断抽取而来,具备着所有对象都具备的共性内容。
39

10+
![1500704901468](img/1500704901468.png)
11+
12+
- getClass().getName()代表返回对象所属类的类名,即Animal。
13+
- hashCode()代表返回该对象的哈希值。
14+
- Integer.toHexString(hashCode())代表将对象的哈希值用16进制表示。
15+
16+
其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址进行哈希运算,返回一个int类型的哈希值。
17+
418
示例:
519

620
```java
18.5 KB
Loading
14.8 KB
Loading
15 KB
Loading
16.8 KB
Loading
8.54 KB
Loading
40.6 KB
Loading
15 KB
Loading

0 commit comments

Comments
 (0)