C语言 Struct 结构体在 Java 中的体现
大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习。
和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东西,使用它就避免了一些棘手的问题。
那么问题来了,在 Java 还有 Struct 结构体嘛?
答案没有的,不过 Java 中的 Class 对象体现的就是 Struct 结构体的思想。虽然 C 语言是一个面向过程化的语言,不过这个 Struct 结构体却面向对象的味道,而 Java 做为面向对象的语言,要实现 Struct
和定义结构体一样,先定义一个 Class 对象,参考网上资料这里以一个学生管理系统为例。
//定义学生实体类
class Student {
private String Name;
private double Score;
public Student() {
super();
} public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
} public double getScore() {
return Score;
}
public void setScore(double Score) {
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到了。
import java.util.Scanner; //定义学生类实体
class Student {
private String Name;
private double Score;
public Student() {
super();
} public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
} public double getScore() {
return Score;
}
public void setScore(double Score) {
this.Score = Score;
}
} public class Main {
static Student[] Students = new Student[1000];
public static void main(String [] args) {
Scanner Input = new Scanner(System.in);
System.out.println("请输入学生数量:");
int studentNumber = Input.nextInt();
for(int i = 0; i < studentNumber; i++) {
Students[i] = new Student();
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, int n) {
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;
}
}
return flag;
} //学生成绩排序
static void sort(Student[] Students, int n) {
Student temp = new Student();
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;
}
}
}
}
}
怎样?和结构体差不多的用法吧,就是定义时有点繁琐。
这个只是个简单的不健壮的程序,比如无法判断数据输入有效性、名称不能有空格、最高分有多个时展示不全等等,后续可以加强。
先记在此处,算是学习笔记吧。
C语言 Struct 结构体在 Java 中的体现的更多相关文章
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
- C#语言struct结构体适用场景和注意事项
在C#语言中struct结构体和class之间的区别主要是值类型和引用类型的区别,但实际上如果使用不当是非常要命的.从Win32时代过来的人对于struct一点不感觉陌生,但是却反而忽略了一些基本问题 ...
- 如何让c语言使用结构体近似模拟c++中的类
如今统治市场的主流编程语言,如c++,java,大都是面向对象类型的编程语言. 而众所周知,c语言是面向过程的编程语言,但是它拥有一个类似于类的结构,叫做结构体,主要的区别在于结构体无法定义函数. 因 ...
- ios开发中的C语言学习—— 结构体简介
在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- C语言结构体在内存中的存储情况探究------内存对齐
条件(先看一下各个基本类型都占几个字节): void size_(){ printf("char类型:%d\n", sizeof(char)); printf("int类 ...
- struct结构体在c和c++中的差别
非常多次遇到这个struct的问题,今天在这里简单总结一下我的理解 一.struct在C 中的使用 1.单独使用struct定义结构体类型 struct Student { int id; int n ...
- go语言学习-结构体
结构体 go语言中的结构体,是一种复合类型,有一组属性构成,这些属性被称为字段.结构体也是值类型,可以使用new来创建. 定义: type name struct { field1 type1 fie ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
随机推荐
- STP(Spanning Tree Protocol)
STP生成树协议 问题 为了提高网络的可用性,需要进行冗余和备份.但是冗余路径会产生环路 环路会导致以下问题 广播风暴:由于交换机会对广播.多播.和未知目标MAC的单播包进行泛洪,在存在环路的情况 ...
- @ResponseBody ResponseEntity
1.产生疑问 我们知道,如果在 Controller 的某个方法上加上 @ResponseBody 注解,那么你就能拿到 json 数据. 如果你只是知道这么用,那么你应该知道 ResponseBod ...
- 数据结构 - 表插入排序 具体解释 及 代码(C++)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/24323125 表插入排序 具体解释 及 代码 ...
- 输入参数的默认值设定${3:-var_d}
今天看到一个不一样的写法: if [ $# != 2 ] && [ $# != 3 ] ; then #判断参数个数 echo "Invalid Args" ...
- java Design Patterns
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Pocket Gem OA: Log Parser
time a given player spends actually connected to the network. We keep console logs of various game s ...
- h5页面实战——与andriod和ios的交互
首先需要我们h5页面需要做一些匹配.比如:如何判断当前手机是andriod还是ios, andriod攻城狮和ios工程师,一般会定义事件的方法.我们套用他们方法就可以了. 那么为什么我要写这个随笔呢 ...
- 类与对象 && 继承
以下是本人的对类与对象.继承的一些理解,如有错误之处万望谅解,如有朋友愿意指正,十分乐意,万分感谢! 类与对象 类与对象是学习编程的基础(大概吧),那么何为类?何为对象呢? 一.简 ...
- Qt框架及模块认识
小白自工作就接触Qt,一直都在使用Qt5.3.1版本,所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼,没准以后会碰到.对Qt所有的丰富的API表示惊叹,对于Qt的框架及模块认识也是极为模糊的,文 ...
- AI时代学习新的技术,方向为计算机视觉--欢迎来我的简书blog拔草
2017-09-01 19:29:33 简书blog: https://www.jianshu.com/u/973c8c406de7