Java学习笔记02

六、数组
1. 概念:
一组连续的存储空间,存储多个相同数据类型的值。

2.	数组的创建:
	数据类型[] 数组名 = new 数据类型[长度];	// int [] a = new int[5];

3.	数组的组成概述:
	I.	数组中的每个“格子”称为“数组的元素”。
	II.	对元素的访问分为:“赋值”、“取值”。
	III.	访问元素时,需要通过“下标”(从0开始,依次+1,自动生成)
	IV.	访问的语法:数组名[下标];  //存:a[0] = 10;  取:a[0]
	V.	下标的范围:0 ~ 数组的长度-1 ,如果不在有效下标内,产生java.util.ArrayIndexOutOfBoundsException:错误下标

语法层面:硬性要求
一套:《Java语言规范》:规定了什么,就能用什么。没有规定的,绝不能用。
一套:《Java虚拟机规范》:规定了怎么用,就支持怎么用,没有规定的,随便用。(支持自我创造)

作业:
	Question3:第6题,函数的题
	Question4:第1、2、3、4题

4.	数组的“扩容”:
	I.	创建数组时,必须显示指定长度,并在创建之后不可更改长度。
	II.	扩容的思路:
		1).	创建长度大于原数组的新数组。
		2).	将原数组中的数据依次复制到新数组当中。

	III.	数组的复制:
		1).	循环将原数组中的所有元素数据逐一赋值给新数组。
		2).	System.arraycopy(原数组 , 原数组起始位置 , 新数组 , 新数组起始位置 , 长度);
		3).	数组类型的变量 = java.util.Arrays.copyOf(原数组 , 新长度); //根据长度创建新数组,并将原数组中的元素赋值到新数组中

5.	地址的替换:
	
	I.	基本数据类型的变量存储的是值
	II.	引用数据类型的变量存储的是地址

	III.	nums = newNums; //将新数组的地址,赋值给nums变量,进而在后续操作nums时,则操作长度更大的新数组。



6.	数组类型的参数:
	I.	基本数据类型的传递,是“值”的传递,一方改变,不会影响另一方
	II.	引用数据类型的传递,是“地址”的传递,一方改变,会影响另一方

7.	可变长参数:
	I.	概念:可接收多个同类型实参,个数不限,使用方式与数组相同。
	II.	语法:数据类型... 形参名 //必须定义在形参列表的最后,且只能有一个,支持0~N个参数。
		int... =  int[]  String...  =  String[]  char...  =  char[]   double...  =  double[]
		method(xxx , xxx[] , xxx... ); //可变长参数,是对数组的一种便利写法的补充(80%的场景用数组,20%的场景用可变长参数)

8.	排序:
	I.	冒泡排序:
		1).	相邻的两个值比较大小,互换位置。
		2).	记忆:外层 length - 1 ;内层 length -1 - i     

		补充:嵌套循环约定俗称的变量命名,一重循环 i;二重循环j;三重循环k;

	II.	选择排序:
		1).	固定值与其他值比较大小,互换位置。
		2).	记忆:外层 length - 1 ;同时外层i作为固定值,内层的j = i+1作为其他值的起始


9.	二维数组:
	I.	概念:一维数组中的一维数组,数组中的元素,还是数组。
	II.	语法:
	III.	注意:高维数组中的每一个元素,保存了低维数组的地址。访问array[0]等价于在访问0x0000A111("二维数组的内存分配图")
	
	作业:课后习题,杨辉三角



Eclipse工具的基本使用:
	
	修改编辑字体:windows -> Preferences -> General -> Appearance -> Colors And Fonts -> Basic -> Text Font 
	修改输出字体:windows -> Preferences -> General -> Appearance -> Colors And Fonts -> Debug ->
	重置窗口布局:windows -> Perspective -> Reset Perspective 

七、面向对象:

1.	程序的概念:
	I.	程序是为了模拟现实世界、解决现实问题而使用计算机语言编写的指令集合。
2.	现实世界组成:
	I.	程序员眼中,世界是由无数个对象组成的。
3.	什么是对象:
	I.	一切客观存在的事物都是对象,万物皆对象。
	II.	初期:看得见、摸得着、并真实存在,都是对象。
4.	对象有什么:
	I.	任何对象,一定有自己的特征和行为。
5.	特征和行为:
	I.	特征:称为属性,一般为名词,代表对象都有什么。
	II.	行为:称为方法,一般为动词,代表对象能做什么。

6.	分析一个对象都有什么(属性)
	颜色 - 黑色
	品牌 - apple
	价格 - 5000
	型号 - 11pro
	重量
	尺寸
	材质
7.	分析一个对象能做什么(方法)
	打电话(拨号 -> 发射)
	发短信
	拍照
	上网(app聊天、游戏、听音乐)

8.	程序中的对象:
	I.	程序如何模拟现实世界?
		1).	现实世界中,都是对象,程序中也应有对象。
		2).	程序当中必须具有和现实中相同的对象,用以模拟。
		3).	使用程序中的对象,代表现实中的对象,并执行操作,解决现实问题。
	II.	现实生活中的对象从哪里来?
		手机 -> 工厂 -> 图纸(模板)
	III.	现实与程序:
		1).	现实中的对象,来自于模板,通过模板造出来的实体,即是现实的对象。
		2).	程序中的对象,来自于模板(“类”),通过类造出来的实体,即是程序中的对象。

	

	2月14日-- 17:00职业素养课
	2月15日-- 14:30 ~ 16:00 扩展课堂


9.	定义类、创建对象

10.	类与对象的关系:
	I.	类:定义了对象应具有的特征和行为,类是对象的模板。
	II.	对象:拥有多个特征和行为的实体,对象是类的实例。

	PS:
		属性、实例变量、成员变量,三者等价
		实例方法、成员方法,二者等价
		reference - 引用、句柄、指针

11.	Eclipse导入外部项目:
	File -> Import -> General -> Existing Projects into Workspace -> Browse -> 项目的根文件夹 -> Finish

	格式化代码:Ctrl + Shift + F

	作业:
		I.	复盘一下面向对象之前的相关内容
		II.	类、对象相关的概念、逻辑
		III.	如何定义类、如何创建对象、如何访问属性、如何调用方法

	

12.	方法重载(Overload):
	I.	在一个类中定义多个相同名称的方法。
	II.	要求:
		1).	方法名称相同
		2).	参数列表不同
		3).	与访问修饰符、返回值无关
	III.	好处:
		1).	屏蔽用户的使用差异,方便。

13.	构造方法(Constructor):
	I.	概念:类中的特殊方法,主要用于创建对象。
	II.	特点:
		1).	名称与类名完全相同(包括大小写)。
		2).	没有返回值类型。
		3).	创建对象时(new对象时),触发构造方法的调用,不可通过句点的形式手工调用。
	III.	注意:如果没有在类中显示定义过构造方法,则编译器默认提供无参构造方法。
	IV.	注意:如果已经手动添加过有参构造方法,则无参构造方法不再默认提供,可结合需求自行添加。(建议,必须手动添加无参构造方法)

14.	 this关键字:
	I.	this代表“当前实例”,即是模板中的当前对象,模板服务与哪个对象,this就指向哪个对象。
	II.	this第一种用法:调用本类中的实例属性、实例方法。例如:this.name、this.run() ,
	III.	this第二种用法:调用本类中的其他构造方法。例如:this()、this(实参)。注意:必须在构造方法的首行。
	IV.	默认来讲,实例属性和方法前的this.隐式存在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值