一.数据结构的内容
逻辑结构:关联关系,邻里关系。
存储结构:数据元素+关联方式。
运算:对逻辑结构的加工。
1.算法特性:
有穷性:指令序列是有限的
确定性:每条语句的含义明确,无二义性
可行性:每条语句都应在有限的时间内完成
输入:零个或者多个输入
输出:一个或者多个输出
2.程序
程序=数据结构+算法+程序设计方法+编程语言
**程序是算法用某种程序设计语言的具体实现。**程序可以不满足算法的有穷性,比如操作系统也是一种程序,如果你愿意,你的电脑可以一直开着,保持操作系统的运行。
3.程序,算法,软件之间的关系
程序:算法的计算机实现。用某种编程语言实现。
算法:表示问题的解。
软件:程序+文档
如下图所示:
二.数据类型
1.数据类型
指一个值的集合和定义在集合上的操作集合。例如:java的整数类型(Integer),就不仅仅表示整数数值的集合,还包括对整数类型进行的操作集合,加、减、乘、除、模等操作。
Java中的数据类型:
2.抽象数据类型:
一个数学模型以及定义在这个模型上的一组操作(由用户定义,用以表示应用问题的数据模型)。
看起来抽象数据类型和数据类型的定义基本相同。不同点在于:数据类型通常是指某种高级语言的,而抽象数据类型用户重新设计,一种概念。这里的"抽象"的含义在于数学抽象。
原子类型:比如整型
固定聚合类型:比如复数,两个实数确定的次序构成
可变聚合类型:比如汽车类型,构成的成分是不确定的。(因为小轿车、大卡车的构成是不同的)
**抽象数据类型抽象的层次越高,那么可复用性也越高。**比如:java中的Object是对所有对象的抽象,那么就可以作为所有类的父类。
3.抽象数据类型的表示(代码):
(1)java代码定义一个学生类(和面向过程的c语言的区别是除了定义对象的属性,还要定义对象的方法,即对属性进行赋值和修改等动作)
package test1;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by smyhvae on 2015/8/12.
*/
public class Student {
String num; //学号
String name; //姓名
char sex; //性别
Date birthday; //出生日期
String contact; //联系方式
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-mm-dd"); //将Date日期转化为String字符串打印出来
return "Student{" +
"num='" + num + '\'' +
", name='" + name + '\'' +
", sex=" + sex +
", birthday=" + sdf.format(birthday) +
", contact='" + contact + '\'' +
'}';
}
}
(2)给学生类进行赋值并且打印出来(在main方法中定义student的实例,调用student的方法进行赋值,并利用toString方法进行打印,注意看时间类的相关写法)
package test1;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
/**
* Created by smyhvae on 2015/8/12.
*/
public class JavaTest {
public static void main(String[] args) throws ParseException {
Student s = new Student();
s.setNum("111222");
s.setName("生命壹号");
s.setSex('男'); //这里面赋值可以用中文
s.setContact("smyhvae@163.com");
Calendar calendar = Calendar.getInstance();
calendar.set(1991, 11, 28);
Date date = calendar.getTime();
s.setBirthday(date);
System.out.println(s.toString());
}
}
结果图: