day03博客整理
1、程序的执行流程有几种
1). 顺序结构
2). 分支结构 (单路分支, 多路分支)
3). 循环结构
4). 函数的调用与返回
2、整理选择分支的语法
单if
互斥 if...else
多分支互斥 if...else if...else if...else
嵌套的if
switch...case
整理循环语法 while
do...while
for
3、循环的4要素
1.循环变量 2.循环条件 3.循环条件的迭代 4.循环体
4、什么是函数?
函数是一系列指令的集合, 通过函数封装指令, 可以达到代码复用的目的 函数是组织代码的最小单元 类是程序的最小单元
5、什么是静态函数, 函数的组成部分, 函数调用时需要注意什么 主函数和普通函数的区别是什么
主函数可以用private修饰吗? 为什么?
1、权限修饰符
public : 公共的, 可以在任何外部类中调用
private: 私有的, 只能在本类的内部调用
(default)默认不写权限修饰符: 同包的, 只能在同一个包里面调用
2、静态修饰符
static 函数必须添加static修饰符, 如果没有static修饰, 就不是函数, 而是方法
方法的调用方式跟函数是不一样的
3、返回值类型
写 void 代表函数没有返回值
写一种具体的类型 代表函数有返回值, 并且约定了返回值的类型
例如: 返回值类型的double, 那么调用方调用后, 只能用double类型的变量来接受函数的返回值
并且函数内必须用return返回值的double类型的操作数出去
函数名
(1)没有返回值,写viod
(2)有返回值,这里需要制定具体的返回值类型
参数列表
可以有参数,也可以没有参数,但是()一定要有
可以有一个参数,也可以有多个参数
定义参数的时候需要指定参数的类型和参数名,不需要写参数值,参数值室友调用方在调用函数时指定的,调用方在调用函数的时候,必须要给参数列表中所有参数值,参数格式和数据类型必须一一匹配
形式参数: 函数定义时的参数, 例如 int r
实际参数:函数调用时传递的值,例如 15
函数体
函数体是用花括号括起来的若干语句,他们完成了一个 函数的具体功能。
函数体内的前面是定义和说明部分,后面是语句部分。
函数声明与函数体放在一起组成了函数定义。
举个例子:main(){printf()();printf()();}//函数体是花括号内的所有语句的集合,包括花括号在内
返回值
函数执行完毕后返回的值
参数
变量
7、什么是类加载
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。
8、什么是方法区
1.方法区与Java堆一样,是各个线程共享的内存区域。
2.方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。
3.方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。
4.方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,会导致方法区溢出
5.关闭JVM就会释放这个区域的内存。
9、静态变量与局部变量的区别
定义的位置不同
静态变量: 定义在函数外面, 类的里面
局部变量: 定义在函数里面
作用域不同
静态变量: 当前类中所有的函数都可以使用
局部变量: 只能在当前函数内使用 局部变量一定不可以被外部访问, 因为不可用加访问权限修饰符 静态变量可以被外部访问, 因此可以添加访问权限修饰符
10、什么是栈, 什么是栈帧
栈可以称之为栈内存是一个具有动态内存区域,存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的,一般速度较快;存储地址是连续且存在有限栈容量,会出现溢出现象程序可以将数据压入栈中,也可以将数据从栈顶弹出。压栈操作使得栈增大,而弹出操作使栈减小。 栈用于维护函数调用的上下文,离开了栈函数调用就没法实现。
每一次函数的调用,都会在调用栈上维护一个独立的栈帧。每个独立的栈帧一般包括:
函数的返回地址和参数
临时变量: 包括函数的非静态局部变量以及编译器自动生成的其他临时变量
函数调用的上下文
11、break、continue、return的作用和区别
break是跳出循环
continue是结束本轮循环, 进入下一轮循环
return是函数返回
12、 画出JVM内存结构图
13、什么是debug
DEBUG是计算机排除故障的意思。
14、什么是递归
递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。
15、整理以下关键字
class 定义类
public 公共的
private 私有的
if 开始一个选择分支, if后面跟小括号,小括号里面的操作数是判断条件, 可以是直接量,变量,表达式, 但必须是boolean类型
else else后面不跟条件, 但是else if后面必须跟条件
switch 开始一个选择分支, switch后面跟小括号 小括号里面的操作数只能是byte, short, int, char类型 Java5后支持枚举类型 Java7后支持String类型, 但通过观察字节码可以发现, 本质上还是int类型 注意, switch不支持long类型, 也不支持浮点型和boolean类型
case 是switch中的一个分支, 后面跟直接量, 直接量与switch()中的操作数的数据类型必须相同 default 在switch中所有case都不满足时执行default分支, 它相当于是多重if分支中的最后的else, 是所有情况都不满足时, 默认执行的分支
break
用于跳出switch...case
用户跳出循环
循环, 那么break跳出的是最近的那个循环
while 开始一个循环, while后面跟小括号,小括号里面的操作数是判断条件, 可以是直接量,变量,表达式, 但必须是boolean类型
do do必须和while组合使用, do在前面, while在后面, 先执行一次do, 再通过判断while条件是否成立, 来决定是否循环
for 开始一个循环, for后面跟小括号, 小括号里面有3组表达式, 分别是循环变量初始化, 循环条件, 循环变量的迭代
continue 本轮循环结束, 进入下一轮循环
void 函数没有返回值
return 函数返回,
后面可以什么都不跟, 也可以跟一个操作数, 具体要看函数是否定义了返回值类型
static 静态的



