数组方法 继承 封装 多态

java第三周

数组arrays
一:定义:使用一组有序,而且具有相同数据类型的集合
有序:根据元素得到位置获取该元素
下标:0到数组的长度-1 左开右闭

二:数组和链表的区别
1.内存开辟的时候
数组要求开辟一块连续的内存空间
链表不需要开辟连续内存、
2.项目需求上
项目的重点是增删改:选择链表的方式
项目的重点是查询:选择数组(java用数组用的多)
数组的检索效率高

三:使用数组。

	①声明数组
		int[] array=new int [5];初始化数组
		int array[];
		Student[] stus;
	②数组的初始化和赋值
		第一种方式
		array=new int[5];//5就是数组长度
		array[0]=20;
		array[1]=30;
		...
			第二种
			array=new int[]{1,3,5,7};
			int[] arrays=new int[4]{1,3,5,7};//error

		第三种
		int[] array={1,3,5,7};
		
		int[]arrays;
		arrays={1,3,5,7};error不能分开写
		数组的长度
		array.length

四:数组的练习
1.{12,34,55,10,54,1}求和,求最大值,求平均值?
代码
int[] arrays={12,34,55,10,54,1}; int max=arrays[0]; int sum=arrays[0]; for(int i=1;i<arrays.length;i++){ if(max<arrays[i]){ max=arrays[i]; } sum+=arrays[i]; } System.out.println(max); System.out.println(sum); System.out.println(sum/arrays.length);

2:从一堆电话号码抽取一个幸1运号码
String[] phones={"110","123"}
	int a = (int)(Math.random()*(phones.length);
	System.out.println.(phones[a])

3引用数据类型数组
Student[]stus=new Student[5];
Student[]stus=new Student[]{
				new Student(),
				new Studet(1,"zz")
				};

五:多维数组

二维数组
1楼   张三  李四

2楼  王五
3楼 赵柳 刘 仁

①二维数组的创建
数据类型[][]数组名;
数组名=new数据库类型[行的个数(行数必须写)][列的个数];
int[][]array=new int[n][];
②赋值
数据类型[][]数组名={
{第0行初值},
{第1行初值},
{第n行初值},

};
可变参数

public int add(int a,int b){
	return a+b;
	}
	public int add1(int a, int b,int c){
	return a+b+c;
	}

	jdk1.5之前用

	int...
	public int add(int...arrays){
	}
	可变参数,遵循同一种数据类型,而且参数不能写多个可变参数

	改变数组长度
	arrays.length=10//error

	System.arrayCopy();
	arraycopy(Object src,int srcPos,Object dest,int destPos,)int  length
	第一个objiect src:源数组对象的引用
	第二个int srcPos:从源数组拷贝数据的起始位置
	第三个 object dest:目标数组对象的引用
	第四个int destpos:拷贝数据到目标数组的起始位置
	第五个int length: 从源数组拷贝数据的长度
	int[] arrays ={1,3,5}
	int[]newArrays=new int[];
	拷贝从第二个元素开始
	System.arraycopy(arrays,0,newArrays,0,arrays.length);
	达到扩容的目的
	arrays[4]=10

5.使用数组完成银行排队系统
当前的号码是多少?
前面排队的人是多少?
入队
出队
当前队的长度
输出当前队的信息

排序问题
冒泡排序
相邻的两个,两两比较,满足要求则进行互换
从小到大

选择排序
把每次比较的第一个数当做最小数,如果后面找到了比它小的数,则就记录位置,
每一次结束后记录的位置就一定是最下小值
然后将对应的每一轮比较的开始的下标的值进行替换
oop面向对象程序设计

	封装:将java类中的属性和方法的具体实现隐藏。对用户不可见,将来提供统一的接口供用户使用Math.random()
	对象中的数据称为称为实例域,操作数据的过程称为方法

	继承:现实中是多继承     java中是单继承   子类可以继承父类对应的属性和方法   extends
	
	多态:同一个领域不同对象调用相同的的方法表现不同
	public class Common{
		public void flay(){}
		}
		public class飞机 extends common{
			public void flay(){
			烧油
			}
		}
		public class鸟extends common{
			public void flay(){
			翅膀
			}
		}

		类--对象
		类-保存数据,具有相同属性和行为的模板
		对象-对类的具体化


**方法**
	<modifiers> <return_type> <name>([<argument_list>]) 
 [throws <exception>] {<block>}

修饰符
private public protected default
static final
<return_type>返回值类型
void …
return
方法名
[<argument_list>] 参数列表
[throws ] 抛出异常
block>方法体
public int add(int age){
if(age>10){
return 10;
}
return 5;
}

	形参和实参
	形参:方法定义的参数
	实参:调用方法所传的值
	注意
	1.调用的方法是否有参数
	2.如果有参数要注意参数顺序
	3.该方法是否有返回值

	参数传递   把实参传递给形参
	基本数据类型进行参数传递:传递的是值
	引用数据类型进行参数传递:传递的是引用(地址值)

	this     代表当前对象
		1this用在实例变量上
			用来区分实例变量和局部变量
			原因是局部变量和全局变量名字一样
			this.name=name;
		2.用在本类方法上(使用不多)
		this.getName()
		一般系统默认加上this,不写this也行
		2用在调用本类构造器
			this()方法

	封装

	why?避免用户输入
	对数据隐藏:
	1将属性的修饰符定义为private
	2给用户提供一个对应的接口
		给属性提供对应的get和set方法
			set属性名大写  属性名首字母大写
			get属性名    

方法的重载
public void add (int a , int b)
public void add (double a, double b)

方法重载的要求
1必须要在同一个类中
2方法名必须相同
3参数列表必须不同
参数个数不同 ||
参数数据类型不同||
参数顺序不同
4返回值可以不同
5抛出异常可以不同
6访问的修饰符可以不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值