JDK
JDK 全称 Java Development Kits , 是Java开发工具包
JRE 全称 Java Runtime Envirment,是Java运行时环境
JVM 全称 Java Virtual Machine,是Java虚拟机
JDK包含JRE,JRE中有JVM。
解释型语言
1. 编译语言是指定文件,编译到指定位置,生成指定的二进制文件。特点:效率高、速度快
2. 解释语言是指定文件,解释到任何位置,生成指定的二进制文件。特点:跨平台性好
变量(一个可以装载“字面量”的容器)
代码的结尾要用;
1.数据类型 变量名称 = 数据值 int a = 1;
2.变量声明:数据类型 变量名称 int b;
变量初始化:变量名称= 数据值 b = 2;
3.变量的名称:1、变量名称的开头只能以_或$(¥),英文字母定义
2、变量名称的中间只能以_或$(¥),英文字母、数字定义
在方法内,如果一个变量仅仅只声明,那么它不可以被使用
变量不能重名;变量名称的大小写敏感;变量可以多个一起定义
注释:
1. 单行注释:注释一行内容。 快捷键:Ctrl + /

2. 多行注释:注释一个代码片段。快捷键:/* + Enter

3. 文档注释:可以注释一个方法,或者一个类.。 快捷键:/** + Enter

标识符(为“变量、类、方法”进行命名的符号)
只能以_、$、字母开头
中间和结尾以_、$、字母、数字为主要内容
不能以关键字或者特殊符号命名

标识符常见的命名方式:1、驼峰法 例:我的苹果==>my apple ==> myApple MyApple
首写字母大写:大驼峰法 主要用于类 或者接口命名
首写字母小写:小驼峰法 主要用于变量、方法命名
2、下划线隔断法 例: 我的苹果 == > my_apple
关键字:50个常见关键字
Java由C/C++发展而来
其中有5个常见的保留字:goto const (true,false,null)
goto 、const已经被弃用 true,false,null作为值的类型存中java中
基础数据类型
整数类型:byte、short、int、long(默认值:int)

无论数值类型以何种方式表示,都是以十进制输出
long:int数值范围无法表示的情况下用long

浮点数类型:float、double(默认值:double)
float:

double:

字符类型:char

逻辑型:boolean
boolean值:true、false

数值类型转化:
大范围的数值类型 ==> 小类型的数值类型:强制转化

小范围的数值类型 ==> 大类型的数值类型:自动转化

数值范围大小:byte < short < int < long < float < double
char类型右侧为ASCII码的编码数值,而不是简单的int类型

数值类型的值不可以强制转化为boolean值。boolean值也不可以转化为数值类型的值
运算符
加、减、乘、除、取余

两数相除:1、两数都是整数类型,求整数商
2、两数任意一个是浮点数,求浮点数的商

数据类型表达式:
运算表达式的最终类型,由运算表达式中的最大类型来决定。

++ 、 --运算(特殊运算)
++ : 自加一
-- : 自减一

++、--在变量“左侧”和“右侧”的区别
在左侧:先对值进行自加,再将值赋值给左侧
在右侧:先将值赋值给左侧,再自加。

++ 、 -- 优先级高于+ 、- 、* 、 /
字符串拼接:
判断依据: + 的任意一侧有字符串出现时,它就是拼接符

字符串拼接符与普通的加减运算的优先级一致

赋值运算符 = :1、优先级最低
2、从右往左运算
扩展运算符:+= 、-= 、/= 、*=、 %=

交换两个数的值

1.使用中间量

2.不使用中间量

比较运算符
== 等号、===恒等,引用数据类型、>、<、>=、<=,!=

逻辑运算符(左右两侧必须是布尔表达式)
与 &&、&,或|| 、|,非!
与:并且(一假即假)
&&:短路与
例: 条件一 && 条件二 &&条件三 ...
如果"条件一"为false,那么后续的条件就没有判断的必要
&:逻辑与
例: 条件一 & 条件二 &条件三 ...
即便”条件一“为false,后续的条件仍要继续判断
或:可能(一真即真)
||:短路或
如果前面的条件为真,那么后续的条件没有判断的必要
| :逻辑或
即便前面的条件为真,后续的条件依旧需要判断
与和或的混合判断
逻辑与 的优先级高于 逻辑或,所以先执行与运算
非:取相反的布尔表达式的值
非运算 优先级 高于”与、或“运算
位运算
& 按位与:二进制比较,对位都为1结果为1
| 按位或:二进制比较,对位都为0结果为0

^ 异或:二进制比较,对面不相同结果为1

~ 非位:把所有二进制位取反(包含了符号位)

表达式
算数表达式

赋值表达式(赋值运算的优先等级最低,从右往左运算)

布尔表达式(最终结果是boolean)

逻辑表达式(最终结果是boolean)

三目运算表达式
条件: ? 选项1 : 选项2
返回值是选项1或选项2的值
描述:当条件成立时,返回选项1的值,否则返回选项2的值

if语句
格式:if(布尔表达式){ 执行语句 }
描述:如果布尔表达式成立,就会执行”执行语句“,否则直接跳过这一次判断

if...else语句
格式: if(布尔表达式){ 执行语句 }else{ 执行语句 }
描述:如果布尔表达式成立,就会执行if中的”执行语句“,否则执行else中的”执行语句“

if ... else if 语句
格式if(布尔表达式){ 执行语句 }else if(布尔表达式){ 执行语句 }
描述:如果if中布尔表达式成立,就会执行if中的”执行语句“
如果else if中布尔表达式成立,就会执行else if中的”执行语句“
随着条件的增多,else if数量可以增加

控制台输入:java.util.Scanner
引入Scanner工具:import java.util.Scanner;
新建Scanner对象:Scanner scan = new Scanner(System.in);
先使用System.out.println("请输入内容:");
使用scan.nextXXX 定义输入值的类型。

随机数
Math.random() 创建一个0~1的数(且不包含1) double类型

switch语句
格式:switch(数据值或变量{case 值1 : ... ;case 值2: ... ; ...}
break:终止整个switch语句

注意:1、switch货号中一般是变量,变量需要指定特数的数据类型(byte short int char String(Character))
switch不可以设置的类型有:long,double,float
2、有break的情况,跳出switch语句,没有break情况,程序会继续往后执行。
3、于if语句与switch的区别:switch不能判断范围条件。
4、default除了case之外的其他条件
for循环
格式:for(初始化内容;结束循环条件;变化方式){...}
初始化内容:int i = 0
结束循环条件:i < 5(布尔表达式)
变化方式:i++

死循环:循环没有结束条件

while 循环
格式:while(布尔表达式){ ... }

while死循环:while(true)
判断什么时候用for循环,什么时候用while循环
for循环用于已知的循环次数
while循环用于结束条件
do - while 循环
格式: do{执行代码}while(布尔表达式);

while,do-while的区别:
while,先判断再执行
do-while,先执行再判断
break和continue
break:在循环中出现,退出循环
continue:阻止后续程序的执行,但不会退出循环。
数组:
简单定义:将一类数据放到一个整体中
专业定义:将数据类型相同的数据,放到一个集合中
数组的定义方式:
1、静态初始化:在构建数组时就给予初始化的值
数组类型: 数据类型[]、变量[]
数组初始化{数组元素,数组元素,...}

2、动态初始化:先构建数组的对象,然后在逐一赋值初始化
基本格式:数据类型[] 变量名 = new 数据类型[数组的长度]

数组的类型决定了元素是什么样的类型
数组元素都具有下标值,下标值从0开始
例:int[] a = {1,2,3};数组a下标位为1的元素是“2”
通过“数组变量[下标值]”将数组元素取出

取不到“下标不存在”的值,报运行错误。
遍历数组:
1、可以通过length这个属性(变量)获取数组的长度

2、将数组内容全部输出到打印语句

数组空间:
int[] a = {1,2,3};
1)数组a的地址,指向了1,2,3元素的堆内存空间
2)而数组a的地址等于1元素所在空间的地址。
3)1,2,3元素所在的堆内存空间的地址是连续的
对指定下标的数组元素赋值,可以直接修改该数组


数组复制
数组==>新的数组 length = end - start + 1

数组复制System.arraycopy
System.arraycopy(src,srcPos,dest,destPos,length)
src:被复制的数组
srcPos:从src的哪个下标开始复制
dest:粘贴到的数组
destPos:从dest的哪个下标开始粘贴
length: 复制的数据元素的长度

将一个数组完整的复制给另一个数组

数组扩容
注意:数组本身在定义之后,不可以增减长度
Arrays.copyOf(src,length)
src:需要扩容的数组
length:扩容的长度

冒泡排序

排序函数(Arrays.sort())

二维数组
二维数组:二维数组的元素是一维数组
定义方式 int[][] 数组名称
int[] a = {1,2,3};
int[] b = {4,5,6};
int[] c = {7,8,9};
int[][] d = {a,b,c};
定义方式:
静态初始化
int[][] n1 = {{1,2,3},{3,4,5}};
每个元素中数组长度可以不同

动态初始化
理解方式一:new int[行][列]
理解方式二:new int[有几个一维数组][这些一维数组中有几个元素]

数组的长度length

二维数组的遍历
