先学习了java的一些命名规则。
1、类名首字母大写,如Student。
2、方法和属性首字母必须小写。如int age; 如String name;
3、由多单词组成的,必须采用驼峰标识。如int arrMaxLength;
在java中,所有对象都有toString方法。
如果该类中没有自定义toString方法,则会输出对象的哈希码值。
系统在调用输出的时候会自动使用toString方法。输出对应的String。
与C++不同,在java中,对象的初始化必须使用new 对象名()初始化,或者将一个已经初始化的对象拷贝给它。错误使用如下
public class Test {
public static void main(String[] args){
Student stu;
stu.print(); //这边将提示未初始化的错误
}
}
class Student{
public void print(){
System.out.print("stu!!");
}
}
通过new 对象名之后,代码就正确了。如下
public class Test {
public static void main(String[] args){
Student stu=new Student();
stu.print();
}
}
class Student{
public void print(){
System.out.print("stu!!");
}
}
对应内存图如下。
在一个java文件中,最多只能存在一个类是public型。
在java中声明属性或者方法的访问类型不再像C++一样。是每一个属性或者方法前加访问类型。如
public class Test{
private int no;
private String name;
public void print(){}
}
在类的方法定义中,使用this关键字代表使用该方法的对象的引用,有时使用this可以处理成员变量和参数重名的问题。
this可以看作是一个变量,它的值是当前对象的引用。这点与C++类似。
简单练习
程序说明:定义一个简单学生成绩管理系统。学生拥有学号,姓名,年龄。英语成绩,语文成绩,数学成绩,总和,平均分属性。
成绩管理系统功能。1,添加学生。2,根据学号查找学生成绩。3,根据学号更改成绩。4,输出所有学生成绩。
分析:主要包含两个类:学生类和学生管理类。
Student.java (学生类)如下
public class Student {
private int no;
private String name;
private int age;
private int math;
private int english;
private int chinese;
private int sum;
private int avg;
public void setNo(int no){
this.no=no;
}
public int getNo(){
return no;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setMaht(int math){
this.math=math;
}
public int getMath(){
return math;
}
public void setEnglish(int english){
this.english=english;
}
public int getEnglish(){
return english;
}
public void setChinese(int chinese){
this.chinese=chinese;
}
public int getChinese(){
return chinese;
}
public void setSum(){
sum=chinese+english+math;
}
public int getSum(){
return sum;
}
public void setAvg(){
avg=(chinese+english+math)/3;
}
public int getAvg(){
return avg;
}
public String toString(){
String str;
str="\t"+no+"\t"+name+"\t"+age+"\t"+chinese+"\t"+math+"\t"+english+"\t"+sum+"\t"+avg;
return str;
}
}
AdminStudent.java (管理学生类)如下
public class AdminStudent {
private String title="\t学号\t姓名\t年龄\t语文\t数学\t英语\t总和\t平均分";
public void addStudent(String name,int age,Student[] stuArr){
Student stu=new Student();
int nums=getStuNums(stuArr);
stu.setNo(nums);
stu.setName(name);
stu.setAge(age);
if(nums==-1){
System.out.println("人数已经达到上限!");
}
else{
stuArr[nums]=stu;
}
}
public int getStuNums(Student[] stuArr){
for(int i=0;i<stuArr.length;i++){
if(stuArr[i]==null){
return i;
}
}
return -1;
}
public void setScore(int no,int chinese,int math,int english,Student[] stuArr){
stuArr[no].setChinese(chinese);
stuArr[no].setMaht(math);
stuArr[no].setEnglish(english);
stuArr[no].setAvg();
stuArr[no].setSum();
}
public boolean findStudent(int no,Student[] stuArr){
if(no>stuArr.length || stuArr[no]==null){
System.out.println("该学号不存在");
return false;
}
else{
System.out.println(title);
System.out.println(stuArr[no]);
return true;
}
}
public void printAllStundet(Student[] stuArr){
System.out.println(title);
for(int i=0;i<stuArr.length;i++){
if(stuArr[i]!=null){
System.out.println(stuArr[i]);
}
}
}
}
StudentAdmin.java (主程序)如下
import java.util.Scanner;
public class StudentAdmin {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
boolean exit=false;
Student stu[]=new Student[5];
AdminStudent adminStu=new AdminStudent();
while (!exit) {
System.out.println("学生成绩管理系统,请选择功能:");
System.out.println("1、添加学生");
System.out.println("2.根据学号查找学生成绩");
System.out.println("3.根据学号更改学生成绩");
System.out.println("4.退出");
int sel=in.nextInt();
switch(sel){
case 1:
System.out.println("请输入学生姓名");
String name=in.next();
System.out.println("请输入学生年龄");
int age=in.nextInt();
adminStu.addStudent(name, age, stu);
adminStu.printAllStundet(stu);
break;
case 2:
System.out.println("请输入学生学号");
int no=in.nextInt();
adminStu.findStudent(no, stu);
break;
case 3:
System.out.println("请输入学生学号");
int sno=in.nextInt();
if(adminStu.findStudent(sno, stu)){
System.out.println("请输入语文成绩");
int chinese=in.nextInt();
System.out.println("请输入英语成绩");
int english=in.nextInt();
System.out.println("请输入数学成绩");
int math=in.nextInt();
adminStu.setScore(sno, chinese, math, english, stu);
}
break;
case 4:
System.out.println("系统退出成功!");
exit=true;
break;
default:
break;
}
}
}
}