Day4
一、常规的死循环
- while(true){ System.out.println(“好好学习!天天向上!”) }
- for(;;){ System.out.println(“好好学习!天天向上!”) }
二、循环嵌套
- 三种循环都可以进行相互的嵌套
- 嵌套循环执行的规律:外层循环循环一次,内层循环循环一遍
- 嵌套循环的语法:一个完整的循环结构嵌套另外一个完整的循环结构
三、数组 (就是一个容器,也是一个特殊的变量)
- 产生的原因:用多个变量来纪录同一种类型的数据,比较麻烦
- 特点:
1.数组是引用数据类型
2.可以存多个同类型的数据
3.数组的长度在运行期间不能够改变 - 初始化一个数组:
<一>.动态初始化方式
语法:数据类型[] 数组的名称 = new 数据类型[数据的长度]
- 注意点:
- 动态初始化必须给出其长度
- 决定数组的三要素:数组的数据类型、数组的名称、数组的长度
<二>.静态初始化:对其数据进行赋值
语法格式:
- 数据类型[] 数组名 = new 数组类型[] { 数据…… }
- 数据类型[] 数组名 = { 数据…… }
<三>.数组里的取值:
- 通过数组的下标(索引)来取值
- 索引是从0开始的且永远比其长度小
1. 如果直接输出数组的名称,获取的是数组的内存地址的hashcode(十六进制) 2. 数组常见的错误:(1)ArrayIndexOutOfBoundsException 数组下标越界;(2)java.lang.NullPointerException 空指针异常
四、java的的虚拟模块(内存)
<一>.栈(存储的都是局部变量)
- 方法里的参数
- 方法类的变量
- 只要离开作用域,值在栈里就不存在
- 所有的方法的执行都是在栈里执行的
- 所有方法里的变量都是随着方法的开始而开始,方法的结束而结束(静态变量除外)
<二>.堆
- 只要new的对象都是在堆里,所有存在堆里的数据都有一个内存地址(十六进制)
- 所有堆里的基础数据类型或引用数据类型都有默认值
整型(byte、short、int、long):0 浮点型(float、double):0.0 字符型(char):一个空字符,即‘\u0000’ 布尔型(boolean):false 引用数据类型:null,表示变量不可引用任何对象
<三>.方法区:class字节码信息、方法里的基本信息
<四>.本地方法栈:系统
<五>.寄存器:CPU
数组的内存分析:数组创建时,都会在栈与堆里有同样一个地址,所有的赋值取值操作都是通经栈里面的地址,去找堆里的地址进行赋值取值