1.break,continue作用
答:①break中断循环,continue中断当前循环
②break终止switch的穿透性
③break可以中断自己命名的循环
2.方法作用?
答:①使程序变得更简短清晰
②有利于程序的维护(修改)
③可以提高开发效率
④可以提高代码的重用性
3.系统识别方法时,识别的是方法名_参数类型1_参数类型2_...
a.public void play(int a){ play_int}
b.public void play(int b){ play_int}
c.public void play(float b){ play_float}
d.public int play(float b){ play_float}
e.private int play(int b){ play_float}
a与b不是重载,会识别成一个方法
a与c是重载,参数类型不同
c与d不是重载,重载与返回值无关,这里是错误,不知道返回哪种类型
d与e是重载,重载与修饰符无关
4.public static void main(){
public void play(){}
}
答:方法的定义不能嵌套
5.public void run(){return 1;}
答:返回的是空值
6.public byte show(int a){return a;}
答:强制类型转换
7.方法的调用一定在方法里面
答:不对,可以在类里面给成员变量初始化时使用,也可以在代码块或者静态代码块中使用。
8.成员变量可以在任意方法中使用
答:目前可以。
9.数组中是否同时存储简单数据类型和引用数据类型的数据
答:可以存储简单数据类型和引用数据类型的数据,但是不能同时存储。
3.方法的内存展示
-
java将内存分成了5块儿,分别是堆区,栈区,方法区,本地方法区,寄存器
-
栈区:里面存放数据的特点是:先进后出,我们主要将加载时的局部变量和函数放在栈区,数据的特点是使用完立刻释放 。
-
堆区:存放的是实体(对象和数组),实体可以同时存放多个值,实体里面的变量如果不赋值,会 有默认值.整型数据默认值是0,boolean---false 。(使用完不会立刻释放,会在某个时刻释放)
了解:
1.方法区:程序运行中的二进制文件等(比如:.class,常量,常量在常量区,是方法区的一块) 。
(.class对应的.class对象形式)
2.本地方法区:存放外界引入的c,c++等的内容 。
(方法名中其他修饰符为native是来自与C语言的)
3.寄存器:也可以称为计数器。
堆区中的数据会在某个时刻被释放-通过垃圾回收机制.
垃圾回收机制是通过一个线程控制的,由于这个线程的等级比较低,所以不会立刻执行,数据就 不会立刻释放。
2021年7月19日的Demo1结合day05.PDF中4.6的图片学习
4.递归
定义:在一个方法内,调用方法本身,称为方法的递归(注意和重载的区别)
说明:方法递归包含了一种隐式的循环,会重复执行某段代码,但是这种重复不需要使用循环 语句来进行控制
递归不会提高程序执行的效率,在某些特定的场合不得不用。
5.数组
5.1数组定义
1.数组中可以存储基本数据类型的数据, 也可以存储引用数据类型的数据。
2.数组的长度是不可变的,数组的内存空间是连续的。 一个数组一旦实例化完成,长度不能变。
5.2比较简单和引用数据类型
1.引用数据类型里面存储的是地址,并且这个地址是十六进制的数.简单数据类型存储的是值, 是十进制的 。(指针)
2.对于简单数据类型,直接在栈区的方法中开辟一块空间存储当前的变量,将要存储的数据直 接放在这块空间里。
5.3 数组引用
1.数组的实例化的时候, 需要使用到关键字new 。
2.以后但凡是遇到了new, 都表示在堆上开辟空间!
3.数组, 其实是在堆上开辟的连续的空间。 例如 new int[5] ,就是在堆上开辟5个连续的4字 节空间。 然后,将堆上的内存地址, 赋值给栈上的变量array(引用)。
5.4数组遍历
两种方式(下标遍历和增强for循环)的对比 :
-
如果需要在遍历的同时,获取到数组中的元素下标,需要使用下标遍历法。
-
如果需要在遍历的同时,修改数组中的元素,需要使用下标遍历法。
-
如果仅仅是想要获取数组中的每一个元素,不需要下标,也不需要修改数组中的元素,使用增强for循环。因为这种方式,遍历的效率比下标遍历法高。
5.5函数和数组的联合应用
函数传参分类:
①值传递:将保存简单数据的变量作为参数传递
②址传递:将保存地址的变量作为参数传递
址传递优点:让我们可以实现使用一个变量一次传递多个值
只要使用了址传递是否一定能改变数组的值(错误),要看值传递是否使用的是同一个数组