第一节 初识Java
编译与解释
什么是编译?什么是解释?编译与解释的区别
编译:源代码文件 ——编译(编译器)——目标代码文件(机器码0101)——计算机执行目标代码文件——结果
PS: 目标代码文件 针对系统平台所产生的
解释:源代码文件——解释(解释器)——结果
编译和解释的区别:编译不可以跨平台,解释可以跨平台;编译的运行速度相较于解释会更快
Java的平台体系
JavaSE(Java标准版)--Java核心技术(可以做游戏开发)
JavaEE(Java企业版)--各种框架(企业级应用OA、CRM等)
JavaME(Java微型版)--主要用于移动设备应用开发(被安卓替代)
Java程序的开发运行流程
Java属于半编译半解释性语言(既能跨平台,速度又相较纯解释性语言要快)
Java Lts版本:长期支持版本(long time support) 8、11、17
Java源文件(XXX.java)——Java编译器——字节码文件(XXX.class)——Java虚拟机(JVM)——操作系统
-
没有IDE(集成开发环境)--IDEA时,运行Java文件
-
需要执行命令 javac XXX.java 进行编译
-
执行命令 java XXX 进行解释和运行
-
javac和java命令 就是在调用JDK中的程序完成功能
-
JDK-- Java开发工具集(Java开发环境和Java运行环境及各种类库)
配置环境变量: path环境变量用于记住程序路径,方便在命令行(cmd)窗口的任意目录启动程序
名词解释:环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数(拓展)
第二节 基本概念和语法
编程语言如何学习?编程语言本质上是人类与计算机交流沟通的语言,和平时的自然语言(汉语、英语、法语等)差不多,只是一个沟通交流的方式,只是说编程语言沟通的对象是计算机(编程语言的学习,没有捷径,多写多练)
标识符
什么是标识符?字面含义,打上标记帮助识别的符号;Java中类、变量、常量、方法等名称
标识符的命名规则:
-
由数字、字母、下划线(_)和美元符号($)
-
不能以数字开头
-
严格区分大小写
标识符的命名规范:
-
类名--首字母大写,如果由多个单词组成,后续单词首字母大写
-
变量/方法--首字母小写,如果由多个单词组成,后续单词首字母大写
-
常量名--所有字母大写,多个单词用下划线分隔(_)
-
见名知意(单词,汉语全拼)
标识符的分类:
语言预定义标识符--关键字(int/boolean/char/double/true/false/if/long/byte/float/for/break) 60
用户自定义标识符--前人自定义和开发者自定义(避开关键字和前人自定标识符)
类的结构和main方法结构
// 文件名和类名相同 public class 类名{ } // 程序的入口 主方法 public static void main(String[] args){ }
三种注释
注释的作用:描述代码的功能,其提示性作用,在编译对Java文件进行编译时会将其忽略 // 单行 /* 多行注释 */ /** 文档注释 */
数据类型
作用:告知计算机,以何种方式储存数据;告知计算机,开辟多大的空间存储数据
分类:基本数据类型和引用数据类型
基本数据类型:整型(byte/short/int/long)、浮点(float/double)、字符(char)、布尔(boolean;取值true/false)
引用数据类型:字符串(String)、数组
变量和常量
有了数据类型后,就能利用声明指令在内存中划分空间来存放对应的数据
声明的语法
变量:数据类型 变量名 = 变量值;// 声明的同时就初始化
数额类型 变量名; // 声明
变量名 = 变量值; // 初始化
PS: 生命周期:始于声明,终于包含它离它最近的结束花括号
变量的本质:在内存中划分的一块储存空间用于存放数据,在空间中的数据运行在程序运行过程中改变
常量:final 数据类型 常量名 = 常量值;
PS: 常量必须在声明时赋值,且以后不能更改!!!
常量的本质:在程序运行期间,固定不变的量
运算符
运算符的分类:算术运算符、赋值运算符、比较运算符、三目运算符、逻辑运算符、位运算符(略)
算术运算符:+ - * / %(求余)
赋值运算符:= += -= *= /= %= ++(自增) --(自减)
比较运算符:> < >= <= ==(等于 表示比较) !=(不等于)
三目运算符: 布尔表达式 ?"真" :"假"
逻辑运算符: &&(短路且) ||(短路或) !(非) ^(异或)
短路运算符和非短路运算符的区别:
短路运算符,如果第一个表达式可以决定整个表达式结果,则第二个表达式不执行
非短路运算符,无论第一个表达式结果如何,第二个表达式都会执行
数据类型的转换
自动类型转换:运算符两端数据类型不一致时
byte,short,char < int < long < float < double
口诀:小转大(容量),低转高(精度)
强制类型转换:语法 (目标数据类型)数据
输出和输入语句
// 输出 System.out.println(数据);// 换行 System.out.print(数据);// 不换行 // 输入 // 声明输入器 Scanner scan = new Scanner(System.in); // 声明变量结束输入的数据 double doubleNum = scan.nextDouble(); int intNum = scan.nextInt(); String str = scan.next(); // 关闭输入器 scan.close()
第三节 分支语句
在讲分支语句之前,代码在main方法内部,一行一行从上到下顺序执行,把这样的结构,叫做顺序结构
讲分支语句后,代码根据不同的条件走向不同的分支(总体还是从上到下执行),把这样的结构,叫做分支(选择)结构
讲循环语句后,代码重复不停的被执行,把这样的结构,叫做循环结构
if语句
// 单分支 先做条件表达式判断,结果为真,执行语句块内容,为假则跳过语句块 if(条件表达式){ // 语句块 } // 双分支 做条件表达式的判断,结果位置,执行if后的语句块1,为假则执行语else后的语句块2 if(条件表达式){ // 语句块1 }else{ // 语句块2 } // 多分支 依照条件表达式出现的顺序进行判断,从上到下某一处条件表达式结果为真,则执行对应语句块代码,全部为假则执行else语句块内容 if(条件表达式1){ // 语句块1 }else if(条件表达式2){ // 语句块2 }else if(条件表达式3){ // 语句块3 } ---- else{ // else语句块 }
switch-case语句
/*计算表达式结果,用结果和case后的数据进行比较,如果比较通过则会进入对应位置执行代码,但是注意当在某处case比较通过后,后续就不会再比较,会直接执行switch语句块中后面的代码,为了让代码只执行case后的代码,每一个case都需要加上break*/ switch(表达式){ case 数据1: 语句1; break; case 数据2: 语句2; break; default: default语句块 break; }
if和switch的区别
if语句可以做范围的比较和值的比较,switch语句只能比较值;
if语句只能接收布尔值,switch语句可以接收byte、short、int、char、String
第四节 循环语句
什么是循环? 重复执行某些含有规律代码的过程
循环的组成?循环语句块 和 循环终止条件
三种循环语句
// for循环 明确知道循环的次数 for(表达式1;表达式2;表达式3){ // 循环语句块 } /* 三个表达式的作用 表达式1:计数变量的声明 表达式2:循环终止条件 表达式3:改变计数变量的值 for循环的执行顺序:先执行表达式1,再执行表达式2做判断,结果为真去执行循环语句块,再执行表达式3; 再执行表达式2做判断,结果为真去执行循环语句块,再执行表达式3; 再执行表达式2做判断,结果为假跳出循环 */ // while循环 明确知道循环终止条件时 while(条件表达式){ // 循环语句块 } /* while循环执行顺序:先做条件表达式的判断,结果为真,执行循环语句块,为假跳出循环 */ // do-while 循环 知道循环至少会执行一次,知道循环终止条件时 do{ // 循环语句块 }while(条件表达式); /* do-while 循环,先执行循环语句块,后做条件表达式的判断,如果为真,再执行循环语句块,为假跳出循环 */
先验循环和后验循环
第五节 数组
数组的基本概念
什么是数组?是集合当中最简单原始一种
什么是集合?可以把一组数据集中放置在一起,可以对数据进行批量操作
数组的特点
只能存同一数据类型的数据
所有元素数据存放在连续的内存空间中
数组的大小,一旦确定不可更改
数组的声明语法
数据类型[] 数组名 = {数据1,数据2,数据3,数据3,……,数据n}; 数据类型[] 数组名 = new 数据类型[数组长度];
引用数据类型和基本数据类型的区别
引用数据类型变量空间中存放的引用值(地址值),该值指向真正的数据
基本数据类型变量空间中存放的是基本数据类型本身
数组元素的访问语法
什么是数组元素?数组中的每一个数据,都是数组元素
数组元素的访问语法:数组名[下标]
下标范围:最小下标为0,最大下标 数组长度 - 1 (数组名.length 表示数组长度)
数组的操作
拷贝、元素增加、元素减少、排序(冒泡排序)
随机数 Math.random() 0-1之间浮点型随机数
// 整型随机数 强转的语法 和 随机数 Math.random()
字符串转字符数组 字符串.toCharArray()
一个字符串中的字符,由大写字母转小写字母 String str = "asABC"; // 字符串转字符数组 字符串.toCharArray() char[] chars = str.toCharArray(); // {'a','s','A','B','C'}