Java基础知识
Java核心基础
一. Java语言简介
1. 语言简介
a. 什么是语言
语言指的是人与人之间进行沟通, 交互的载体, 方式.
b. 什么是计算机语言
计算机语言指的是人与计算机之间进行交互的方式.
c. 计算机语言的分类
机器语言
- 简单理解: 由二进制0, 1这样的指令组成.
例如: 10010表示 加法.
汇编语言
- 简单理解: 用一些简单的字母表示二进制序列(0, 1)
例如: add表示 加法.
优点: 文件小, 执行速度快, 可以直接操作计算机的硬件.
弊端: 可读性和可移植性相对较差, 对程序员来讲, 门槛较高.
高级语言
- 简单理解: 由一些纯英文字母(包含大小写) 和 一些特殊符号组成.
例如: +表示 加法.
优点: 语法相对简单, 可读性, 兼容性较强, 对程序员来讲, 门槛较低.
弊端: 种类繁多, 每种语言都有自己的语法, 每学一门语言, 都要学习新的语法.
四代语言的分类
- 第一代高级语言:
例如: C语言, 以面向过程为编程思想, 唯一一门可以直接操作计算机硬件的高级语言. - 第二代高级语言:
例如: C++, 以面向对象为编程思想, 没有默认的垃圾回收机制. - 第三代高级语言: 目前市场上应用最多的语言
例如: Java, C#, 以面向对象为编程思想, 而且有默认的垃圾回收机制(GC). - 第四代高级语言: 未来的发展趋势, 现在还处于发展初期
简单理解: 以面向问题编程思想为主, 也就是说: 告诉计算机做什么, 而不是怎么做.
例如: Siri语言交互,SQL, 大数据云平台, 这些势必肯定会用到大数据框架等技术.
2. JAVA语言简介
a. 为什么要学习Java
- Java使用广泛, 且简单易学.
- Java是一门强类型的语言.
- Java有非常完善的异常处理机制.
- Java提供了对于大数据的基础性支持(mr分布式计算框架,spark,flink,javaAPI开发redis,提供对外接口).
b. Java概述
- Sun公司(Stanford University NetWork: 美国的斯坦福大学)在1995年推出的高级编程语言.
- Java之父: 詹姆斯·高斯林(James Gosling).
- Sun公司在2009年被甲骨文(Oracle)公司给收购了.
c. Java平台版本
- J2SE: 标准版, 也是其他两个版本的基础. 在JDK1.5的时候正式更名为: JavaSE. Swing
- J2ME: 小型版, 一般用来研发嵌入式程序. 已经被Android替代了. 在JDK1.5的时候正式更名为:JavaME.
- J2EE: 企业版, 一般开发企业级互联网程序. 在JDK1.5的时候正式更名为: JavaEE. B/S 浏览器/服务器
d. Java特点
- 开源
指的是Java源代码是开放的. - 跨平台
指的是: 用Java代码编写的程序, 可以在不同的操作系统上运行.
原理: 由JVM保证Java程序的跨平台性, 但是JVM本身并不能跨平台. - 多态 接口
- 多线程
- 面向对象
二. JDK和JRE
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. 图解
3. Java环境搭建
A. JDK的下载
- Oracle官网: www.oracle.com
直接下载JDK的地址:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
B. JDK的安装
- 1.傻瓜式安装(下一步下一步就可以了)
- 2.安装路径(以后但凡是安装开发软件, 都要满足以下两点: )
•不要直接安装到盘符目录下.
•安装路径最好不要出现中文, 空格等特殊符号. - 3.目录解释:
•bin: 存放的是编译器和工具
•db: 存储数据
•include: 编译本地方法.
•jre: Java运行时文件
•lib: 存放类库文件
•src.zip: 存放源代码的.
C. JDK的卸载
- 去控制面板直接卸载就可以了.
小技巧: windows徽标键 + 字母R -> control -> 然后敲回车, 这样可以直接打开控制面板.
三. PATH环境变量配置
1. 目的
- 让我们可以在任意目录下都能使用JDK提供的常用开发工具, 例如: javac, java
2. 步骤
- a.新建一个系统变量: JAVA_HOME, 它的值就是你安装的JDK的路径(注意: 不要带bin这一级)
- b.在path中配置你刚才设置好的JAVA_HOME环境变量.
- 格式: %JAVA_HOME%\bin
- 解释: %JAVAHOME%表示引入该系统变量的值, 即: C:\Program Files\Java\jdk1.8.0_241
- c.测试
- 方式一: 在DOS窗口中输入"javac 或者 java", 能看到对应的一坨指令即可.
- 方式二: 在DOS窗口中输入"java -version", 可以看到当前配置的JDK的版本.
四. 第一个Java程序HelloWorld
Java程序的开发步骤一共3步, 分别是:
-
编写
-
编译
-
执行
-
1. 编写源代码
- a.在D:\code文件夹中创建HelloWorld.java文件.
- b.用记事本打开HelloWorld.java文件.
- c.在HelloWorld.java文件中编写如下内容:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); System.out.println("你好, 世界!"); } } -
2. 编译
- 通过javac指令将HelloWorld.java文件编译成HelloWorld.class字节码文件.
格式
//在DOS窗口中输入如下内容:javac HelloWorld.java
- 通过javac指令将HelloWorld.java文件编译成HelloWorld.class字节码文件.
-
3. 执行
- 通过java指令, 让计算机执行HelloWorld.class字节码文件.
格式
//在DOS窗口中输入如下内容:java HelloWorld
注意: 直接写文件名即可, 不需要写文件后缀名, 即: .class
- 通过java指令, 让计算机执行HelloWorld.class字节码文件.
五. 常用的Java开发工具
1. 概述
- 开发工具指的就是我们用来编写代码的软件.
2. 分类
常用的主要有以下几类:
-
windows操作系统自带的记事本.
缺点: 没有行号, 关键字不能高亮显示, 代码不能折叠. -
高级记事本(Notepad++, Editplus)
优点: 有行号, 关键字能高亮显示, 代码能折叠.
缺点: 不方便我们调试, 不适合开发大型项目. -
集成开发工具(IDE)
集成开发工具指的是集代码的编写, 编译, 运行, 调试, 重构等一系列功能于一体的软件.常用的IDE如下:
- Eclipse
- MyEclipse
- IDEA (jetbrains)
3. IDEA
A. 概述
- IDEA 全称 IntelliJ IDEA,是Java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Python等少数语言。
总结: IDEA这个软件是用Java语言开发的, 所以想使用IDEA, 你电脑上必须安装JRE.
B.下载
- JetBrains公司官网: www.jetbrains.com
直接下载地址: www.jetbrains.com/idea/download/other.html
C. 安装
- 1.双击安装包进行安装, 选择next进行下一步.
- 2.修改安装路径, 然后选择next.
- 3.选择64bit(64位), 然后选择next.
- 4.安装成功.
D. 启动
-
双击启动
-
创建项目和模块
E. 用IDEA写一个HelloWorld Java程序
-
class HelloWorld { public static void main(String[] args) { system.out.println("Hello World!") } }
F. IDEA基本配置
- 1.设置字体:File->Settings->Editor-> Font
- 2.设置配色方案:File-> Settings->Editor-> Colors Scheme
- 3.设置编码:File-> Settings->Editor->File Encodings
- 4.隐藏不需要的文件:File-> Settings->Editor->File Types
- 5.显示/隐藏工具条和工具按钮:View->Toolbar
View->Tool Buttons
G. IDEA常用快捷键
- 快捷键及简介
- Ctrl + B
进入光标所在的方法/变量的接口或是定义处,等效于Ctrl+左键单击
- Ctrl + D
复制光标所在行或复制选择内容,并把复制内容插入光标位置下面
- Ctr + Y
删除光标所在行或删除选中的行
- Ctrl+ N
通过类名定位文件
- Ctrl + F
在当前文件进行文本查找
- Ctrl + /
注释光标所在行代码
- Ctrl + Alt + L
格式化代码可以对当前文件和整个包目录使用
- Ctrl + Alt + 左方向键
退回到上一个操作的地方
- Ctrl+ Alt + 右方向键
前进到下一个操作的地方
- Alt + Shift + 上下箭头
移动当前代码行
六. Java注释
1. 概述
- 就是用来对程序进行解释和说明的文字.
- 大白话翻译: 注释是给我们程序员看的, 并不是给计算机看的.
2. 分类
-
单行注释 //单行注释 多行注释 /* 多行注释 多行注释 */ 文档注释 /** 文档注释 文档注释 */
七. Java关键字
1. 概述
- 就是被Java语言赋予了特殊含义的单词.
2. 特点
- 关键字是由纯英文字母组成的, 而且全部都是小写的.
- 常用的开发工具(Notepad++, IDEA)针对于关键字都会高亮显示.
3. 常用的关键字
-
public: 公共的权限.
-
class: 表示在创建一个类.
-
static: 表示静态的意思.
-
void: 表示方法的返回值类型.
4. 定义Java源代码文件的格式
-
//类名可以自定义. public class 类名 { public static void main(String[] args) { System.out.println("这里的内容可以随便写"); } }
5. 保留字
- 概述:
现在还不是关键字的单词, 但是却具有关键字的意义, 在以后的JDK升级版本中, 可能会被升级为关键
字的单词. - 常见的保留字:
goto , const
八. Java常量
1. 概述
- 指的是在程序的执行过程中, 其值不能发生改变的量.
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.整数常量.
九. Java变量
1. 概述
- 在程序的执行过程中, 其值可以在某个范围内发生改变的量就叫变量.
- 从本质上讲, 变量其实是内存中的一小块区域. 例如:
- 商品的价格(5元,6元,4元)
- 钟表的时间(5点,6点,6点半)
- 人们的年龄(0岁,10岁,18岁……80岁)
- 程序员生涯的职位(开发工程师,开发经理,项目经理,CTO)
- Java中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型。
解释:- 数据类型:变量变化的范围就是数据类型 byte -128~127 char -215~215-1
- 变量名:每个变量都有一个名字,方便存取。
- 初始化值:使用变量前,需要给变量赋值
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); } }
3. 数据类型
-
Java是一种强类型语言, 针对于每一个数据都给出了明确的数据类型.
解释:
-
区分一门语言到底是强类型语言还是弱类型语言的依据是: 看这门语言对数据的数据类型划分是否精细.
-
如果精细, 则是强类型语言, 如果不精细, 则是弱类型语言.
a. 数据类型的分类
-
基本数据类型(简称: 基本类型)
-
byte, short, char, int, long, float, double, boolean
-
引用数据类型(简称: 引用类型)
-
String, 数组, 类, 接口, 目前先了解, 后续会详细讲解.
b. 数据类型的分类图解
c. 数据类型的取值范围图解
-
![image-20210716195333620]()
-
1.byte类型的取值范围是: -128 ~ 127,char类型的取值范围是: 0 ~ 65535
-
2.默认的整形是: int类型, 默认的浮点型(即: 小数类型)是: double类型.
-
3.定义long类型的数据时, 数据后边要加字母L(大小写均可), 建议加L
-
4.定义float类型的数据时, 数据后边要加字母F(大小写均可), 建议加F
-
5.定义double类型的数据时, 数据后边要加字母D(大小写均可), 建议加D
d. 格式
- 方式一: 声明变量并赋值.
数据类型 变量名 = 初始化值;
//示例: 声明(定义)一个int类型的变量, 变量名叫a, 初始化值为: 10
int a = 10; - 方式二: 先声明, 后赋值.
数据类型 变量名;
变量名 = 初始化值;
//示例
//1. 声明(定义)一个int类型的变量, 变量名叫a
int a;
//2. 把数字10赋值给变量a
a = 10;
e.注意事项
- 1.变量未赋值,不能使用.
- 2.变量只在它所属的范围内有效.
- 3.一行上可以定义多个变量,但是不建议.
-
-
十. Java标识符
1. 概述
- 标识符就是用来给变量, 常量,类, 接口, 方法,包等起名字的规则.
2. 命名规则
- 标识符只能包含52个英文字母(区分大小写)、0 ~ 9数字 、$(美元符号)和_(下划线)。
- 标识符不能以数字开头。
- 标识符不能和Java中的关键字重名。
- 最好做到见名知意.
例如: name表示姓名, age表示年龄.
3. 命名规范
A. 类, 接口的命名规范
-
每个单词的首字母都大写, 其他字母全部小写.(大驼峰命名法)
-
例如: HelloWorld, VariableDemo.
B. 变量, 方法的命名规范
- 从第二个单词开始, 每个单词的首字母都大写, 其他字母全部小写(小驼
峰命名法). - 例如: zhangSanAge, studentName
C. 常量(指的是: 自定义常量)的命名规范
- 所有字母都大写, 单词之间用_(下划线)隔开.
- 例如: MAXVALUE, MINVALUE, PI
- 注意: 目前先了解即可, 面向对象部分详细解释.
D. 包的命名规范
- 所有字母全部小写, 多级包之间用.(点符号)隔开, 一般是公司的域名反写.
- 例如: cn.itcast, com.itheima
4.示例
-
需求
定义变量分别记录张三的年龄和性别(假设: 23, 男), 然后将变量值打印到控制台上. -
//1. 定义一个类, 类名叫: VariableDemo06 public class VariableDemo06 { //2. 定义main方法, 作为程序的主入口. public static void main(String[] args) { //3. 定义变量, 记录张三的年龄. int zhangSanAge = 23; //4. 定义变量, 记录张三的性别. char zhangSanSex = '男'; //5. 打印年龄. System.out.println(zhangSanAge); //6. 打印性别. System.out.println(zhangSanSex); }
十一. Java数据类型转换
1. 概述
- 不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可
2. 分类
- 自动(隐式)类型转换
- 强制(显式)类型转换
3. 自动(隐式)类型转换
-
指的是小类型转大类型,会自动提升为大类型,运算结果是大类型.
大白话翻译: 将取值范围小的类型自动提升为取值范围大的类型 -
练习:
-
1.定义两个int类型的变量a和b, 分别赋值为10, 20.
-
2.通过输出语句打印变量a和b的和.
-
3.定义int类型的变量c, 接收变量a和b的和.
-
4.打印变量c的值.
-
5.定义两个变量aa和bb, 一个是int类型的数据, 另一个是byte类型的数据.
-
6.定义变量cc接收变量aa和bb的和.
-
7.分别设置变量cc的数据类型为byte类型和int类型, 观察结果并打印.
-
-
解释
当byte类型的数据和int类型的数据的数据进行计算时, 会自动将byte类型的数据提升为int类型, 然后再计算.
-
思考
- 如果是int类型的数据和double的数据相加, 结果是什么类型?
- 如果是char类型的数据和int类型的数据相加, 结果是什么类型?
- 如果是boolean类型的数据和int类型的数据相加, 结果是什么类型?
-
结论
-
转换规则为:
-
范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int ,小数类型自动提升为 double类型。
-
boolean类型的数据只有true和false这两个, 所以boolean类型的数据不参与类型转换.
即: byte、short、char-->int-->long-->float-->double
-
-
4. 强制(显式)类型转换
- 指的是手动将大类型转换成小类型,运算结果是小类型.
- 大白话翻译: 将取值范围大的类型强制转换成取值范围小的类型.
格式
- 数据类型 变量名 = (数据类型)要被转换的数据值;
//示例: 将1.5赋值给int类型,代码修改为:
int a = (int)1.5;
思考题
-
下述代码会不会报错, 如果会, 哪一行会报错, 为什么? 怎么修改代码?
public class DataTypeDemo03 { public static void main(String[] args) { short s = 11; s = s + 3; System.out.println(s); } }
十二. ASCII码表
-
观察下述代码, 打印结果是多少呢?
public static void main(String[] args) { //字符类型变量 char c = 'a'; int i = 1; //字符类型和int类型计算 System.out.println(c+i); //输出结果是??? } -
在计算机的内部都是二进制的0, 1数据,如何让计算机可以直接识别人类文字呢?
于是就产生出了编码表的概念。-
•编码表:就是将人类的文字和一个十进制数进行对应起来组成一张表格。 ‘a’ -> 97 char:0-65535
-
•存储字符时:需要查找ASCII码表,找到字符对应的数字,将数字转换为二进制数存放到计算机中
-
•使用字符时:将对应的二进制数转换为十进制 找到ASCII表中对应的字符 显示出来
-
•将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII码
表. -
ASCII(American Standard Code for Information Interchange 美国标准信息交换码), 规则如下:
-
字符 数值
-
字符 数值 0 48 9 57 A 65 Z 90 a 97 z 122 -
注意:
- 在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。
char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。 ![image-20210717123337816]()
- 在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。
-
十三. 运算符
1. 概述
- 运算符和表达式
- 运算符:用来连接常量或者变量的符号, 就叫运算符.
- 表达式:用运算符把常量或者变量连接起来符合java语法的式子就称之为表达式。
- 不同运算符连接的表达式体现的是不同类型的表达式。
- 例如:
- +(加号) 是运算符,并且是算术运算符。
- a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
2. 分类
- 算术运算符
- 赋值运算符
- 比较(关系)运算符
- 逻辑运算符
- 三元(三目)运算符
3. 算术运算符
- 算术运算符指的是用来对变量或者常量进行算术操作的, 例如: 加减乘除等.
分类
-
算数运算符包括: 作用 + 加法运算,字符串连接运算 - 减法运算 * 乘法运算 / 除法运算 % 取模运算,两个数字相除取余数 ++ 自增运算符, 相当于自身 + 1 -- 自减运算符, 相当于自身 - 1 -
自增自减运算符
-
符号 作用 说明 ++ 自增 变量的值加1 -- 自减 变量的值减1
4. 赋值运算符
-
符号 作用 说明 = 赋值 a=10,将10赋值给变量a += 加后赋值 a+=b,将a+b的值给a 类似于 a=a+b -= 减后赋值 a-=b,将a-b的值给a *= 乘后赋值 a*=b,将a×b的值给a /= 除后赋值 a/=b,将a÷b的商给a %= 取余后赋值 将a÷b的余数给a
5. 关系运算符
-
关系运算符就是用来描述两个变量或者常量之间的关系的.主要分为以下6种:
-
符号 说明 == a==b,判断a和b的值是否相等,成立为true,不成立为false != a!=b,判断a和b的值是否不相等,成立为true,不成立为false > a>b,判断a是否大于b,成立为true,不成立为false >= a>=b,判断a是否大于等于b,成立为true,不成立为false < a<b,判断a是否小于b,成立为true,不成立为false <= a<=b,判断a是否小于等于b,成立为true,不成立为false
6. 逻辑运算符
-
逻辑运算符是用来判断并且, 或者, 除非等逻辑关系的符号.
-
该符号两端一般连接值为布尔类型的关系表达式
符号 作用 说明 & 逻辑与 a&b,并且的意思. 有false则整体为false, 都为true, 则整体为true. | 逻辑或 a|b,或者的意思, 有true则整体为true, 都为false, 则整体为false. ! 逻辑非 !a,取反的意思, 以前为true, 取反后为false, 以前为false, 取反后为true. ^ 逻辑异或 a^b,异同的意思, 相同为0, 不同为1.
7. 三元运算符
-
符号 作用 说明 && 短路与 作用和&相同,但是有短路效果, 前边出现false, 后边不执行. || 短路或 作用和|相同,但是有短路效果, 前边出现true, 后边不执行.




浙公网安备 33010602011771号