Day04 Random与一维数组介绍
随机数(Random) 用于产生随机数. 使用步骤: 1.导包 importjava.util.Random; 2.创建对象 Randomr = new Random(); 3.获得随机数 intnumber = r.nextInt(10); 获取数据范围:[0,10)包括0,不包括10
Random猜数字游戏: 问题:产生1~100随机数,猜出 分析: 1.intnumber = r.nextInt(100)+1; 2.录入猜的数据 3.用if语句来比较 4.要实现多次猜数据,因为不知道要猜多少次,所以使用"死循环"while(true).
数组(array) 存储同一数据类型的多个元素的容器. 定义格式: 1:数据类型[] 数组名;(推荐) int[]arr; 2:数据类型 数组名[]; intarr[];
数组初始化:为数组开辟内存空间,并为数组中的每个元素赋予初始值
1.动态初始化:只给出长度,由系统给出初始化值 格式 : 数据类型[] 数组名 = new 数据类型[数组长度] 数组中的每个元素都是有编号的,从0开始,最大编号就是数组的长度-1 编号 就是数组的 索引(|角标)
获取数组中数据,使用 数组名[索引] 来找到索引位置的数据
栈:储存的是局部变量 局部变量:就是定义在方法中的变量 使用完毕,立即回收
堆:存储的是new出来的东西 每个对象都有地址值 每个对象的数据都有默认值 byte,short,int,long: 0 float,double: 0.0 char: '\u0000' boolean: false 引用类型 : null 使用完毕后会在垃圾回收器空闲时回收
定义两个数组,把第一个数组的值赋值给第二个, 其实是第一数组的地址值赋值给了第二个 ,通过地址值,两个数组指向同一个堆内存里的数组空间. 两个数组中元素的改变是共享的.
2.静态初始化:给出初始值,由系统决定长度 格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...}; 简化格式: 数据类型[] 数组名 = {元素1,元素2,元素3,...};
数组操作中的两个小问题: 1. ArrayIndexOutOfBoundsException:数组索引越界异常 产生原因:访问了不存在的索引
2.NullPointerException:空指针异常 产生原因:数据已经不在指向堆内存的数据了 避免方法 if(arr != null){}
数组操作之遍历数组(依次输出数组中的每一个元素) 1. 通过for循环实现 2. 通过 length 获取数组元素的个数 格式: 数组名.length
数组操作之获取最值 1. 先拿一个数组元素作为参照物 2. 遍历数组让后面所有的元素一次和参照物就行比较; 如果元素比参照物大就留下 3.最后的即最大值
二维数组:元素为一维数组的数组 定义格式: 1.数据类型[][] 数组名; (推荐格式) 2.数据类型 数组名[][]; 3.数据类型[] 数组名[]; 初始化: 1.动态初始化 数据类型[][] 数组名=new 数据类型[m][n] m表示二位数组中一维数组的个数 n表示一维数组中的元素个数 2.静态初始化 数据类型[][] 数组名=new 数据类型[][]{{元素,元素..},{元素,元素..},{元素,元素..},...} 简化格式: 数据类型[][] 数组名={{元素,元素..},{元素,元素..},{元素,元素..},...}
获取二维数组中元素 数组名[索引][索引] : 第一个索引指向相应一维数组; 第二个索引指向一维数组中元素 int[][]arr = new int[3][]; [null,null,null] 二维数组的遍历: 二维数组.length 获取的就是二维数组中有几个一维数组
扩展内容: 可以创建长度为0的数组,不能存储数据; 不能创建长度为负数的数组; 长度为0的数组有地址值,和null不同
数组的长度一旦确定则不可改变
Day05 方法的概述以及基本的使用 格式: 修饰符 返回值类型 方法名(参数类型 参数名1 , 参数类型 参数名2…); 方法体; return 返回值; }
方法是为了提高代码的重复使用性和可维护性.
(String[] args)中的String[]是字符串数组
写一个方法有两个明确: 1.返回值类型 明确功能结果的数据类型 2.参数列表 明确有几个参数以及参数的数据类型
方法的调用: 有明确返回值的方法调用: 1.单独调用, 没用意义 2.输出调用, 有意义, 但不够好,因为可能需要拿结果进行进一步的操作 3.赋值调用, 推荐方式
void修饰的方法 (void并不是一个数据类型,所以" void 变量名 "的写法是错误的) 如果一个方法没有明确的返回值类型,也不能把返回值类型的地方空出来,应用void表示该方法无放那绘制类型.
void修饰方法的调用: void修饰的方法只能单独调用
void作为返回值类型的方法,可以不写return语句, 也可以写 " return; ",但是不能写 " return(变量); "
文档注释: /** >> 回车 用在方法定义的上方
方法的重载以及参数传递 方法重载(Overload): 在同一个类中,可以出现方法名相同的情况. 特点: 方法名相同,参数列表不同.与返回值无关. 参数列表不同是什么? 1.参数个数不同; 2.参数对应的类型不同 3.包括数据类型相同,但是参数列表的顺序不同: public static int sum(int a , byte b){} public static int sum(byte a , int b) 不能出现方法名相同,并且参数列表也相同的情况. 注意: 在调用方法的时候,Java虚拟机会通过参数列表的不同来识别方法
方法的参数 如果是基本数据类型:形式参数的改变不影响实际参数. 实际参数: 形式参数:
如果方法的形式参数是引用数据类型(数组;类..) 形式参数的改变会影响实际参数 (但是只是修改方法中的引用就不会影响)
扩展: 方法返回值类型是void时, return; 可以终止方法
栈 : 先进后出,后进先出 , FILO(First In Last Out) 队列: 先进先出,后进后出, FIFO(First In Frist Out)
Day06 Eclipse断点调试(debug)程序 作用: 1.查看程序的执行流程 2.调试程序 断点: 其实就是一个标记 怎么添加: 在行号上双击 运行断点程序: 代码区域>>右键>>Debug AS>>java Application 出现是否进入debug视图的提示,yes 点击F6(stop over)往下执行 需要看的区域: 代码区域:看程序的执行流程 debug区域:看程序的执行流程 Variables:变量的变化 Console:看程序的输入和输出 如何去掉断点: 1.把添加的动作重复一下 2.删除多个断点: 断点(Debug)视图 >> Breakpoints >> 选中 >> 双×关闭 * 断点必须加在有效的语句上 要想看被调用方法的执行流程,调用方法必须加断点
Day07 面向对象的概述 基于面向过程的编程思想. 面向过程:强调每一个功能的步骤 面向对象:强调的是对象,然后又对象调用功能. 产生这个概念的原因: 当需求和功能增多是,想要通过一种方式将相似的功能归类到一起,减少重复代码编写,提高代码的复用性 特点: 1.是一种更符合我们思考习惯的思想 2.可以将复杂的事情简单化 3.将我们从执行者变成指挥者 类和对象的关系: java语言的最基本的单位是类 类 类描述同一类"事物"的"属性"和"行为" 属性:事物有什么 行为:事物能做什么 对象: 一类事物的具体的一个体现 定义一个学生类: 学生事物: 属性:姓名,年龄 行为:学习,吃饭 属性即成员变量;行为即成员方法 成员变量:和之前变量的定义一样 但位置不同:在类中,方法之外; 也不需要给初始化值; 成员方法:和之前方法的定义一样, 但是去掉static 创建对象: 格式: 类名 对象名 = new 类名(); 对象如何访问成员: 成员变量: 对象名.变量名 成员方法: 对象名.方法名(...)
面向对象的内存图与封装 成员变量和局部变量的区别: 1.在类中的位置不同 成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 2.在内存中的位置不同 成员变量:堆内存 局部内存:占内存 通过对象直接访问成员变量,会存在数据安全问题 这时不能让外界直接访问成员变量: 实现方法: private 权限修饰符,可以修饰类,变量,方法. private 关键字: 1,是一个权限修饰符. 2,可以修饰成员(成员变量和成员方法) 3,被private修饰的成员只有在本类中才能访问 private最常见的应用 1.把成员变量用private修饰 2.提供对应的getXxx()/setXxx()方法 封装: 和继承;多态是面向对象的三大特征之一 面向对象之构造方法
this关键字 如果局部变量名和成员变量名相同,在局部使用时,采用的是就近原则. 使用this关键字解决. this: 代表所在类的对象的引用 this 只能出现在方法中,那个对象调用了该方法,this就代表哪个对象. 什么时候用this: 成员变量和局部变量重名时 构造方法: 作用:给对象的数据进行初始化 格式: 方法名和类名必须相同 没有给返回值类型,连void都不能写 没有返回值,(但实际是返回的是创建的该类的对象) 调用: 通过new关键字调用 格式: 类名 对象名 = new 构造方法(...); 构造方法的注意事项: 1,如果我们没有给出构造方法,系统将会提供一个默认的无参构造方法供我们使用 2,如果我们给出了构造方法,系统将不在提供无参构造方法,如需使用,需要自行创建(推荐自建) 3.构造方法可以重载 成员变量的赋值: 1,setXxx()方法 2,带参构造方法
|