javase
***1、第一阶段:*语法基础
关键字
标识符 规则 规范
注释 单行注释// 多行注释/ / 文档注释/ */
常量-字面量 直接在程序中出现的数据 常量池
进制转换 二进制 八进制 十六进制 十进制 N进制
变量
1.变量是内存空间中的一个临时存储区域
2.这个区域只能存储相互兼容的常量(仅仅存储常量在池中的地址)
3.区域有多大 + 区域存储什么类型的值 数据类型
基本数据类型(大部分在栈里 也有一部分在堆里)
数字 byte 1-8 -27~-271 -128~127
short 2-16 -32768~32767
int 4-32
long 8
float 4
double 8
字符 char 2 0~65535
布尔 boolean ?
引用数据类型(对象-堆内存中)
字符串
数组[]
对象
运算符
算数运算符 + - * / % ++ – 重点++
后++
1.开辟临时存储区
2.将原先的值赋值到临时存储区
3.本身+1
4.将临时存储区的值向外调用
i=i++ i不变
赋值运算符 += -= /= %= = =
+=
x=x+m => x+=m
short s=3;
s+=3;//没问题
s=s+3;//有问题
比较运算符 > < >= <= == !=
逻辑运算符 & | ! ^ && ||
主要针对布尔进行计算
重点:& 和 &&的区别
& 两边都执行
&& 左边为假 右边不执行
| 两边都执行
|| 左边为真 右边不执行
位运算符 & | ^ ! >> <<
主要针对数字进行计算
三元运算符
数据类型 变量名=布尔表达式?值1:值2;
语句结构
顺序结构:从上到下一行一行执行(从主函数开始)
选择结构:在从上而下的运行过程中 产生了分支
if
switch
循环结构:… 产生了重复执行
循环四要素(循环初始化、循环继续条件、循环体、循环步长)
1.循环的初始化:循环从哪里开始
2.循环继续条件:什么时候继续循环
3.循环体:需要被重复执行的代码
4.循环步长(周期,间距):统计次数 改变数据
for
while
do-while
跳转结构:… 可以跳出某一个语句
break:
可以用在switch 直接跳出
可以用在循环 直接跳出
continue
只能用在循环 当前循环结束开启下一次循环
return
仅仅是结束当前函数 如果return后有代码 执行不到 报错!
函数-方法 Method Function
修饰符 返回值类型 函数名(参数列表){
函数体;
return 返回值;
}
修饰符:主要修饰该函数的使用权限和该函数的类型
权限 public protected 默认 private
类型 static native synchronized …
当目前为止推荐使用 public static
返回值:函数的运行结果(可有 也可无)
返回值类型:就是函数的运行结果的数据类型(有该是啥就是啥 无void)
函数名:对该独立小功能的命名
参数列表:参数类型 参数1,参数类型 参数2…
主要用于接收调用者传来的数据
如果函数没有返回值 返回值类型void 最后一个return可以不写 但不代表不存在!
函数的重载:在同一个类中 出现的重名函数
如何区分重载:参数类型的排列组合
个数和顺序 与参数名没有任何关系
函数的递归调用:函数自己调用自己(栈溢出) 要注意何时结束
函数的运行时基于栈的:函数运行要进栈 函数结束要出栈
一维数组-对象
内存划分:
栈-运行函数
堆-存储对象
方法区-存储应用程序运行代码
本地方法区-存储本地操作系统运行代码
寄存器-CPU
!!!堆里面的对象一定会有默认初始化!!!
定义数组
int[] arr=new int[10];
[0,0,0,0,0,0,0,0,0]
int[] arr=new int[]{1,2,3,4,5};
[1,2,3,4,5]
int[] arr={1,2,3,4,5};
[1,2,3,4,5]
数组:存储一系列相同数据的集合
特点:存储空间大小一致且连续
提供角标访问
An=A1+(n-1)d
A1 第一个元素的地址
n 第n个元素
d 每个元素空间的大小
An 第n各元素的地址
优点:查 改 快 时间复杂度O(1)
缺点:增 删 慢 时间复杂度O(n)
创建一个数组的流程:
int[] arr=new int[10];
1.在堆内存中开辟空间(10int) 分配地址
2.对数组内容进行默认初始化(全0)
3.在栈内存中开辟名为arr的变量空间
4.将对象的地址赋值到arr中
int[] arr=new int[]{1,2,3,4,5};
1.在堆内存中开辟空间(10int) 分配地址
2.对数组内容进行默认初始化(全0)
3.在分别对元素进行赋值
4.在栈内存中开辟名为arr的变量空间
5.将对象的地址赋值到arr中
排序:
选择排序O(n^2)
冒泡排序O(n^2)
插入排序O(logn)
查找:
线性查找O(n)
二分查找O(logn)
多维数组-二维数组
二维数组本质上就是一维数组
一个一维数组中的每个元素又是另一个一维数组
int[][] matrix=new int[4][4]
int[][] matrix=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int[][] matrix={{1,2,3},{4,5,6},{7,8,9}};
矩阵
锯齿矩阵(每行长度不一样)
int[][] matrix={{1,2,3},{4,5},{6}};
1 2 3
4 5
6
matrix.length 行数
matrix[i].length 第i行的长度 当前行的列数
4_19
4_20
4_22
4_23
4_25
4_26