计算机基础
计算机 = 硬件 + 软件
硬件
CPU:CPU是计算机中的运算核心与控制核心。负责了解析计算机的指令、与计算机运算的执行。速度最快
内存:数据与CPU交互的桥梁。程序所需要的数据都会先加载到内存中,CPU是直接读取内存中数据运算的。
特点:存取速度快。缺点:断电或者程序退出的时候,内存中的数据都会丢失。
硬盘(机械硬盘、固态硬盘):可以永久性保存数据,缺点:存取数据慢。机械硬盘:磁盘式,固态硬盘:读取速度非常快。
软件
软件就是按照一定顺序组织起来的计算机指令与数据的集合。软件 = 数据 + 指令
软件的类别:
系统软件:
比如:windows、Linux、Mac OS、IOS、Android
应用软件:应用软件必须在系统软件的基础上才能使用
比如:QQ、微信、迅雷……
软件的本质(软件为我们解决了什么问题):提高了人类与计算机的交互效率。
人类与计算机的交互方式:
- 图形化界面的交互方式:简单、功能强大。
- 通过指令命令的交互方式:
windows下首先具备一个控制台用于输入DOS命令:
打开一个控制台的方式:
- 方式一:开始—>所有程序—>附件—>命令提示符
- 方式二:开始—>运行—>输入cmd
Java介绍
Java 之父 —— James Gosling(詹姆斯·高斯林)
Java特点
简单
学习过 C++ 语言,会感觉 Java 很眼熟,因为 Java 中许多基本语句的语法和 C++ 语言一样,例如常用的 for循环、控制语句等和 C++ 几乎相同。需要注意的是,Java 和 C++ 等是完全不同的语言,Java 和C++ 各有优势,将会长期并存下去,Java 语言和 C++ 语言已成为软件开发者应当掌握的基础语言。如果从语言的简单性方面看,Java 要比C++ 简单,C++ 中许多容易混淆的概念,或者被 Java 弃之不用了,或者以一种更清楚、更容易理解的方式实现,例如,Java 中不再有指针概念
面向对象
基于对象的编程更符合人的思维模式,使人们更容易解决复杂问题。Java 是面向对象的编程语言,以后非安全会详细介绍类、对象、继承、多态、接口等重要概念。
跨平台
Java 语言的出现是源于对独立于平台语言的需要,希望用这种语言能编写出嵌入各种家用电器等设备的芯片上、且易于维护的程序。但是,人们发现当时的编译语言(比如 C、C++)都有一个共同的缺点,那就是只能对特定的 CPU 芯片进行编译。这样,一旦电器设备更换了,芯片就不能保证程序正确运行,就可能需要修改程序并针对新的芯片重新进行编译。
Java 语言和其它语言相比,最大的优势就是编写的软件能在执行码兼容、能在所有的计算机上运行。Java 之所以能做到这一点,是因为 Java 可以在计算机的操作系统之上再提供一个 Java 运行环境,该运行环境由 Java 虚拟机(Java VirtualMachine)、类库以及一些核心文件组成,也就是说,只要平台提供了 Java 运行环境,用Java编写的软件就能在其上运行。
多线程
Java 的特点之一就是内置了对多线程的支持,多线程允许计算机同时完成多个任务。实际上,多线程使人产生多个任务在同时执行的错觉,因为目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,原来是这么回事,由于处理器速度非常快,远远超过了人接受信息的速度,所以给人的感觉好像是多个任务在同时执行。C++ 没有内置的多线程机制,因为必须调用操作系统的多线程功能来进行多线程程序的设计。
安全
当准备从网络上下载一个程序(这可不是小电影哦)时,用户最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要的文件,甚至该程序是一个病毒程序等。当使用支持Java的浏览器时,大家可以放心运 Java Applet 程序,而不必担心病毒的感染和恶意的企图。Java Applet 程序由浏览器内置的Java运行环境负责解释、执行,浏览器内置的Java运行环境不允许 Java Applet 程序访问当前浏览器上下文环境以外的其它部分。以后非安全哥哥会给你们讲述下 Java Applet 。
动态
Java 程序的基础组成单元就是类,有些类是用户自己编写的,有些类是从类库中引入的,而类又是在运行时动态装载的,这就使得 Java 可以在分布环境中动态地维护程序及类库。C/C++ 编译时将函数库或类库中被使用地函数、类同时生成机器码,那么当其类库升级之后,如果要使 C/C++ 程序具有新类库提供的功能,程序就必须重新修改、编译,真是伤脑筋。
Java三种平台
Java se
Java SE(曾称为J2SE)称为Java标准版或Java标准平台。Java SE 提供了标准的 Java Development Kit(JDK),利用该平台可以开发 Java 桌面应用程序和低端的服务器应用程序,也可以开发Java Applet程序。
Java ee
Java EE(曾称为J2EE)称为 Java 企业版或 Java 企业平台。使用 Java EE 可以构建企业级的服务应用,Java EE 平台包含了 Java SE 平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。
Java me
Java ME(曾称为J2ME)称为 Java 微型版或 Java 小型平台。Java ME 是一种很小的 Java 运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。
总结
无论上述哪种 Java 运行平台都包括了相应的 Java 虚拟机,虚拟机负责将字节码文件(包括程序使用的类库中的字节码)加载到内存,然后采用解释方式来执行字节码文件,即根据相应平台的机器指令翻译一句、执行一句。
Java环境变量
JRE
JRE (Java Runtime Environment): java运行环境,是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库 。
jre = java虚拟机(JVM:Java Virtual Machine) + 核心类库(辅助java虚拟机运行的文件)
JDK
是Java程序开发工具包,包含JRE和开发人员使用的工具。
- java开发工具集:jdk = jre + java开发工具
JVM
Java Virtual Machine 一个软件模拟的计算机:相当于计算机系统(操作系统+硬件环境),Java解释器相当于CPU。
- 我们想要运行一个已有的Java程序,那么只需安装JRE即可。
- 我们想要开发一个全新的Java程序,那么必须安装JDK。
Java安装及环境变量配置
Windows版
路径注意事项(Windows版)
安装jdk的路径要注意: 不能带有中文路径或者是空格。
建议 JDK 和 JRE 路径分开(比如 JDK 默认路径,JRE选择另外一个路径),需要注意的是,在安 装 JDK 的过程中,JDK 还额外提供了一个 Java 运行环境 —— JRE(Java Runtime Environment),JDK 文件夹里也有个JRE的,这个JRE是专有的 JRE,而额外安装的JRE是公有的,这两个JRE 是有点区别的,也就是后面第 4 点提到的仅仅安装 JRE(简单来说内部的JRE是用来开发的,外部的 JRE 是仅仅用来运行 Java 程序的,前者不会注册到注册表,而后者会注册到注册表,位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft,可以到控制面板删除后者而不会影响 到你开发Java 程序),安装好后目录(需要注意安装的路径不能带有中文名,否则会报错)
JDK下载
官网:https://www.oracle.com/java/technologies/downloads/
JDK目录介绍
- bin: 存放的是java的开发工具。
- db : JDK7附带的一个轻量级的数据库,名字叫做Derby。
- include :存放的调用系统资源的接口文件。
- jre : java运行环境
- lib : 核心类库。
- src.zip : java源代码

java.exe 启动java虚拟机解释并执行指定的class文件。
java工具的使用格式:
1 | java 指定的class文件 |
javac.exe启动java编译器对指定的java源文件进行编译。
编写第一个java的程序
第一步: 新建一个txt文件。把后缀名改成java。
第二步:java 代码全部都是写到类上面的。
1
2
3
4
5
6
7如何编写一个类:
使用一个关键字class即可定义个类。
格式:
class 类名{
代码内容...
} 备注: 大括号表示是一个类的范围,在类的范围之内都可以写代码第三步: 编写一个主方法。 主方法的写法是固定的,是一个程序的入口,代码从主方法开始执行
如何启动java编译对java的源文件进行编译?
javac的使用格式:
1 | javac java源文件 |
编译的过程中我们就面临的问题:每次编译 的时候都需要写上java源文件的完整路径。 烦!!!
解决方案: 如果可以在任意的路径下都可以找到java的开发工具,那么该问题就解决了。
在控制台写一个可执行文件的文件名的执行原理:
在控制台写一个可执行文件的文件名,那么系统首先会在控制台当前路径下去搜索是否存在该文件,如果可以找到指定的文件,那么就执行该文件,如果找不到该文件,那么系统还会根据path的环境变量所保存的路径信息下去搜索是否有指定的文件,如果能找到,那么就执行该文件。
配置path环境变量
如何找到path的环境变量: 我的电脑—>属性—->高级系设置—>高级—>环境变量—>path,把javac所在的路径拷贝到path环境变量中即可。
配置path环境变量变的目的是什么?控制台可以在任意的路径下都可以找到java的开发工具。目前path环境变量除了保存了我们自己配置的信息以外,还有系统自带的信息,如果一旦不不小心删除了path环境变量信息,那么就可能导致系统部分功能无法使用。尽量避免修改的path环境变量信息。
目的是为了尽量避免频繁修改path环境变量?
解决办法:新建一个环境变量保存jdk安装目录会发生变化的部分,然后在path环境变量上引用新环境变量所保存的信息
需求: 在现实开发中有时候jdk版本的信息有时候只会使用一次或者几次就不再使用了,那么如果是这种需求,我们一般都是通过set命令配置临时环境变量。
临时环境变量就是仅对于当前控制台窗口起作用,窗口一旦关闭,那么配置的临时环境变量信息会发生消失。
1 | set命令的用法: |
第一个hello world例子常见的问题:
找不到对应的文件
原因:
- 隐藏了后缀名,你的不是java文件是txt文件。
- 编译 的时候写错了文件名。
找不到或无法加载主类 Demo1
原因: 运行的时候写错了类名.
注意: class文件的文件名是对应的类名的。不是对应的java文件名的。
java的代码是严格区分大小写的。
‘javac’ 不是内部或外部命令
原因: 没有配置path环境变量信息,或者是配置错误了。
classpath环境变量
设置了classpath环境变量的时候,启动jvm(java虚拟机)的时候,那么java虚拟机就会根据classpath环境变量所保存路径信息下去寻找对应的class文件。
设置classpath环境变量信息的有分号与没有分号的区别:
- 如果配置classpath环境变量信息没有加上分号,那么java虚拟机仅会在classpath所保存的路径下去搜索对应的class文件,不会在当前路径下去搜索了。
- 如果配置classpath环境变量信息加上分号,那么java虚拟机除了会在classpath所保存的路径下去搜索对应 的class文件之外,如果能找到对应的class文件。
那么就马上指定对应的class文件,否则还会去当前路径下去搜索。
配置classpath的作用:设置了class文件的路径信息。



Mac版
1 | jingdeMacBook-Pro:~ apple$ vim ~/.bash_profile |
Windows常用DOS命令
盘符:进入指定的盘下面。
操作文件夹:
- dir 列出当前控制台所在的路径下的所有文件以及文件夹。
- cd 路径 进入指定的路径下。
- cd .. 回退到上一级目录上。
- cd \ 回退到当前路径下的根目录。
- md 文件夹的名字 创建一个文件夹
- rd 文件夹的名字 删除一个空文件夹。 注意: 不能用于删除非空到的文件夹。
操作文件:
- echo 数据>文件名 创建一个文件并且指定写入的数据。
- type 文件名 查看指定的文件内容。
- del 文件名 删除指定的文件。 注意: del后面如果跟一个文件夹,那么是删除一个文件夹中的所有文件。
*通配符(可以匹配任意的文件名)- tab 内容补全.
- cls 清屏
上下方向键 找回上一次所写过的命令。
exit 关闭控制台。