java的八九十下 (接七上八下)

流程控制与数组

1.程序的执行流程有几种

1)顺序结构

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。
如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。这意味着:如果没有流程控制,Java方法里的语句是一个顺序执行流,从上向下依次执行每条语句。

程序是从入口处开始运行,从上往下开始运行

2)分支结构

if条件语句

单路分支

单if

if  开始的一个选择分支

if后面跟着小括号,小括号里面的操作数是判断条件,可以是直接量,变量,表达量,必须是boolean类型

 多路分支

选择分支(有分支条件,条件成立执行A,条件不成立执行B)

if else

else后面不跟条件

但是else if 后面必须跟着条件开始一个选择分支

else只能有一个

switch分支语句

switch后面跟小括号

小括号里面的操作数只能是byte,short,int,char类型

 Java5后支持枚举类型

Java7后支持string类型,但通过观察字节码可以发现,本质上还是int类型

注意,switch不支持long类型,也不支持浮点型和boolean类型

case 是一个switch中的一个分支,后面跟直接量,直接量与switch()中的操作数的数据类型必须相同

default 在switch中所有case都不满足

3)循环结构

某段代码会循环执行多次,可以通过循环条件进行控制执行的次数

white 循环语句

do white 循环语句

for循环

嵌套循环

4)函数的调用与返回

从当前函数内到另一个函数中运行,运行结束后,回到当前函数内运行

 public

内部调用

外部调用

private

内部调用 

外部调用

什么是函数?

函数是一系列指令的集合,通过函数封装指令,可以打到代码复用的目的

函数是组织代码的最小单元

类是程序的最小单元

什么是静态函数,函数的组成部分,函数调用是需要注意什么?

函数的组成部分 

1.权限修饰符

public:公共的,可以在任何外部类中调用

private:私有的,只能在本类的内部调用

(default)默认不写权限修饰符:同包的,只能在同一个包里面调用

2.静态修饰符

static 函数必须添加static 修饰符,如果没有static 修饰,就不是函数,而是方法

方法的调用方式跟函数是不一样的

3.返回值类型

写void 代表函数没有返回值

写一种具体的类型 代表函数有返回值,并且约定了返回值的类型

例如: 返回值类型的double,name调用方调用后,只能用double类型的变量来接受函数

并且函数内必须用return返回值的double类型的操作数出去

4.函数名

5.参数列表

6.函数体

7.返回值

类加载

我们写的代码文件和编译后的字节码文件都是存储在磁盘中的,cpu不能直接运行磁盘中的文件,因此在程序运行时会有类加载系统,把字节码文件加载到内存中方法区中存储起来

CPU只能读取内存

方法区

是jvm虚拟机内存中负责存储字节码的区域

栈区

栈区是jvm虚拟机中负责执行的区域,栈区中的最小单位是栈帧,栈区数据结构是先入后出

方法入栈

从方法区的字节码中找到方法的代码压入栈区,创建栈帧执行的过程称 为方法入栈

方法出栈

方法在栈中执行结束后,销毁栈帧称 为方法出栈

栈帧

最小执行单元

方法的指令集(方法中的代码)

局部变量表(方法中声明的所有变量)

返回值地址(方法运行后返回的结果)

栈顶

Cpu永远只运行栈顶的栈帧

栈底

第一个入栈执行最后一个销毁的出栈

压栈

栈的插入操作,叫做进栈  。也称压栈、入栈

主函数和普通函数的区别是什么?

主函数只有一个,普通函数有多个

主函数是程序的入口,第一个进入栈,位于栈底

主函数的修饰符必须用public static

程序从main函数开始执行,通过主函数调用其他函数。然后其他函数可以在继续调用其他函数。

主函数可以调用其他所有的函数,但是其他函数不能调用主函数。

静态变量与局部变量的区别

定义的位置不同

静态变量:定义在函数外面,类的里面

局部变量;定义在函数里面

作用域不同

静态变量:当前类中所有的函数都可以使用

局部变量:只能在当前函数内使用

局部变量一定不可以被外部访问,因为不可用加访问权限修饰符

静态变量可以被外部访问,因此可以添加访问权限修饰符

break、continue、return的作用和区别

  break是跳出循环

  continue是结束本轮循环, 进入下一轮循环

  return是函数返回

画出JVM内存结构图

控制循环结构

使用break结束循环

没有使用break

使用break

使用continue 忽略本次循环剩下语句

没有使用continue

使用continue

使用return结束方法

数组类型

java的数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是惟一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据

定义数组时不能指定数组的长度

数组的初始化

数组的初始化有两种:

静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。

动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

什么是debug

DEBUG

DEBUG是计算机排除故障的意思。马克2号(Harvard Mark II)编制程序的格蕾丝·霍珀(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍珀诙谐地把程序故障统称为“臭虫(bug)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在window系统中也是极其重要的调试操作。

什么是递归

整理以下关键字


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     静态的

Java数学函数Math类常用方法

1、abs(x)  返回x这个数的绝对值。

Math.abs(11.3);    //11.3
Math.abs(-11.3);   //11.3

2、copySign(x,y)  返回第一个参数的量值,第二参数的符号。

Math.copySign(1.25, -11.3);    //-1.25
Math.copySign(-11.3, 1.25);    //11.3

3、signum(x)  如果x大于0则返回1.0,小于0则返回-1.0,如果等于0则返回0.0

Math.signum(10.3);        //1.0
Math.signum(-10.3);       //-1.0
Math.signum(0);           //0.0

4、exp(x)  返回e的x次幂。

5、expm1(x)  返回e的x次幂 - 1。

6、ceil(x)  返回最近的且大于x的整数。

Math.ceil(15.5);    //16
Math.ceil(-15.5);   //-15

7、floor(x)  返回最近的且小于x的整数。

Math.floor(15.5);    //15
Math.floor(-15.5);   //-16

8、hypot(x,y)  返回x²+y²的二次方根。

Math.hypot(x, y);    //√(x²+y²)
Math.hypot(3, 4);    // 5

9、sqrt(x)  返回x的二次方根。

Math.sqrt(9);        // 3.0
Math.sqrt(-25);      // -5.0

10、cbrt(x)  返回x的立方根。

Math.cbrt(27.0);    // 3
Math.cbrt(-125.0);    // -5

11、log(x)  返回以e为底的对数。

Math.log(e);    // 1

12、log10(x)  返回以10为底的对数。

Math.log10(100);    // 10

13、log1p(x)

Math.log1p(x);    // ln(x+1)

14、max(x,y)  返回较大值。

Math.max(3, 10);    // 10
Math.max(-3, -10);  // -3

15、min(x,y)  返回较小值。

Math.min(3, 10);    // 3
Math.max(-3, -10);  // -10

16、rint(x)  四舍五入,返回double值。如果居中​0.5​,则会取偶数。

Math.rint(11.3);    // 11
Math.rint(-11.3);    // -11
Math.rint(23.9);    // 23
Math.rint(-23.9);    //-23
Math.rint(32.5);    // 32
Math.rint(33.5);    // 34

17、round(x)  与rint用法相同,float返回值为int,double返回值为long。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值