【题目】
定义一个Student类,包含的内容如下:
成员变量:学号、姓名、数学成绩、语文成绩;
成员方法:求成绩总分,求平均分
编程实现这个类,并调用相应的方法计算总分和平均分
类和对象基本概述
1、对象
①定义:在现实世界中,是客观世界中的一个实体
在计算机世界中,是一个可表示的存储区域
②对象具有唯一性
③对象具备特征:属性、行为
2、类
①定义:具有共同属性和行为的对象集合
②属性:变量
③行为:方法
3、类是对象的抽象(模板),对象是类的实例
建立Student类
1.命名规则
类的声明:[public] class 类名{}
成员变量命名规则:[修饰符] 变量类型 变量名 = [初始值];
成员方法命名规则:返回值类型 方法名(参数列表){方法体}
2.命名规范
变量方法名:首字母小写、驼峰原则
常量:大写字母、下划线
类名:首字母大写、驼峰规则
3.成员变量相关
无论成员变量在哪声明,作用域均为整个类体
成员变量可声明赋值,也可在方法中赋值
成员变量不可以在声明和方法之间赋值
4.成员变量默认规则
//局部变量无默认初始值,使用之前要赋值
boolean——false
byte、short、int、long——0
float、double——0.0
char——空字符
引用类型——null
5.修饰符
作用域 | 同一个类 | 同一个包 | 子孙类 | 所有类 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendlly(default) | √ | √ | × | × |
private | √ | × | × | × |
final:最终成员变量
static:静态成员变量
6.static(类变量)
类变量不属于任何一个类的具体对象
是保存在类的内存区的公共存储单元
任何一个类的对象访问它,得到的都是相同的值
任何一个类的对象修改它,都是对同意内存单元进行操作
7.实例变量
没有用static修饰的变量是实例变量,必须实例化该类才可以使用实例变量
该类的不同对象都各自拥有自身的实例变量的版本
建立对象(数组——数量由输入端决定)
1.创建对象
①类名 对象名
对象名 = new 类名()
②类名 对象名 = new 类名()
2.访问对象
①对象名.变量名
②对象名.方法名
从输入端接收信息——由学号进行演示
从输入端接收学号,并输出相应数据——由总成绩进行演示
全部代码
1.Student类
public class Student {
//定义成员变量
long num ;//学号
String name;//姓名
int gradeMath;//数学成绩
int gradeCh;//语文成绩
//定义成员方法
int total(int a,int b) {
return (a+b);
}
double averge(int a,int b) {
return((a+b)/2);
}
}
2.text类
import java.util.Scanner;
public class text {
public static void main(String[] args) {
System.out.println("请先输入相关信息");
System.out.println("请输入想要输入信息的人数:");
Scanner sc_all = new Scanner(System.in);
int all = sc_all.nextInt();
//创建学生数组
Student[] st = new Student[all];
//创建学生对象
for(int i=0;i<all;i++) {
st[i] = new Student();
}
//输入信息部分
for(int i=0;i<all;i++) {
//输入学号
System.out.println("请输入该学生的学号:");
System.out.println("学号即为序号,请勿超过之前所输入的人数(从1开始)");
Scanner sc_num = new Scanner(System.in);
st[i].num = sc_num.nextLong();
//输入姓名
System.out.println("请输入该学生的姓名:");
Scanner sc_name = new Scanner(System.in);
st[i].name = sc_name.next();
//输入数学成绩
System.out.println("请输入该学生的数学成绩:");
Scanner sc_gradeMath = new Scanner(System.in);
st[i].gradeMath = sc_gradeMath.nextInt();
//输入语文成绩
System.out.println("请输入该学生的语文成绩:");
Scanner sc_gradeCh = new Scanner(System.in);
st[i].gradeCh = sc_gradeCh.nextInt();
//由输入端判断循环是否结束
System.out.println("若结束信息输入输入1,若继续输入2:");
Scanner sc_pd = new Scanner(System.in);
int pd = sc_pd.nextInt();
if(pd==1) {
break;
}
}
//根据学号查询信息部分
System.out.println("请输入查询学生的学号");
Scanner sc_search = new Scanner(System.in);
int search = sc_search.nextInt()-1;
System.out.println
(st[search].total(st[search].gradeMath, st[search].gradeCh));
System.out.println
(st[search].averge(st[search].gradeMath, st[search].gradeCh));
}
}
运行结果