java发送c语言结构体_C语言 Struct 结构体在 Java 中的体现

大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习。

和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东西,使用它就避免了一些棘手的问题。

那么问题来了,在 Java 还有 Struct 结构体嘛?

答案没有的,不过 Java 中的 Class 对象体现的就是 Struct 结构体的思想。虽然 C 语言是一个面向过程化的语言,不过这个 Struct 结构体却面向对象的味道,而 Java 做为面向对象的语言,要实现 Struct

和定义结构体一样,先定义一个 Class 对象,参考网上资料这里以一个学生管理系统为例。

//定义学生实体类

classStudent {privateString Name;private doubleScore;publicStudent() {super();

}publicString getName() {returnName;

}public voidsetName(String Name) {this.Name =Name;

}public doublegetScore() {returnScore;

}public void setScore(doubleScore) {this.Score =Score;

}

}

这里学生定义了姓名和分数两个属性,用 private 访问权限修饰符吧,安全些,关于private、public、protected 的区别了解一下 https://blog.csdn.net/spu20134823091/article/details/53836192

这个 super()\this 是什么东西,个人理解像是自身调用自身的意思,详解百度一下吧。 https://zhidao.baidu.com/question/14360400.html

这个 Class Student 对象大概的意思应该是 setName() 、setScore() 字面意思可知负责从外面接收输入并更新数据,这不有个 = 赋值操作符 ,同样setName() 、setScore() 字面意思是外部进行调用时返回对应数据,于是有 return 语句。

public String getName() 定义什么类型就保持类型一致, get\set 直接连接定义的变量用,用于获得\设置数值。

此处暂时定义了两个属性,如果要添加更多的属性就依照这样的模式添加,一定注意类型要一致。

如何使用呢,我想上一串代码就可以get到了。

importjava.util.Scanner;//定义学生类实体

classStudent {privateString Name;private doubleScore;publicStudent() {super();

}publicString getName() {returnName;

}public voidsetName(String Name) {this.Name =Name;

}public doublegetScore() {returnScore;

}public void setScore(doubleScore) {this.Score =Score;

}

}public classMain {static Student[] Students = new Student[1000];public static voidmain(String [] args) {

Scanner Input= newScanner(System.in);

System.out.println("请输入学生数量:");int studentNumber =Input.nextInt();for(int i = 0; i < studentNumber; i++) {

Students[i]= newStudent();

System.out.println("请输入第" + (i+1) + "名学生的姓名");

Students[i].setName(Input.next());

System.out.println("请输入第" + (i+1) + "名学生的成绩");

Students[i].setScore(Input.nextDouble());

}

System.out.println("最高分: ");

System.out.println(" \t\t" + "姓名" + "\t\t" + "成绩");

System.out.println("\t\t" + Students[max(Students, studentNumber)].getName() + "\t\t" +Students[max(Students, studentNumber)].getScore() );

System.out.println("成绩排序: ");

sort(Students, studentNumber);for(int i = 0; i < studentNumber; i++) {

System.out.println("\t\t" + Students[i].getName() + "\t\t" +Students[i].getScore());

}

}//返回学生成绩最高分对应学生下标

static int max(Student[] Students, intn) {int flag = 0;double max = Students[0].getScore();for(int i = 1; i < n; i++) {if(Students[i].getScore() >max) {

max=Students[i].getScore();

flag=i;

}

}returnflag;

}//学生成绩排序

static void sort(Student[] Students, intn) {

Student temp= newStudent();for(int i = 0; i < n; i++) {for(int j = i+1; j < n; j++) {if(Students[i].getScore() >Students[j].getScore()) {

temp=Students[i];

Students[i]=Students[j];

Students[j]=temp;

}

}

}

}

}

怎样?和结构体差不多的用法吧,就是定义时有点繁琐。

这个只是个简单的不健壮的程序,比如无法判断数据输入有效性、名称不能有空格、最高分有多个时展示不全等等,后续可以加强。

先记在此处,算是学习笔记吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值