1. 程序的执行流程有几种
1). 顺序结构:程序从上到下逐行地执行,中间没有任何判断和跳转。
2). 分支结构 (单路分支, 多路分支):
if语句:使用布尔表达式或布尔值作为分支条件来进行分支控制。
switch语句:用于对多个整型值进行匹配,从而实现分支控制。
3). 循环结构: 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。
while循环语句:先判断循环条件,如果条件为真则执行循环体
do......while循环语句:先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下一次循环,否则终止循环。与while循环的不同是,do while循环的循环条件后必须有一个分号,这个分号表明循环结束。
for循环:
注意:
4). 函数的调用与返回:
retrun语句:return的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。程序中大部分循环体都被放在方法中执行,一旦在循环体内执行到一个retrun语句,retrun语句就会结束该方法,循环自然也随之结束。
return可以在方法内任何地方使用:
- 方法内可以有return, 也可以没有, 如果没有, 编译器默认会在方法最后加一个return
- 方法内只能有一个return , 这句话是对的, 但是有问题, 为什么有问题
方法内可能有分支, 如果在分支中return的话, 每个分支都可以return
方法中如果没有分支, 则只能有一个return, 有分支, 可以有多个return
- return语句的后面不能再写任何代码, 这句话是对的, 但是有问题, 为什么有问题
方法内可能有分支, 如果在分支中return的话, 则分支中return的后面不能再写代码
但是不代表分支的外面不能继续写代码, 因为分支未必会执行
2. 整理选择分支的语法:
单if
互斥 if...else
多分支互斥 if...else if...else if...else
嵌套的if
switch...case
3. 整理循环语法:
while
do...while
for
循环的4要素:
1.循环变量初始化
2.循环条件
3.循环条件的迭代
4.循环体
什么是函数?
函数是一系列指令的集合, 通过函数封装指令, 可以达到代码复用的目的
函数是组织代码的最小单元
类是程序的最小单元
4. 什么是静态函数, 函数的组成部分, 函数调用时需要注意什么
主函数和普通函数的区别是什么
静态函数: 函数调用的结果不会访问或者修改任何对象(非static) 数据成员 ,这样的成员声明为 静态成员 函数比较好。
主函数可以用private修饰吗? 为什么?
不能,因为private修饰符是使用在类的 ,如果在在类中声明一个成员变量使用private修饰后,这个变量只能被这个类中的方法所访问,而在方法体中声明变量,这个变量的作用域是从这个变量声明直到方法体结束,如果再使用private修饰的话两者就会冲突,所以不能在方法体内声明一个变量为private,而且在方法里声明变量为private也没什么意义,方法内声明的变量的作用域本来就在方法体内,也在他本身的类中,自然也不会被其他类中的方法所访问。
1. 权限修饰符
public : 公共的, 可以在任何外部类中调用
private: 私有的, 只能在本类的内部调用
(default)默认不写权限修饰符: 同包的, 只能在同一个包里面调用
2. 静态修饰符
static 函数必须添加static修饰符, 如果没有static修饰, 就不是函数, 而是方法
方法的调用方式跟函数是不一样的
3. 返回值类型
写 void 代表函数没有返回值
写一种具体的类型 代表函数有返回值, 并且约定了返回值的类型
例如: 返回值类型的double, 那么调用方调用后, 只能用double类型的变量来接受函数的返回值
并且函数内必须用return返回值的double类型的操作数出去
3.返回值类型:
写void代表函数没有返回值
写一种具体的类型,代表函数没有返回值,并且约定了返回值的类型:
例如:返回值类型的double,那么调用方调用之后,只能用double类型的变量来接受函数的返回值,并且函数内必须使用
4.
函数名 | 参数 | 返回值 | 作用 |
random | 无 | double | 随机生成0-1的浮点数 |
min/max | 无 | int | 计算最大值,最小值 |
abs | int | 绝对值函数,可用于将负数变为正数 | |
round | 无 | int | 可实现四舍五入 |
exp | 无 | int | 例如exp(2)代表e的平方 |
log | 无 | double | 以e为底x(传进来的参数)的对数 |
rint | 无 | int | 返回最接近参数的整数值 |
7. 什么是类加载:我们写的源代码文件和编译后生成的字节码文件都是存储到磁盘中的,而CPU是不能直接执行磁盘中的代码文件,因此在执行时需要由类加载系统将代码文件加载到方法区中执行。
8. 什么是方法区:方法区就是jvm虚拟机内存中负责存储字节码的区域称为方法区。
9.静态变量与局部变量的区别:
定义的位置不同
1).静态变量:定义在函数外面,类的里面
2).局部变量:定义在函数里面
作用域不同
静态变量: 当前类中所有的函数都可以使用
局部变量: 只能在当前函数内使用
局部变量一定不可以被外部访问, 因为不可用加访问权限修饰符
静态变量可以被外部访问, 因此可以添加访问权限修饰符
10. 什么是栈, 什么是栈帧:
什么是栈:是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。
什么是栈帧:栈帧是栈区中的最小执行单元,栈帧中包含方法中的指令集和局部变量表、返回值地址;一个方法中不能有同名的局部变量,但是不同的方法中可以有同名的局部变量,局部变量的作用域只在当前方法中可操作,无法在一个方法中操作另一个方法中的局部变量,但是可以将方法中的局部变量返回给另一个方法;方法是静止的,栈帧是运行的,栈帧是方法的运行时的时态
11. break、continue、return的作用和区别:
break是跳出循环
continue是结束本轮循环, 进入下一轮循环
return是函数返回
12. 画出JVM内存结构图:
13. 什么是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 1. 用于跳出switch...case
2. 用户跳出循环
如果有循环嵌套循环, 那么break跳出的是最近的那个循环
while 开始一个循环, while后面跟小括号,小括号里面的操作数是判断条件, 可以是直接量,变量,表达式, 但必须是boolean类型
do do必须和while组合使用, do在前面, while在后面, 先执行一次do, 再通过判断while条件是否成立, 来决定是否循环
for 开始一个循环, for后面跟小括号, 小括号里面有3组表达式, 分别是循环变量初始化, 循环条件, 循环变量的迭代
continue 本轮循环结束, 进入下一轮循环
void 函数没有返回值
return 函数返回,
后面可以什么都不跟, 也可以跟一个操作数, 具体要看函数是否定义了返回值类型
static 静态的