1. 计算机基本概念
1.1计算机组成
计算机由计算机硬件
和计算机软件
组成
-
计算机硬件:你的眼睛能看的见, 你的手能摸得着的东西
-
中央处理器(CPU)
- 由运算器和控制器组成
-
存储器
- 内存: 内存条(代数, 睿频)
- 外存: 硬盘(SSD: 固态硬盘, HSD: 混合盘, HDD: 机械硬盘), U盘
-
输入设备
- 键盘, 鼠标
-
输出设备
- 显示器
-
中央处理器(CPU)
-
计算机软件:能在计算机上运行的程序
-
系统软件
- Windows操作系统, Mac操作系统, Linux操作系统
-
应用软件
- 概述: 我们程序员用编程代码开发的软件
- 例如: Typora, 微信, QQ
-
系统软件
1.2 语言简介
-
什么是语言(Language)?
- 指的就是
人与人
之间进行沟通,交互的载体,方式
- 指的就是
-
什么是计算机语言(Computer Language)?
- 指的就是
人与计算机
进行交互的方式
- 指的就是
- 计算机语言分类
1.机器语言
简单理解:由二进制0,1这样的指令组成
例如:10010表示 加法
2.汇编语言
简单理解: 用一些简单的字母表示二进制序列(0, 1)
例如: add表示 加法.
优点: 文件小, 执行速度快, 可以直接操作计算机的硬件
弊端: 可读性和可移植性相对较差, 对程序员来讲, 门槛较高.
3.高级语言
简单理解: 由一些纯英文字母(包含大小写) 和 一些特殊符号组成.
例如: +表示 加法.
优点: 语法相对简单, 可读性, 兼容性较强, 对程序员来讲, 门槛较低.
弊端: 种类繁多, 每种语言都有自己的语法, 每学一门语言, 都要学习新的语法.
-
高级语言分类
-
第一代高级语言:
例如: C语言, 以
面向过程
为编程思想, 唯一一门可以直接操作计算机硬件的高级语言 -
第二代高级语言:
例如: C++, 以
面向对象
为编程思想, 没有默认的垃圾回收机制. -
第三代高级语言: 目前市场上应用最多的语言
例如: Java, C#, 以
面向对象
为编程思想, 而且有默认的垃圾回收机制(GC). -
第四代高级语言: 未来的发展趋势, 现在还处于发展初期
简单理解: 以
面向问题编程思想为主
, 也就是说: 告诉计算机做什么, 而不是怎么做.
例如: Siri语言交互, 大数据云平台, 这些势必肯定会用到大数据框架等技术.
-
1.3 Java语言
概述
- Sun公司(Stanford University NetWork: 美国的斯坦福大学)在1995年推出的高级编程语言
- Java之父: 詹姆斯·高斯林(James Gosling)
- Sun公司在2009年被甲骨文(Oracle)公司给收购了
平台版本
2SE: 标准版, 也是其他两个版本的基础. 在JDK1.5的时候正式更名为: JavaSE.
J2ME: 小型版, 一般用来研发嵌入式程序. 已经被Android替代了. 在JDK1.5的时候正式更名为: JavaME.
J2EE: 企业版, 一般开发企业级互联网程序. 在JDK1.5的时候正式更名为: JavaEE.
-
特点
-
开源
- 指的是Java源代码是开放的
-
跨平台
- 指的是: 用Java代码编写的程序, 可以在不同的操作系统上运行
- 原理: 由JVM保证Java程序的跨平台性, 但是JVM本身并不能跨平台
-
图解:
-
开源
多态
多线程
面向对象
2.JDK和JRE
2.1 概述
-
JDK: Java开发工具包(Java Development Kit), 包含开发工具 和 JRE
- 常用的开发工具: javac, java
-
JRE: Java运行时环境(Java Runtime Environment), 包含运行Java程序时所需的核心类库和 JVM
- 核心类库: java.lang, java.util, java.io
-
JVM: Java虚拟机(Java Virtual Machine)
- 作用: 用来保证Java程序跨平台性的, 但是JVM本身并不能跨平台
2.2图解
2.3 Java环境搭建
-
JDK下载
-
JDK安装
- 傻瓜式安装(下一步下一步就可以了)
- 安装路径(以后但凡是安装开发软件, 都要满足两点: )
不要直接安装到盘符目录下
安装路径最好不要出现中文, 空格等特殊符号
- 目录解释
目录名称 目录解释 bin
存放的是编译器和工具 db
存数数据 include
编译本地方法 jre
Java运行时文件 lib
存放类库文件 src.zip
存放源代码的
-
JDK卸载
- 直接去控制面板卸载
小技巧: windows徽标键 + 字母R -> control -> 然后敲回车, 这样可以直接打开控制面板
3.DOS指令
3.1 如何打开cmd
windows键 + r键 —> cmd —> 进入cmd
3.2 常见DOS指令
操作 | 说明 |
---|---|
盘符名称: |
盘符切换。E:回车,表示切换到E盘。 |
dir |
查看当前路径下的内容。 |
cd 目录 |
进入单级目录。cd eric |
cd 目录1\目录2... |
进入多级目录。cd eric\JavaSE |
cd .. |
回退到上一级目录。 |
cd \ |
回退到盘符目录。 |
cls |
清屏。 |
exit |
退出命令提示符窗口。 |
color /help |
设置控制台颜色, 例如: color 3f |
ipconfig /all |
查看本机IP地址. |
ping ip地址或者网址 -t |
测试网络连接是否通畅. |
shutdown -s -f -t 时间 |
设置电脑定时关机(时间单位: 秒) |
shutdown -a |
取消电脑的自动关机计划 |
java -version |
查看你安装的JDK版本的. |
Path环境变量配置
4.1 目的
让我们可以在任意目录下都能使用JDK提供的常用开发工具, 例如: javac, java
4.2 步骤
- 1.新建一个系统变量: JAVA_HOME, 它的值就是你安装的JDK的路径(
注意: 不要带bin这一级
)
-
2.在path中配置你刚才设置好的JAVA_HOME环境变量
解释: %JAVA_HOME%表示引入该系统变量的值, 即: C:\Program Files\Java\jdk1.8.0_191
- 3.测试
-
方法1:在DOS窗口中输入"javac 或者 java", 能看到对应的一坨指令即可
-
方法二:在DOS窗口中输入"java -version", 可以看到当前配置的JDK的版本
-
5.Hello World案例
5.1 Java程序的开发步骤
-
编写源代码:相当于写一些指令,在
后缀名为.java
的源文件中编写- 这些源代码是我们能看的懂,计算机看不懂的
-
编译:相当于把我们能看的懂的文件转换成计算机能看的懂的文件。
通过javac指令实现
- HelloWorld.java(源代码文件) —> HelloWorld.class(字节码文件,专门给计算机看)
-
执行:让计算机来运行指定的字节码文件。
通过java指令实现
- 例如:让计算机执行:HelloWorld.class这个字节码文件
5.1.1 编写源代码
- 在
E:\liaogongda\code1
文件夹中创建HelloWorld.java
文件 - 用记事本打开
HelloWorld.java
文件 - 在
HelloWorld.java
文件中编写如下内容
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
注意:
HelloWorld.java叫源代码文件
, 是我们能看懂, 但是计算机看不懂的文件
5.1.2 编译
- 通过
javac
指令将HelloWorld.java
文件编译成HelloWorld.class
字节码文件 -
在DOS窗口中输入:
5.1.3 执行
- 通过
java
指令,让计算机执行HelloWorld.class
字节码文件 -
在DOS窗口中显示:
注意:注意: 直接写文件名即可, 不需要写文件后缀名, 即:
.class
5.2 可能会遇到的问题
Bug
-
概述
在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞) -
解决方案
多看, 多思考, 多尝试, 多总结
遇到的问题
- 1. 非法字符
注意: 我们使用的符号全部都是英文状态下的符号
- 2.注意字母的大小写
注意: Java是严格区分大小写的. 也就是说: A和a不是一回事
- 3.文件后缀名的问题
千万不要出现 HelloWorld.java.txt 这种情况
- 4.在编译或者运行时, 指令及文件名不要写错了
//编译的格式
javac HelloWorld.java
//运行的格式
java HelloWorld
5.3 Notepad++软件
常用的开发工具
-
概述
指的就是我们用来编写代码的程序. -
分类
- windows操作系统自带的记事本.
- 高级记事本(例如: Notepad++, Editplus)
功能: 带行号, 关键字高亮显示, 代码折叠.
- 高级的IDE(集成开发环境)
指的是集代码的编写,编译执行,调试等功能为一体的软件
Eclipse
MyEclipse
IDEA
- Notepad++软件设置
新建文件的格式
6.注释
6.1概述
就是用来对程序进行解释和说明的文字
大白话翻译: 注释是给我们程序员看的, 并不是给计算机看的
6.2 分类
- 单行注释
//单行注释
- 多行注释
/*
多行注释
多行注释
*/
- 文档注释
/**
文档注释
文档注释
*/
7.关键字
7.1 概述
就是被Java语言赋予了特殊含义的单词.
7.2 特点
- 关键字是由纯英文字母组成的, 而且全部都是小写的.
- 常用的开发工具(Notepad++, IDEA)针对于关键字都会高亮显示
7.3 常用的关键字
-
public
: 公共的权限, 目前先了解即可 -
class
: 表示在创建一个类 -
static
: 表示静态的意思 -
void
: 表示方法的返回值类型
7.4 定义Java源代码文件的格式
//类名可以自定义.
public class 类名 {
public static void main(String[] args) {
System.out.println(这里的内容可以随便写);
}
}
7.5 补充: 保留字
- 概述
现在还不是关键字的单词, 但是却具有关键字的意义, 在以后的JDK升级版本中, 可能会被升级为关键字的单词
- 常见的保留字
goto, const
8.常量
8.1 概述
指的是在程序的执行过程中, 其值不能发生改变的量.
8.2 分类
- 自定义常量
- 字面值常量(根据字面意思就可以划分的常量)
- 1.整数常量
例如: 1, 2, 3, 11, 22, 521
- 2.小数常量
例如: 5.21, 13.14
- 3.字符常量
解释: 字符的意思是说只能有一个值, 而且要用
单引号
括起来
例如: 'A', 'B', 'c', '10'(这样写会报错, 因为10是由1和0两个值组成的) - 4,字符串常量
解释: 字符串常量值都要用
双引号
括起来
例如: "abc", "传智播客", "黑马程序员", "大数据" - 5.布尔常量
解释: 比较特殊, 值只有两个
true, 相当于正确
false, 相当于不正确
- 6.空常量
解释: 比较特殊, 值只有一个: null, 表示什么都没有
注意: 空常量不能通过输出语句直接打印
- 1.整数常量
9.变量
9.1概述
在程序的执行过程中, 其值可以在某个范围内发生改变的量就叫
变量
-
从本质上讲, 变量其实是内存中的一小块区域. 例如:
- 商品的价格(5元,6元,4元)
- 钟表的时间(5点,6点,6点半)
- 人们的年龄(0岁,10岁,18岁……80岁)
- 程序员生涯的职位(开发工程师,开发经理,项目经理,CTO)
-
Java中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型
- 已知代码
System.out.println(10); System.out.println(10); System.out.println(10);
- 需求:把所有的10改成20
// 方法一:一个一个改 System.out.println(20); System.out.println(20); System.out.println(20); //方法二:采用变量实现 //int a =10; int a = 20; System.out.println(a); System.out.println(a); System.out.println(a);
- 变量的限制
- 既然变量的值是在某一个范围内发生的那么我们应如何限制呢?
通过数据类型
来限制 - 我们该如何找到这一块区域呢?
通过变量名
实现 - 区域内必须有数据
初始化值
- 既然变量的值是在某一个范围内发生的那么我们应如何限制呢?
- 变量的定义格式:
数据类型 变量名 = 初始化值;
9.2 示例一:变量入门
- 需求:定义变量,记录班级的学生人数,并将结果打印到控制台
- 参考代码
//1. 定义一个Java类, 类名叫: VariableDemo01
public class VariableDemo01 {
//2. 定义main方法, 作为程序的主入口, 所有代码都是从这里开始执行的.
public static void main(String[] args) {
//3. 定义一个int类型的变量, 变量名叫a, 初始化值为: 121
int a = 121;
//4. 通过输出语句, 将变量a的值打印到控制台上.
System.out.println(a);
}
}
9.3 数据类型
Java是一种强类型语言
,针对每一个数据都给出了明确的数据类型
区分一门语言到底是强类型语言还是弱类型语言的依据是:
看这门语言对数据的数据类型划分是否精细.
如果精细, 则是强类型语言, 如果不精细, 则是弱类型语言.
数据类型的分类
-
基本数据类型(简称:基本类型)
- byte,short,char,int,long,float,double,boolean
-
引用数据类型(简称:引用类型)
- String,数组,类,接口
数据类型的分类图解
数据类型的取值范围图解
小技巧
1.
byte类型
的取值范围是: -128 ~ 127,char类型的取值范围是: 0 ~ 65535 2.默认的整形是:
int类型, 默认的浮点型(即: 小数类型)是:
double类型3.定义long类型的数据时, 数据后边要
加字母L(大小写均可), 建议加L4.定义float类型的数据时, 数据后边要
加字母F(大小写均可), 建议加F`
格式
- 方式一: 声明变量并赋值
数据类型 变量名 = 初始化值;
//示例: 声明(定义)一个int类型的变量, 变量名叫a, 初始化值为: 10
int a = 10;
- 方式二: 先声明, 后赋值
数据类型 变量名;
变量名 = 初始化值;
//示例
//1. 声明(定义)一个int类型的变量, 变量名叫a
int a;
//2. 把数字10赋值给变量a
a = 10;
9.4 示例二: 定义变量并打印
- 需求:定义变量, 分别记录上述的8种基本类型数据, 并将变量值打印到控制台上
- 思路分析
- 通过声明变量并赋值的方式实现
- 通过先声明, 后赋值的方式实现
- 参考代码
- 方式一: 声明变量并赋值
//1. 定义一个类, 类名叫: VariableDemo02 public class VariableDemo02 { //2. 定义main方法, 作为程序的主入口. public static void main(String[] args) { //3. 测试byte类型. //3.1 定义一个byte类型的变量, 变量名叫b, 初始化值为10. byte b = 10; //3.2 将变量b的值打印到控制台上. System.out.println(b); //4. 测试short类型. //4.1 定义一个short类型的变量, 变量名叫s, 初始化值为20. short s = 20; //4.2 将变量s的值打印到控制台上. System.out.println(s); //5. 测试char类型. //5.1 定义一个char类型的变量, 变量名叫c, 初始化值为'A'. char c = 'A'; //5.2 将变量c的值打印到控制台上. System.out.println(c); //6. 测试int类型 int a = 10; System.out.println(a); //7. 测试long类型, 数据后记得加字母L. long lon = 100L; System.out.println(lon); //8. 测试float类型, 数据后边加字母F. float f = 10.3F; System.out.println(f); //9. 测试double类型. double d = 5.21; System.out.println(d); //10. 测试boolean类型. boolean bb = true; System.out.println(bb); } }
- 方式二: 先声明, 后赋值
//1. 定义一个类, 类名叫: VariableDemo03 public class VariableDemo03 { //2. 定义main方法, 作为程序的主入口. public static void main(String[] args) { //3. 测试byte类型. //3.1 定义一个byte类型的变量, 变量名叫b. byte b; //3.2 把数字10赋值给变量b. b = 10; //3.3 将变量b的值打印到控制台上. System.out.println(b); //4. 测试char类型. //4.1 定义一个char类型的变量, 变量名叫c. char c; //4.2 把字符'A'赋值给变量c. c = 'A'; //4.3 将变量c的值打印到控制台上. System.out.println(c); //5. 测试int类型 int a; a = 10; System.out.println(a); //6. 测试double类型. double d; d = 5.21; System.out.println(d); //7. 测试boolean类型. boolean bb; bb = true; System.out.println(bb); } }
- 注意事项
1.变量未赋值,不能使用.
2.变量只在它所属的范围内有效.
3.一行上可以定义多个变量,但是不建议.
- 变量可以一行声明多个
int e = 10 , f = 20 , g = 50;
System.out.println(e);
System.out.println(f);
System.out.println(g);
10.代码块
大括号{}包裹起来的代码叫做代码块
代码块作用:让变量尽可能早的从内存消失,从而节约资源,提高效率
11.标识符
概念:给类、接口、方法、变量等起名字的规范
java中,标识符是由字母、数字、下划线、美元符号组成
注:
标识符不能以数字开头
标识符不能与Java中的关键字(保留字)重名
标识符最好做到见到名字知道它的含义,让别人看的懂
11. 命名规范
- 1.类
- 大驼峰 (每个单词首字母都大写,其他全部小写)
- 例如
HelloWorld 、VeriableDemo
- 2.变量
- 小驼峰(第一个单词正常写,从第二个单词开始首字母大写,其余小写)
- 例如
studentName 、 userName
- 3.常量
+所有字母全部大写,单词之间用下划线隔开- 例如
MAX_MONEY 、JAVA_HOME
- 例如
- 4.包
- 所有的字母都小写 多级包之间使用"."隔开,一般的报名都是公司域名的反写
- 例如
www.neusoft.com --> com.neusoft.yiliao
-
- 方法名
- 小驼峰(第一个单词正常写,从第二个单词开始首字母大写,其余小写)
12.数据类型转换
- 1.自动类型转换(隐式转换)
小的类型自动提升成大的类型
将取值范围小的类型自动提升为取值范围大的类型
// 定义两个int类型的变量a和b, 分别赋值为10, 20.
int a = 10;
int b = 20;
// 通过输出语句打印变量a和b的和.
System.out.println(a);
System.out.println(b);
// 定义int类型的变量c, 接收变量a和b的和.
int c = a + b;
// 打印变量c的值.
System.out.println(c);
// 定义两个变量aa和bb, 一个是int类型的数据, 另一个是byte类型的数据.
int aa = 30;
byte bb = 40;
// 定义变量cc接收 变量aa和bb的和.
int cc = aa + bb;
// byte cc = aa + bb; 大的不能转换成小的
// 分别设置变量cc的数据类型为byte类型和int类型, 观察结果并打印.
System.out.println(cc);
- 2.强制类型转换(显示转换)
大类型转换成小类型
格式: 数字类型 变量名 = (强制转换的类型) 要被转换的数值
double d = 30.5;
int dd = (int) d;
System.out.println(dd);
13.自增运算
a++先进行运算/赋值 再进行自增
++a 先进行自增,在进行运算
int a = 1;
int b = a++;
int c = ++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
3
1
3
- 例子
short s = 22;
s = (short)(s + 1);
// s = s + 1 不能运行 s+1为int类型 s为short类型
// s += 1 能运行 只进行一次操作 并带有强制类型转换 相当于 s =(short)(s + 1)
System.out.println(s);
14.ASCII码
package com.company;
public class ASCIIDemo08 {
public static void main(String[] args) {
char a = 'A';
int j = 1;
System.out.println(a + j);
}
}
66