数组,自定义函数,面向过程,面形对象,定义类,重载,this

数组:

基本数据类型  java只有8种
引用数据类型

一维数组:
类型[] 数组名 = new 类型[数组长度];
类型[] 数组名 = {v1,…};
类型[] 数组名 = new 类型[]{v1,v2,…};
下标:从0开始,到数组长度-1
数组名[下标] 访问数组里的元素

数组长度:  数组名.length


for(int i=0;i<数组名.length;i++){
	数组名[i]
}


二维数组:
	类型[][] 数组名 = new 类型[二维数组长度][一维数组长度];
	int[][] crr = new int[3][4];

当访问一个没有引用具体对象的引用变量时将引发以下异常:
	java.lang.NullPointerException

练习:
要保存杨辉三角形的前7行
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10 10 5  1
      arr[i][j] = arr[i-1][j-1] + arr[i-1][j];


练习:
	有4个班级
	5个学生
	6个学生
	7个学生
	9个学生

	控制台输入 保存这些学生的成绩
	找出每一个班的最高成绩  以及 所有班级里成绩最高的

39题 约瑟夫问题:
	有n个编号(1-n)小孩围成一圈,从第1个小孩开始依次进行重复报数 1-3
	报到3数字的小孩出列,求最后剩下的那个小孩子的编号 


Arrays.toString();
数组名.length 
数组名.copyOf(数名,数组长度);
System.arrayCopyOf(src,srcPos,dest,destPos,length);

方法 函数 过程
封装了一段逻辑代码或者实现特定的功能
方法可以重复被调用 增加了代码的复用 提升开发效率

方法五要素:
修饰词 返回值类型  方法名(参数列表){
	//方法体
	return xx;//返回结果给调用者
}
//main函数 
public static void main(String[] args){

}
修饰词:public static 
返回值类型: void   表示该函数没有返回值 
		返回所要求的结果
方法名: main 
参数列表: String[] args    提高代码的灵活性
方法体


求一个数组里面元素的最大值

不想起床
	室友去吃早餐  让室友帮忙买早餐 
	函数调用
	给室友钱  参数 
	返回值  
	
自定义函数


练习:
	1. 写函数求数列的第n项目结果 
		1  1  2  3  5  8  13 ...
		
	2. 写函数求一个数组里面元素的平均值
	
	3. 写函数输出杨辉三角形的前n行
	
	4. 求两个整数的最大公约数
	
	5. 写一个函数,把两个递增的数组元素进行合并之后并保持递增
		1  3  5  9
		2  3  4  6  7  8
        1  2  3  3  4  5  6  7  8  9

		
	6. 写一个递归函数 判断一个数组是否是严格递增的数组 

把一头大象装进冰箱

面向过程
1.打开冰箱门
2.把大象装进冰箱
3.关闭冰箱门
把解决问题的步骤封装成若干个方法,然后依次调用这些方法

面向对象
1.生产一头大象
2.生产一台冰箱 具有功能:把大象装进冰箱

大象  冰箱

世界万物皆对象
类:   是描述一类事物的特征       泛指  抽象的概念  
对象: 是类实例化和具体化的结果   特指  具体的事物

10几个对象
	学生类的对象   
	人类的对象
	男人类的对象 /女人类的对象

怎么描述一类事物的行为特征
	属性:变量
	行为:方法

用变量来记录事物的特征,用方法来描述事物的行为
	
人
	属性:身高 体重  性别   年龄 ... 
	行为:吃饭 睡觉 学习  谈恋爱


写一圆类
	属性: 半径
	行为: 求面积  求周长

创建两个圆,分别求面积和周长

定义类:
	位置: 在.java文件中定义类
	修饰词 class 类名{
		//属性
		类型 标识符;
		//方法   成员方法
		修饰词 返回值类型 方法名(参数列表){
			//方法体
		}
	}
	
实例化对象  创建对象:
	new 类名();
	
声明引用变量   让这个引用变量 引用对象 
	Circle  c;		   //创建一个引用变量
	c = new Circle();  //实例化对象  c引用变量引用这个对象
	
基本数据类型: 值直接存储在变量里面
引用数据类型: 引用变量存储的是对象的地址信息
	数组是引用数据类型
	
	new int[3];
	new Random()
	new Scanner(System.in);
	
通过引用变量可以操作对象
	引用变量.属性名
	引用变量.方法名(参数列表);
	
实例化对象时  成员属性默认初始化	
	byte short int long     0
	boolean                 false
	char                    '\u0000'   空格
	float double            0.0
	引用变量                null
	

构造方法
	以什么样的方式来构造对象   给属性赋初始值 
	构造方法名和类名相同  构造方法没有返回值类型 也不能为void
	如果程序员没有给类实现构造方法,则编译器会自动生成一个无参的构造方法
	如果程序员自己实现了构造方法,则编译器将不会再自动生成构造方法
class 类名{
	构造方法
	类名(参数列表){
	
	}

}	

方法重载:
	在同一个作用域里,方法名相同,参数列表不同即构成重载
	前提条件是同一个作用域
	方法名相同
	参数列表不同: 参数个数不一样 或者 参数类型不同
	与返回值类型无关
	
在函数调用过程中,编译器会根据传递的实参的类型和个数来决定调用重载方法中的哪一个方法


重载方法 求最大值 max
	参数情况:
	2个int
	3个int 
	2个double
	int数组 
	double数组 


实例化对象的过程 其实就是调用构造方法的过程

打
	打车
	打人
	打篮球
	打工
	
支付
	现金
	支付宝
	微信
	刷卡

学生类
	属性有:
	学号 姓名 年龄  成绩 
	按照不同的方式来构造学生(重载构造方法)
	提供 显示信息的 方法

引用类型 引用变量 = 对象;
	引用变量  =  null;  表示没有引用具体的对象,这个时候如果通过该引用变量去访问属性和方法,都将导致java.lang.NullPointerException

this:
	类的每一个成员方法里面都有一个this引用变量
	构造方法里面,this引用的是正在构造的对象
		普通成员方法里面 this引用正在调用该方法的对象

	this可以区分成员属性 和 局部变量(形参)



写一个平面点类
	属性有:x,y坐标值 
	构造方法
	 方法:距离原点的长度  Math.sqrt(x*x+y*y)
	 方法:一个点与另外一个点的距离

写一个平面圆类   (不要和之前的Circle同名)
	属性: 中心点
		   半径
		构造方法
		方法:判断一个圆与另外一个圆是否相交
		方法:判断一个圆是否在另外一个圆内部   

面向对象 难入门
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值