初学javaDay7

面向过程和面向对象

面向过程
代表语言C。
我们是执行者,举例,求数组中的最大值
定义数组,
定义变量max,将数组中的第一个元素作为参照物
遍历(使用方法定义)
调用遍历的功能
输出结果
按照实际的需求,一步一步分析,代码实现,完成结果输出。
面向对象
万物皆对象
特点
1)更符合生活中的思想行为习惯
2)角色发生了变化
从执行者变成指挥者
3)指挥一个具体的事物完成事情(可以将复杂的事情简单化)
举例
买笔记本电脑
面向过程:了解电脑的相关品牌以及特点----->了解相关笔记本电脑的配置-------->了解相关的电脑配置的价格------->
赛格电脑城看电脑-------> 买电脑
面向对象:
了解电脑的相关品牌以及特点------->只需要找懂电脑的人买电脑---------->收到电脑
洗衣服:
面向过程:
脱下脏衣服------>找一个盆----->加水+加洗衣液------>泡一泡----->搓一搓---->晾一晾
面向对象;
脱下脏衣服------>将衣服放入到全自动洗衣机----->晾一晾
做饭:
面向过程:
买菜—>砍价---->摘菜----->洗菜---->切菜----->炒菜------>加入调料---->出锅
面向对象:
下馆子—>服务员(点菜)---->厨师(炒菜)---->等待出锅
找一个对象 -----> 等待出锅
5000
8000

面向对象由于面向过程,虽然代码量大了,后期维护和管理比方便!

什么面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。
键盘录入
导包
Scanner sc = new Scanner(System.in) ;
int a = sc.nextInt() ;
int b = sc.nextInt() ;
面向对象设计原则:
其实就是在管理和维护对象之间的关系

面向对象的三大特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)

成员变量和局部变量的区别

1)在类中书写的位置不同
成员变量:类中方法外定义的变量
局部变量:方法定义中,或者是在方法声明上定义的变量
2)在内存中的位置不同:
成员变量:存储在堆内存
局部变量:存在栈内存(跟方法有关)
3)生命周期不同:
成员变量:跟类有关系,当该对象创建完毕,整个类中的变量全部初始化完,等待Gc回收
局部变量:跟方法有关,随着方法的调用而存在,随着方法的调用完毕而消失
4)初始化不同:
成员变量: 可以不初始化,系统默认给默认初始化值(引用类型:null,基本类型:根据具体类型)
局部变量:
1)定义变量
在使用之前进行赋值,否则编译不通过
2)直接初始化

形式参数问题

基本类型作为参数传递: 形式参数的改变对实际参数没有影响!
引用类型作为参数传递: 形式参数改变会直接影响实际参数,(传递的是当前对象的空间地址值)

匿名对象

概述:
没有名字对象
应用场景
a)对象调用方法仅仅一次的时候
b)作为实际参数传递
举例:new Teacher() ; //直接开辟堆内存空间,没有对象名

封装

概述:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
函数方法、接口、类都是java中封装的体现,private也是封装的一种体现形式
private关键字
是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。
this:
代表所在类的对象引用

类的成员方法


成员变量
构造方法
无参构造方法
带参构造方法
成员方法
getXxx()
setXxx()
给成员变量赋值的方式
无参构造方法+setXxx()
带参构造方法

练习篇:
A:学生事物
属性:姓名,年龄,性别,发型
行为:吃饭,抽烟,打游戏,学习Java
B:键盘录入长方形的长和宽,计算长方形的周长和面积,请使用面向对象的方式解决!
C:请将给定的数组,{10,87,65,34,57} 进行冒泡排序,并将排好序的数组输出到控制台
------------------------------------我是一条华丽的分割线------------------------------------------
答案篇:

/*
	A:学生事物
		属性:姓名,年龄,性别,发型
		行为:吃饭,抽烟,打游戏,学习Java
*/
class Student{
	//成员变量
	String name;     //姓名
	int age;         //年龄
	String gender;   //性别
	String hairdo;   //发型
	
	//成员方法
	//吃饭
	public void eat(){
		System.out.println("学习饿了要吃饭");
	}
	
	//抽烟
	public void smoking(){
		System.out.println("学习困了可以抽烟");
	}
	
	//打游戏
	public void playGame(){
		System.out.println("学习无聊了可以打游戏");
	}
	
	//学习Java
	public void study(){
		System.out.println("要学习就学Java");
	}
}

//定义一个测试类
class StudentDemo{
	public static void main(String[] args){
		//创建学生类具体的对象
		//类名 对象名 = new 类名();
		Student s = new Student();
		//对象名.成员变量;
		//null    0       null    null
		System.out.println(s.name+"\t"+s.age+"\t"+s.gender+"\t"+s.hairdo+"\t");
		//给当前对象p的成员赋值
		s.name = "张三";
		s.age = 27;
		s.gender = "男";
		s.hairdo = "卷发";
		//张三    27      男      卷发
		System.out.println(s.name+"\t"+s.age+"\t"+s.gender+"\t"+s.hairdo+"\t");
	}
}
/*
B:键盘录入长方形的长和宽,计算长方形的周长和面积,请使用面向对象的方式解决!
*/
import java.util.Scanner;
//长方形计算类
class oblongCaculate{
	
	//周长方法:C= 2*(a+b)
	public double circumference(double a,double b){
		double c = 2*(a+b);
		return c;
	}
	
	//面积方法:S = a*b
	public double area(double a,double b){
		double s = a*b;
		return s;
	}
}

class oblongDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请依次输入长方形的长和宽");
		double l = sc.nextDouble();
		double w = sc.nextDouble();
		if(l<=0 || w<=0){
			System.out.println("非法数据");
			return;
		}
		
		oblongCaculate oc = new oblongCaculate();	
		double c = oc.circumference(l,w);
		System.out.println("长方形的周长为:"+c);
		
		double s = oc.area(l,w);
		System.out.println("长方形的面积为:"+s);

	}
}
/*
	C:请将给定的数组,{10,87,65,34,57} 进行冒泡排序,并将排好序的数组输出到控制台
*/

//数组排序类
class SortArray{	
	//冒泡排序方法
	public void bubbleSort(int[] arr){
		for(int i = 0; i<arr.length; i++){
			for(int j = 0; j<arr.length-1-i; j++){
				if(arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}
}

//数组打印类
class PrintArray{
	public void printArr(int[] arr){
		System.out.print("[");
		for(int i = 0; i<arr.length; i++){
			if(i == arr.length - 1){
				System.out.println(arr[i]+"]");	
			}else{
				System.out.print(arr[i]+", ");
			}
		} 
	}
}

//测试类
class ArraySortDemo{
	public static void main(String[] args){
		int[] arr = {10,87,65,34,57};
		System.out.print("数组排序前:");
		PrintArray print = new PrintArray();
		print.printArr(arr);
	
		System.out.print("数组排序后:");
		SortArray sort = new SortArray();
		sort.bubbleSort(arr);
		print.printArr(arr);
		
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值