1.练习回顾
使用java循环输入5个人的分数,求总分,平均分,最大值,最小值,统计80分以上的学生比例
要求:
1.所有分数都输入正确,才输出总分,平均分
2.有任意分数错误,则终止循环,输出错误提示
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum =0;
boolean flag =true;
double max = 0;
double min = -1;
int count = 0;
for (int i = 1; i <= 5; i++) {
System.out.println("请输入第"+i+"个同学的成绩:");
double t = scanner.nextDouble();
if(t>100||t<0){
System.out.println("输入的成绩有误");
flag =false;
break;
}
sum +=t;
if(max<t){
max = t;
}
if(min==-1||min>t){
min = t;
}
if(t<80){
continue;
}
count++;
}
if(flag){
System.out.println("总分:"+sum+"\n平均分:"+(sum/5)+"\n最高分:"+max+"\n最低分:"+min+"\n80分以上学生比例:"+(count/5.0*100)+"%");
}
}
2.Java流程控制
控制代码如何执行,是否执行,执行几次。
2.1程序结构
顺序结构,分支结构,循环结构
2.2分支结构
①if(){}
②if(){}else{}
③if(){}else if(){}else if(){} else{}
2.3 循环结构
①while 循环
循环四要素:初始化变量,循环条件,循环体,循环体,循环变量的自增。
注意避免:while(true) ,while(false)
②do while循环
while 先判断再执行
do while 先执行一次再判断
do while 至少会执行一次
2.4 for 循环
for(初始化变量①;判断条件②;步进表达式④){
循环体③
}
2.5输出时的特殊字符
2.6 break和continue
continue:跳过部分代码继续循环
break:终止循环
3.类与对象基础
3.1 类和对象的概念
3.1.1什么是对象
对象:我们所面对的可以描述其具体形象的事物称为对象。对象可以简单理解为看得见摸得着的事物;
一般我们从两个方面来描述一个对象:属性(特征),方法(行为)。
属性:用于描述对象具体的特征;
方法:用于描述对象具有的行为或功能。
如:描述一个电视机
属性:
颜色:
品牌:
价格:
方法:
播放电视剧()
开机()
关机()
3.1.2 什么是面向对象编程
面向对象程序设计(英语:Object-oriented programming,缩写:OOP) 是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关联的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。
3.1.3 面向过程和面向对象编程
在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,增强可维护性,所以,面向对象的开发更像是一个具备标准的开发模式。
面向过程:针对开发中程序遇到的每一个问题,进行单个的编码解决。
(自己做饭,买菜,洗菜,炒菜,自己吃)
面向对象:只对结果,不管实现的细节。
(到饭馆叫饭,自己吃)
学习面对对象其实就是学习如何在代码中使用 封装,继承,多态(重点)。
在面向对象定义之中,也规定了一些基本的特征:
①封装:保护内部的操作不被破坏; 安全性
②继承:在原本的基础之上继续进行扩充; 复用性
③多态:在一个指定的范围之内进行概念的转换。 可扩展性
面向对象的开发分为三个过程:
OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。
总结:面向对象最终的目的是在保证功能实现的基础上,方便后期程序的维护。
3.2 类的概念
3.2.1 什么是类
具有相同属性和行为的对象,可以被归为一类。
令狐冲:属性:姓名(令狐冲),性别 ( 男 ) ,年龄 ( 28 ) ,方法:会武功 ( 耍剑 )东方不败:属性 : 姓名(东方不败),性别 ( 女 ) ,年龄 ( 18 )方法:会武功 ( 绣花 )令狐冲和东方不败都具有相同的属性和方法,因此他们可以归为【人类】。由此:宝马,奔驰,法拉利也具有相同的属性和行为所以可以归为【车类】。
类:将具有相同属性和方法的对象进行抽象,这就是类。
一般包括了属性和方法两大部分;可以理解为类是对象的设计图纸,类限定了对象具有的特征属性和行为,因为可以将类看作对象的模板。通过一个类,我们可以创建任意一个对象,而被创建的同一个类的任意个对象,都具有相同的属性和行为。
类是对象的模板,对象是类的实例。
类是抽象的概念,对象是具体的存在。、
注:同一个类的对象,会具有相同的属性和方法,但是他们的属性值可以不一样,这样可以区分出不同的对象实体。
面向对象编程,为什么要从 定义类 开始?因为在创建对象(车/房子)之前,需要先设计对象具有的属性和行为,所以要先把对象所属的 类 ( 汽车图纸/房屋图纸 )定义出来。 通过定义好的类,来创建这个类型的对象 ( 先有月饼模子,再创建月饼出来 )。面向对象编程的步骤:1.定义所用对象的类型;2.用类型创建具体的对象;3.调用对象的属性和方法,完成程序处理。
3.2.2 类的结构
public class 类名 {
//成员属性
//构造方法
//成员方法
}
public class Student {
// 属性: 成员属性,成员变量,全局变量
// 姓名
String name;
// 性别
String sex;
// 年龄
int age;
// 身高
double tall;
// 方法: 成员方法,实例方法
public void eat(){
// this:当前对象
System.out.println(this.name+"吃早餐");
}
public void study(){
System.out.println(this.name+"学习java");
}
}
3.2.3 类的使用
使用类创建对象,为对象赋值,并调用对象方法。
public class Test01 {
public static void main(String[] args) {
Student stu = new Student();
stu.name = "张三";
stu.age = 20;
stu.sex = "男";
stu.tall = 1.75;
stu.eat();
stu.study();
}
}
注:类的属性本质是全局变量,是有默认值的。
字符串:null 整形:0 小数:0.0 布尔:false
而方法内的变量是局部变量,不赋值的时候无法使用。
面向对象编程的步骤:1. 根据题目定义类 : 定义属性和方法2. 使用类a.创建测试类,定义 main 方法b.在 main 方法中,使用类创建对象 : 类名 变量 = new 类名 ();c. 使用创建出来的对象,设置对象属性,访问对象属性,调用对象方法完成特定功能
3.3 构造方法
在类创建对象的时候,通过new关键字调用的方法称为构造方法。它可以用于为对象属性设置初始值。
public calss 类名{
//无参构造
public 类名(){
}
//构造方法
public 类名(参数列表){
//初始属性
}
}
特征:①构造方法是非常特殊的方法,方法名要与类名完全一样;②构造方法不能写返回值;③构造方法通过new关键字调用;④ 一个类中,可以定义构造,也可以不定义构造。当类中没有定义构造的时候,系统会提供默 认无参构造,当类中定义了构造之后,系统将不再提供默认无参构造;⑤一个类中可以定义多个构造(可以有参,可以无参)。
作用:
public class Student {
String name;
String sex;
int age;
double tall;
String school;
public void eat(){
System.out.println(this.name+"在吃早饭");
return ;
}
public void study(String scroll){
System.out.println(this.age+"岁的"+this.school+"的学生"+this.name+"在学"+scroll);
}
public Student(){
System.out.println("无参构造");
}
public Student(String name,String sex){
this.name = name;
this.sex = sex;
System.out.println("有参构造:"+this.name+"\n"+this.sex+this.age+this.school);
}
public Student(String name,String sex,int age,double tall,String school){
this.name = name;
this.sex = sex;
this.age = age;
this.tall = tall;
this.school = school;
System.out.println(this.name+this.sex+this.age+this.tall+this.school);
}
}
//通过构造方法创建类的对象
Student stu=new Student("张三","男",18,1.75,"**");
小结:
①定义构造方法:public + 类名(参数列表){初始化代码};②当类没有构造方法时,系统会给一个默认的空构造方法;③当你一旦定义了自己的构造方法,系统就收回了默认的构造方法;④如果还想用默认的构造方法,则必须自己另外定义;⑤自定义的构造方法主要用于对象的初始化。