当前位置:文档之家› Java分页类封装

Java分页类封装

Java分页类封装
Java分页类封装

java分页类封装

分页类的主要有3个基本字段:当前页(页码)、分页大小(每页显示的数据大小)、数据总数目。

当前页:currentPage

分页大小:pageSize

数据总数目: recordTotalCount

注意:

“/”:代表求商,如7/3=2

“%”:代表求余,如7%3=1

由基本字段派生出来的字段:是否有上一页previous、是否有下一页next、总页数totalPage 是否有上一页是由当前页决定,看当前页是否大于1

是否有下一页是由总页数决定,看当前页是否小于总页数

总页数是由数据总数目和分页大小决定。

例如:如果数据有92条,你要每页显示10条,92÷10=9...2 ,多出来的2条数据,也算1页,总页数就是9+1=10页。

怎么处理余数,看以下公式

公式1

总页数=[数据总数目]/[分页大小]+(余数>0,则+1,余数=0,则+0)。

如92÷10=9...2 ,9+1=10

公式2

总页数=[数据总数目]÷[分页大小]的向上取整。

如92÷10=9.2 ,向上取整为10

公式3

总页数=([数据总数目]+([分页大小]-1))/[分页大小]

不明白为什么[分页大小]要减去1?

(92+(10-1))/10=10 => 90/10+ (2+(10-1))/10= > 9+1

它是这样处理余数的

不管数据总数目是多少,余数的范围是0<=余数<=被除数-1,所以,余数的范围是0<=余数<=分页大小-1

(余数值+(余数范围的最大值))/分页大小=> (2+(10-1))/10=1

也就是(余数值+(分页大小-1))/分页大小的结果是等价于公式1中的(余数>0,则+1,余数=0,则+0)

公式3不方便开发人员理解,但是就是有许多人用,本人不推荐用,没必要弄复杂,自己不明白,其他人也是一脸闷逼。最好就用公式一或公式二,简单明了迅速准确。

根据以上分析,分页实体类Pagination有

/** 数据总数目 **/

private int recordTotalCount = 0;

/** 当前页 */

private int currentPage = 1;

/** 分页大小,每页显示多少条数据 ,默认每页显示10条 */

private int pageSize = 10;

/** 总页数 ,由分页大小和数据总数目决定 */

private int totalPage = 0;

/**是否有上一页**/

private boolean previous;

/**是否有下一页**/

private boolean next;

有这些字段还不够,需要与数据库分页语句的关联字段,limit 、offset字段

需要前端数据显示字段,recordList字段等

所以分页类写3个类最好,分工明确

1.RowBounds类(定义limit 、offset字段,关联数据库分页语句)

2.RowBounds的子类Pagination(定义recordTotalCount、currentPage、pageSize等字段,调整相关分页数据)

3.Pagination的子类Page(定义recordList等字段,控制数据列表显示)

/**

* offset、limit用于数据库分页语句

* @author凌君泽

* **/

public class RowBounds{

private static final int NO_ROW_OFFSET = 0;

private static final int NO_ROW_LIMIT = Integer.MAX_VALUE;

/**开始索引**/

private int offset = NO_ROW_OFFSET;

/**限制查询的数量,limit<=pageSize ,一般情况下都是limit=pageSize,最后一页的情况下,才会去调整limit值,以优化SQL查询**/

private int limit = NO_ROW_LIMIT;

public RowBounds() {

this.offset = NO_ROW_OFFSET;

this.limit = NO_ROW_LIMIT;

}

public RowBounds(int currentPage, int pageSize) {

this.offset = currentOffset(currentPage, pageSize);

}

/**设置并返回当前页码的开始索引**/

public int currentOffset(int currentPage, int pageSize) { setLimit(pageSize);

if (currentPage > 0) {

this.offset = (currentPage - 1) * getLimit();//offset是由当前页和分页大小决定

return this.offset;

}

return NO_ROW_OFFSET;

}

public int getOffset() {

return this.offset = this.offset<0?NO_ROW_OFFSET:this.offset;

}

public void setOffset(int offset) {

this.offset = offset<0?NO_ROW_OFFSET:offset;

}

/**获取限制的数量**/

public int getLimit() {

this.limit = limit<0?NO_ROW_LIMIT:limit;

return limit;

}

/**设置限制的数量**/

public void setLimit(int limit) {

this.limit = limit<0?NO_ROW_LIMIT:limit;

}

}

/**

* 分页实体

* 调整相关分页数据

* @author凌君泽

*/

public class Pagination extends RowBounds{

/** 默认显示10条 */

public static final int DEFAULT_PAGE_SIZE = 10;

/** 数据总数目**/

private int recordTotalCount = 0;

/** 当前页 */

private int currentPage = 1;

/** 分页大小,每页显示多少条数据 */

private int pageSize = DEFAULT_PAGE_SIZE;

/** 总页数 ,由分页大小和数据总数目决定 */

private int totalPage = 0;

/**是否有上一页**/

private boolean previous;

/**是否有下一页**/

private boolean next;

public Pagination() {

currentOffset(getCurrentPage(), getPageSize());

isPrevious();

isNext();

}

public Pagination(int currentPage) {

setCurrentPage(currentPage);

setPageSize(DEFAULT_PAGE_SIZE);

currentOffset(getCurrentPage(), getPageSize());

isPrevious();

isNext();

}

public Pagination(int currentPage, int pageSize) {

setCurrentPage(currentPage);

setPageSize(pageSize);

currentOffset(getCurrentPage(), getPageSize());

isPrevious();

isNext();

}

/** 获取"总数据"条数**/

public int getRecordTotalCount() {

this.recordTotalCount= this.recordTotalCount< 0 ? 0 : this.recordTotalCount;

return recordTotalCount;

}

/** 设置"总数据"条数**/

public void setRecordTotalCount(int recordTotalCount) {

this.recordTotalCount= recordTotalCount < 0 ? 0 :

recordTotalCount;

int tempTotalPage = getTotalPage();//总页数由分页大小和数据总数目决定 ,数据总数目改变,总页数也要改变

//总页数限制了当前页的大小,所以如果当前页超过总页数时要调整

if(this.recordTotalCount!=0 && getCurrentPage() > tempTotalPage){//有数据,当前页超过总页数时

setCurrentPage(tempTotalPage);

}

if(this.recordTotalCount!=0&&(getOffset()+getLimit()>this.recordT otalCount)){//有数据时,如果开始索引+限制数大于总数据数,调整限制数值,让开始索引+限制数=总数据数,查询效率会好一些

setLimit(this.recordTotalCount-getOffset());//调整限制数}

isPrevious();

isNext();

}

/** 获取当前页 */

public int getCurrentPage() {

/** 当前页最小为1*/

this.currentPage= this.currentPage<= 0 ? 1 : this.currentPage;

/** 判断当前页面是否超过了总页数:如果超过了默认给最后一页作为当前页 */

if(this.getTotalPage()>0){//有数据的时候

this.currentPage= this.currentPage>this.getTotalPage()?this.getTotalPage():this.current Page;

}

return currentPage;

}

/** 设置当前页 */

public void setCurrentPage(int currentPage) {

/** 当前页最小为1*/

this.currentPage = currentPage <= 0 ? 1 : currentPage;

/** 判断当前页面是否超过了总页数:如果超过了默认给最后一页作为当前页 */

if(this.getTotalPage()>0){//有数据的时候

this.currentPage= currentPage>this.getTotalPage()?this.getTotalPage():currentPage;

}

currentOffset(this.currentPage, getPageSize());//因为调整了当前页,而offset是由当前页和分页大小决定,所以要调整offset值

}

/** 获取分页大小,每页显示多少条数据 */

public int getPageSize() {

this.pageSize= this.pageSize<= 0 ? DEFAULT_PAGE_SIZE:

this.pageSize;

return pageSize;

}

/** 设置分页大小,每页显示多少条数据 */

public void setPageSize(int pageSize) {

this.pageSize = pageSize <= 0 ? DEFAULT_PAGE_SIZE : pageSize;

currentOffset(getCurrentPage(), this.pageSize);//因为调整了当前页,而offset是由当前页和分页大小决定,所以要调整offset值

}

/** 设置并获取总页数 ,由分页大小和总记录数决定 */

public int getTotalPage() {

if(this.getRecordTotalCount() <=0){

this.totalPage = 0 ;

}else{

this.totalPage= this.getRecordTotalCount()/this.getPageSize();

if(this.getRecordTotalCount()%this.getPageSize()!=0){

this.totalPage++;

}

}

return this.totalPage;

}

/** 设置总页数 ,由分页大小和总记录数决定 */

public void setTotalPage(int totalPage) {

if(totalPage <=0){

this.totalPage = 0 ;

}else{

this.totalPage= this.getRecordTotalCount()/this.getPageSize();

if(this.getRecordTotalCount()%this.getPageSize()!=0){

this.totalPage++;

}

}

}

/**是否有上一页**/

public boolean isPrevious() {

this.previous = getCurrentPage() > 1;

return previous;

}

/**是否有下一页**/

public boolean isNext() {

this.next = getCurrentPage() < getTotalPage();

return next;

}

}

/**

* 分页(数据列表的显示)

* @author凌君泽

* @param T Map<String,Object> 或者是封装类

*/

public class Page extends Pagination {

/**当前页显示的数据列表**/

private List recordList = null;

/**是否不分页,默认分页(用来控制是否查询全部数据,以一页显示全部数据)**/

private boolean isNotPage = false;

/**分页查询参数(用来控制查询的条件)**/

private Map queryParam= new HashMap();

public Page(){

super();

}

/**

* 默认每页显示10条

* @param currentPage 当前页

*/

public Page(int currentPage) {

super(currentPage);

}

/**

* @param currentPage 当前页

* @param pageSize 每页显示的数目

*/

public Page(int currentPage, int pageSize) {

super(currentPage, pageSize);

}

public List getRecordList() {

return recordList;

}

public void setRecordList(List recordList) {

this.recordList = recordList;

}

public Map getQueryParam() {

return queryParam;

}

public void setQueryParam(Map queryParam) { if(queryParam==null){

this.queryParam = new HashMap();

}else{

this.queryParam = queryParam;

}

}

public boolean isNotPage() {

return isNotPage;

}

public void setNotPage(boolean isNotPage) {

this.isNotPage = isNotPage;

}

}

====调试代码====

public static void main(String[] args) {

int recordTotalCount = 3;

int currentPage = 1;

int pageSize = 2;

Page> page = new Page>(currentPage, pageSize);

page.setRecordTotalCount(recordTotalCount);

List> recordList = new ArrayList>();

Map recordMap1 = new LinkedHashMap();

recordMap1.put("id", "1");

recordMap1.put("name", "张三");

recordList.add(recordMap1);

Map recordMap2 = new LinkedHashMap();

recordMap2.put("id", "2");

recordMap2.put("name", "李四");

recordList.add(recordMap2);

page.setRecordList(recordList);

System.out.println(page);

/** 输出的结果:

{"recordList":[{"id":"1","name":"张三"},{"id":"2","name":"李四"}],"isNotPage":false,"queryParam":{},"recordTotalCount":3,"currentPa ge":1,"pageSize":2,"totalPage":2,"previous":false,"next":true,"offset ":0,"limit":2}

**/

}

Java集合框架实验报告

浙江大学城市学院实验报告 课程名称Java高级程序设计 实验项目名称Java集合框架实验 学生姓名专业班级学号 一、实验目的 1.理解Java集合框架的特点、接口与类之间的关系 2.掌握Java集合框架的List接口,以及List接口的重要实现类LinkedList、ArrayList 3.掌握Java集合框架的Set、SortedSet接口,以及重要实现类HashSet与TreeSet 4.掌握Java集合框架的Map、SortedMap接口及其重要实现类HashMap、TreeMap 5.掌握Java集合框架的Collection与Iterator接口的特点与使用方式 二、实验内容 1、使用List管理对象集合 2、使用Map管理对象集合 3、使用Set管理对象集合 4、设计一个自定义的集合类 三、实验步骤 1、在Eclipse中新建工程(即项目) 2、使用List管理对象集合 1)新建一个包listExample 2)在这个包中新建三个类:Student类,StudentList类,StudentListTest类。 参考代码: Student、java, StudentList、java,StudentListTest、java 3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序, 给出具体的实现代码(不使用泛型类)。

void addStudent(Student student){//添加一个学生对象 boolean a=true; for(int i=0;i

JAVA类的继承实验报告

《面向对象程序设计》实验报告 实验六、类的继承 课程代码:1H10500学分:6 实验类型:实践型实验学时:4个学时 实验时间:2017.11.23 实验地点:5407 班级:计算机164 专业:计算机科学与技术专业学号:2016011147 姓名:林文辉 一、实验目的 (1)学习JAVA继承的思想 (2)了解JAVA语言继承的实现 二、实验内容及步骤 内容:在圆柱体类Cylinder里,用一个构造方法调用另一个构造方法 步骤:方案的设计与分析(类结构图。。。。。。) (1)找出对象的共同属性和行为 (2)设计代表共同状态与行为的类 (3)决定子类是否需要让某项行为有特定的不同的运行方式 (4)寻找更多抽象化的机会 (5)完成类的继承层次 三、实验过程及结果 实验1代码: abstract class Graphics { abstract void parameter(); abstract void area(); } class Rectangle extends Graphics{ double h,w; Rectangle(double u,double v){h=u;w=v;} void parameter() { S ystem.out.println("矩形高度为:"+h+",矩形宽度为:"+w); } void area() { S ystem.out.println("矩形面积为:"+(h*w)); } }

class Circle extends Graphics{ double r; String c; Circle(double u,String v){r=u;c=v;} void parameter() { System.out.println("圆半径为:"+r+",圆颜色为:"+c); } void area() { System.out.println("圆面积为:"+(Math.PI*r*r)); } } class ExamAbs{ public static void main(String args[]) { Rectangle rec=new Rectangle(2.0, 3.0); Circle cir=new Circle(4.0, "Red"); Graphics[]g= {rec,cir}; for(int i=0;i

java实验报告有理数的类封装

华中科技大学文华学院 《Java程序设计》实验报告 实验三:有理数的类封装 专业班级:通信工程2008级1班姓名: 学号: 时间:

实验三:有理数的类封装 1、实验目的: 让学生学习使用类来封装对象的属性和功能。 2、实验要求: 希望程序能对分数(分子分母都是整数)进行四则运算,而且两个分数四则运算的结果仍然是分数。分数也称有理数。本实验要求用类实现对有理数的封装。有理数有两个重要的成员:分子和分母,另外还有重要的四则运算。 编写一个java应用程序,该程序中有一个Rational(有理数)类,具体要求如下: ※Rational类有两个int型的成员变量,名字分别为numberator(分子)和denominator(分母)。 ※提供Rational add(Rational r)方法,即有理数调用该方法与参数指定的有理数做加法运算,并返回一个 Rational对象。 ※提供Rational sub(Rational r)方法,即有理数调用该方法与参数指定的有理数做减法运算,并返回一个 Rational对象。 ※提供Rational muti(Rational r)方法,即有理数调用该方法与参数指定的有理数做乘法运算,并返回一个 Rational对象。 ※提供Rational div(Rational r)方法,即有理数调用该方法

与参数指定的有理数做除法运算,并返回一个Rational 对象。 3、程序效果图 4、程序代码(主要语句有注释!) 5、实验思考问题 6、实验总结及心得 附录:程序摸版 Rational.java public class Rational { int numerator,denominator; Rational(){} Rational(int a,int b){ setNumeratorAndDenominator(a,b); } void setNumeratorAndDenominator(int a,int b){ //设置分子和分母 int c=f(Math.abs(a),Math.abs(b)); //计算最大公约数 numerator=a/c; denominator=b/c; if(numerator<0&&denominator<0){

《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

java 实验七 对象集合 实验报告

实验七对象集合的组织 实验目标: 1.了解Collection、List、Set、Map等常用数据结构的层次结构 2.掌握LinkList、Vector、ArrayList、HashTable、HashMap等类的用法 3.掌握Enumeration(枚举)及Iterator(迭代器)的遍历用法 4.了解自学HashSet、TreeSet这两个Set接口下的重要实现类 5.了解自学比较器接口 实验任务: 1. 填空 List 接口的特点是元素__有__(有|无)顺序,___可以___(可以|不可以)重复; Set 接口的特点是元素__无___(有|无)顺序,__不可以____(可以|不可以)重复; Map 接口的特点是元素是键、值对象,其中__键__可以重复,_值对象__不可以重复 2. (List)有如下代码: import java.util.*; public class TestList{ public static void main(String args[]){ List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(1, “Learn”); list.add(1, “Java”); printList(list); } public static void printList(List list){ //1 } } 要求: 1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容,请使用三种方式来实现(课本227页,Iterator、增强for循环,普通循环)。 2) 三种代码与执行结果截图 1、用Iterator实现的代码如下: package zi; import java.util.*; publicclass Ex7_2{ publicstaticvoid main(String args[]){ List list = new ArrayList(); list.add("Hello"); list.add("World"); list.add(1, "Learn");

如何用记事本编写一个简单的java代码

如何用记事本编写一个简单的j a v a代码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

一:怎么用记事本写第一个java代码 第一步:新建txt文档 首先我们在F盘新建一个txt文档,并命名为,如下图所示: 第二步:编写代码 我们双击打开:如下图所示 第三步:编写好代码 我们在记事本中写代码,写好后如下所示:

然后我们同时按Ctrl+s键保存,然后关闭记事本即可 上面的源代码如下: public class Test{//这里的Test为类名,这里类名要与我们刚才新建的记事本的名字必须一致,首字母大写 public static void main(String[] args){//java中的主函数的写法 "HelloWorld");//java中的输出语句写法 } } 第三步:打开控制台界面 我们在计算机中,打开如下图界面,

然后在这里,输入cmd,并按回车,然后弹出如图所示

第四步:在控制台中运行并输出 我们用鼠标点击一下里面黑色部分,然后输入F:然后回车,然后再输入javac 然后回车,最后输入java Test,就可以看到结果了,如下图所示:

红色圈出来部分就是结果了 二:温馨提示: 1,上面演算中在控制台中首先输入F:的原因是因为我在F盘建立一个文本文档,并命名为,如果你是把你的文档文档建立在D盘,则应该输入D: 以此类推。 2,如果你是在F盘下的CH文件夹建立一个记事本,并命名为,则输入的情况如下, cd CH表示转到CH这个文件夹下,然后再输入回车,再输入java Test 就可以看到运行结果了

实验二 Java类-实验报告

南京信息工程大学实验(实习)报告 实验(实习)名称Java类实验(实习)日期 10.17 得分指导教师刘文杰院计算机与软件学院专业软件工程年级 2017级班次 1 姓名张成学号20171344024 1.实验目的: 1)熟练MyEclipse工具的使用与调试; 2)掌握Java类、方法和变量的定义和使用; 3)熟悉方法重载和覆盖、掌握this和supper关键字使用; 4)掌握4类访问控制符的使用。 2.实验内容: (1)定义一个类Circle,实现其面积计算功能getArea(); (2)编写程序,读入一个正整数并按降序显示它的所有最小因子。(教材第3章习题9)(3)利用多态性编程,实现求三角形、正方形和圆形的面积。(教材第4章习题6) 3.实验步骤 1、 public class Circle { public double radius; public Circle(double r) { radius= r; } public double getArea() { return radius*radius*Math.PI; } public static void main(String[] args) { Circle area1 = new Circle(5); System.out.println("The area is " + area1.getArea()); } }

2、 import java.util.Scanner; public class Read { public static void main(String[] args) { Scanner input =new Scanner(System.in); System.out.print("输入一个正整数:"); int n=input.nextInt(); int []a=new int[n]; int []b=new int[n]; int p,q=0,m=0; for(p=2;p<=n;p++) { while(n%p==0) { n=n/p; if(n!=1) { a[q]=p; q++; } else { a[q]=p; } } } while(q!=-1) { b[m]=a[q]; m++; q--; } for(p=0;p

java实验报告——对象和类

成绩: 面向对象原理与Java实践课程实验报告 实验1:对象和类 姓名 ____ 班级 ____ 学号 ____ 实验地点 ____ 实验时间 ____ 指导教师 ____

面向对象原理与Java实践课程实验报告 实验1:对象和类 一、实验目的: ●掌握类的定义及应用方法 ●掌握对象的创建方法,了解实例变量、实例方法和静态字段的特性 ●体会Java在类和对象的设计中体现的面向对象的思想 二、实验要求: ●具备Java基础知识(教材第1、2章内容) ●掌握Java中对象和类的基本概念和应用方法(教材第3章内容) ●设计类时注意保证类的封装性 ●编写程序完成以下实验内容并上交实验报告(包括电子文档与纸质文档) 三、实验内容: 设计并实现一个“广石化院电信学院学生通信录”系统。系统采用字符界面,在出现的主界面中按提示输入相应字符以选择“增加”、“删除”、“修改”、“查找”等功能进行操作(其中“查找”功能除能够查找某个学生的信息之外,还能够显示所有学生的信息)。记录的存储可采用数组或链表的方式。 四、设计思路: 为了实现该系统,首先要需要两个类;一个类为主界面服务,用于接收用户输入信息以及做出相关反应;一个类为学生信息服务,定义学生通讯录信息的各个字段,以及操作字段的各个方法,考虑到部分字段的属性问题,所以将操作方法都写在学生类中,不再另外放置在其他类中。学生信息将会采用学生类的对象数组来储存。 五、程序源代码: 下面是ZhuJieMian 主界面类 package pkg_TXL; import java.util.Scanner; public class ZhuJieMian { /** * * 该类为通讯录系统的主界面提供主要功能显示,以及负责主菜单与子菜单的正常跳转 */ public static void main(String[] args) {

如何写一个正确的JAVA程序

若在定义中出现了常数初始化字符,则大写基本类型标识符中地所有字母.这样便可标志出它们属于编译期地常数.个人收集整理勿做商业用途 包()属于一种特殊情况:它们全都是小写字母,即便中间地单词亦是如此.对于域名扩展名称,如,,或者等,全部都应小写(这也是和地区别之一).个人收集整理勿做商业用途() 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素地定义:() () () ()( ) () 对于自己创建地每一个类,都考虑置入一个(),其中包含了用于测试那个类地代码.为使用一个项目中地类,我们没必要删除测试代码.若进行了任何形式地改动,可方便地返回测试.这些代码也可作为如何使用类地一个示例使用.个人收集整理勿做商业用途() 应将方法设计成简要地、功能性单元,用它描述和实现一个不连续地类接口部分.理想情况下,方法应简明扼要.若长度很大,可考虑通过某种方式将其分割成较短地几个方法.这样做也便于类内代码地重复使用(有些时候,方法必须非常大,但它们仍应只做同样地一件事情). () 设计一个类时,请设身处地为客户程序员考虑一下(类地使用方法应该是非常明确地).然后,再设身处地为管理代码地人考虑一下(预计有可能进行哪些形式地修改,想想用什么方法可把它们变得更简单).个人收集整理勿做商业用途 () 使类尽可能短小精悍,而且只解决一个特定地问题.下面是对类设计地一些建议:■一个复杂地开关语句:考虑采用“多形”机制 ■数量众多地方法涉及到类型差别极大地操作:考虑用几个类来分别实现 ■许多成员变量在特征上有很大地差别:考虑使用几个类. () 让一切东西都尽可能地“私有”——.可使库地某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出.若强行拿出,就可能破坏其他人现有地代码,使他们不得不重新编写和设计.若只公布自己必须公布地,就可放心大胆地改变其他任何东西.在多线程环境中,隐私是特别重要地一个因素——只有字段才能在非同步使用地情况下受到保护.个人收集整理勿做商业用途 () 谨惕“巨大对象综合症”.对一些习惯于顺序编程思维、且初涉领域地新手,往往喜欢先写一个顺序执行地程序,再把它嵌入一个或两个巨大地对象里.根据编程原理,对象表达地应该是应用程序地概念,而非应用程序本身.个人收集整理勿做商业用途() 若不得已进行一些不太雅观地编程,至少应该把那些代码置于一个类地内部. () 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第章小节地“用内部类改进代码”).个人收集整理勿做商业用途() 尽可能细致地加上注释,并用注释文档语法生成自己地程序文档. () 避免使用“魔术数字”,这些数字很难与代码很好地配合.如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“”到底是指“数组大小”还是“其他全然不同地东西”.所以,我们应创建一个常数,并为其使用具有说服力地描述性名称,并在整个程序中都采用常数标识符.这样可使程序更易理解以及更易维护.个人收集整理勿做商业用途 () 涉及构建器和异常地时候,通常希望重新丢弃在构建器中捕获地任何异常——如果它造成了那个对象地创建失败.这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续.个人收集整理勿做商业用途

JAVA实验报告-集合框架与泛型机制

Java 语言程序设计 C 实验报告 集合框架及泛型机制 学生姓名 专业、班级 指导教师 成绩 计算机与信息工程学院 年月日

一、实验目的 学习课程相关章节知识,通过上机练习,掌握以下知识: 1.掌握 List 接口下 ArrayList 及 LinkedList 的使用方法。 2.掌握 Map 接口下 HashMap 及 HashTable的使用方法 3.掌握集合中泛型的使用 二、实验内容 利用集合完成象数据库那样存储数据,并且可以简单查询,利用 map 存储学生信息,字段如下: id ,name,age,实现步骤: (1)创建类,类图如下: (2)在 main 方法编写逻辑代码 (3)运行程序并测试结果 package https://www.doczj.com/doc/083455621.html,; public class Student { private String name ; private int age ; private String id ;

public String getName() { return name ; } public void setName(String name ) { this . name =name ; } public int getAge() { return age ; } public void setAge(int age ) { this. age=age ; } public String getId() { return id; } public void setId(String id) { this. id=id; } public Student(String name ,int age , String id ) { super(); this. name =name ; this. age=age ; this. id=id; } public void sayHi() { System.out.println("name=" +this.getName()+"age=" + this .getAge()+" " + "id=" + this.getId()); } }

java面向对象编程实验报告

java面向对象编程实验报告 篇一:java面向对象编程实验报告 信息工程学院 Java程序设计实验/实习报告 学院:信息工程学院班级:信息112 姓名:吴连梅学号:XX013305 成绩:A 实验二面向对象编程 1.实验目的 (1)掌握类与对象基本知识; (2)Java中的继承机制及包(package)、接口(interface)等的设计方法; (3)掌握static、this、super等关键字的使用; (4)掌握Java中两种比较器的用法。 2.实验内容 实验题 1 定义一个类Book,包含两个属性:一个是private的String类型的属性title、一个是private的float类型的属性listPrice,封装这两个属性的四个方法setTitle()和getTitle()、setListPrice( )和geListPrice ()。 基本要求: (1)设计类Book及类BookManagement,在类BookManagement中输出Book类的对象的两个private属性;

(2)重写父类的toString()方法,实现Book类实例的两个属性的输出。 实验过程: 新建工程后,在工程下面建立一个包Book,在包下再建立一个Book类,类中包含两个属性,一个是private的String类型的属性title、一个是private的float类型的属性listPrice,之后是封装这两个属性的四个方法,用快捷键Alt+Shift+S选择gennerate Getters and Setters,再实验报告的内容与格式按任课教师的要求书写。 然后就是重写父类的toString()方法,用快捷键Alt+Shift+S选择gennerate toString,快捷重写。 这段程序写完是这样的: 接下来便是BookManagement类,在包book下新建一个类BookManagement, 写完的程序是这样的: BookManagement类中创建了书的对象,在主方法中调用output函数,赋值,输出。程序写完后,将其存盘,再进行运行,得出的结果如下: 实验题2 有两个类:MobileManagement和Mobile,分别描述如图 3.4所示两部手机名称及价格,类MobileManagemen(本文来自:小草范文网:java面向对象编程实验报告)t在包,而Mobile在包

看完这30个技巧让你写好Java代码

看完这30个技巧让你写好Java代码 2019.8整理 成为一个优秀的Java程序员,有着良好的代码编写习惯是必不可少的。下面就让我们来看看代码编写的30条建议吧。 (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如: 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。 Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。 (2) 为了常规用途而创建一个类时,请采取”经典形式”,并包含对下述元素的定义:

(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。 (4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。 (5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。 (6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议: ?一个复杂的开关语句:考虑采用”多形”机制 ?数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现 ?许多成员变量在特征上有很大的差别:考虑使用几个类 (7) 让一切东西都尽可能地”私有”–private。可使库的某一部分”公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素–只有private字段才能在非同步使用的情况下受到保护。 (8) 谨惕”巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。 (9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。 (10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的”用内部类改进代码”)。 (11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。

操作系统实验报告java

操作系统实验报告 院系: 专业: 班级: 学号: 姓名: 指导老师:

进程调度的模拟与内存管理 一、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就续进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。实验模拟实现处理机调度,以加深了解处理机调度的工作,并体会优先级和时间片轮转调度算法的具体实施方法。帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 二、实验要求 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度。 4、可随时增加进程; 5、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可 自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功 能用于将指定挂起进程解挂入就绪队列。 6、每次调度后,显示各进程状态。

7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 8、结合以上实验,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置, PCB指针} 9、采用最先适应算法分配主存空间; 10、进程完成后,回收主存,并与相邻空闲分区合并。 11、采用图形界面; 三、实验内容 选择一个调度算法,实现处理机调度。 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 3、主存储器空间的分配和回收。在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。 四、实验原理 该模拟系统采用java语言实现,要实现的功能有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小可以由用户自己调整,有两种调度策略:按优先权调度和按时间片轮转调度。每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。每个状态都有一个队列用来存放处于该状态的进程,不同的调度策略采用不同的队列实现。当创建进程时,如果内存中的进程数还没达到规定道数,则将新建进程插入就绪

Java类与对象实验报告

实验报告 一、实验项目:类与对象 二、实验目的: 1. 学会使用类来封装对象的属性和功能 2. 掌握类变量与实例变量,以及类方法与实例方法的区别 3. 掌握使用package和import语 三、实验器材:计算机、Java编程软件JCreator 四、实验原理(或仪器装置图): 1. 类与对象 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。 类声明 class 类名{ 类体 } 对象的声明 一般格式为: 类的名字对象名字; 定义对象引用后,用new运算符完成对象的创建工作,分配存储空间,并对其初始化。 变量名=new 类名([构造方法实参表]); 对象的使用 访问成员的基本语法形式如下:

对象名.变量成员名 对象名.方法成员名([实际参数表]) 2.成员变量和局部变量 成员变量格式:[修饰符] 变量类型变量名[=初值]; 成员方法: 格式:[修饰符] 返回值的数据类型方法名(参数1,参数2,…) { 语句序列; return[表达式]; } 类中定义的变量是成员变量,而方法中定义的变量是局部变量。 3. 构造方法 构造方法是一种特殊的方法,创建对象时被自动调用。与一般的方法不同,它没有返回值类型的说明,方法体中也不可以用return语句带回返回值。构造方法的方法名与类名相同在构造方法中可以通过this关键字调用该类中其他的构造方法。 4.包 包是Java语言中有效地管理类的一个机制。 ①通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指 明该源文件定义的类所在的包。package语句的一般格式为:package 包名; ②import 语句:使用import 语句可以引入包中的类。 五、实验步骤及数据记录: 1.定义一个圆柱体类Cylinder,并创建相应的对象,然后计算圆柱体的底面积与体积。

《Java程序设计》题目样例

【题目样例】 一、单选题 1.下面哪个特性不是Java具有的(D )。 A、“纯”面向对象 B、安全性高 C、可移植性好 D、运行速度快 2.下面哪个类型是Java中不支持的(C )。 A、布尔类型 B、字符串 C、指针 D、数组 3.下面哪个不属于Java语言的关键字(B )。 A、native B、const C、final D、finally 4.下面关于数组的使用,不正确的是(C )。 A、int a[] = {1, 2, 3}; B、int a[][] = {{ 1, 2 }, { 3, 4} }; C、int a = new int[6] for (int i=0; i<6; i++) a[i] = i * i; D、int a[][] =new int[2][ ]; int a[1] = new int [4]; int a[2] = new int[5]; 5.应用程序的main方法中有以下语句,则输出的结果是(A )。 String obj = new String("abcxyz"); for(int i = obj.length() - 1; I > 0; i--) System.out.print(obj.charAt(i)); A、zyxcba B、xyz C、zyxcb D、abcxyz 6.下面函数,哪一组不属于方法重载(A )。 A、int fun(int a, int b, float c) { … } float fun(int b, int a, float c) { … } B、int fun(int a, int b) { … } int fun(int a, int a, float c) { … } C、int fun(int a) { … } int fun(int a, int b) { … } D、int fun(int a, float b) { … } int fun(float b, int a) { … } 7.若创建RandomAccessFile类对象raf2: RandomAccessFile raf2 = new RandomAccessFile("1.txt", "rw"),该语句的功能是(B )。 A、打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。 B、打开当前目录下的文件1.txt,既可以向文件写入数据,也可以从文件读取数据。 C、打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。 D、以上说法都不对。 8.应用程序main方法中有以下语句,则输出的结果是(A )。 String s = "java@123456@"; int n = s.indexOf("@"); int k = s.indexOf("@", 5); String s2 = s.substring(n + 1, k);

Java程序设计实验报告课案

学生实验报告 (理工类) 课程名称: JAVA程序设计专业班级: 13电子信息工程(2)学生学号: 1305102056 学生姓名:许伟铭 所属院部:软件工程学院指导教师:王倩倩 20 15 ——20 16 学年第 2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:JAVA编程基础实验学时: 4 同组学生姓名:————实验地点: 1514/A203 实验日期: 2016.04.08 实验成绩: 批改教师:王倩倩批改时间:

一、实验目的和要求 (1)熟练掌握JDK1.7及Eclipse Kepler Service Release 1(下简称Eclipse)编写调试Java应用程序及Java小程序的方法; (2)熟练掌握Java应用程序的结构; (3)了解Java语言的特点,基本语句、运算符及表达式的使用方法; (4)熟练掌握常见数据类型的使用; (5)熟练掌握if-else、switch、while、do-while、for、continue、break、return 语句的使用方法; (6)熟练掌握数组和字符串的使用; (7)调试程序要记录调试过程中出现的问题及解决办法; (8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (9)做完实验后给出本实验的实验报告。 二、实验仪器和设备 奔腾以上计算机,Windows 操作系统,装有JDK1.7和Eclipse软件。 三、实验过程 (1)分别使用JDK命令行和Eclipse编译运行Java应用程序。记录操作过程。 Java应用程序参考如下: 思考:1. 适当添加注释信息,通过javadoc生成注释文档; 2. 为主方法传递参数“Hello world”字符串,并输出; 3. 压缩生成".jar"文件。 (2)分别使用JDK命令行和Eclipse编译Java Applet,并建立HTML文档运行该Applet。 记录操作过程。 Java小应用程序参考如下:

JAVA编程实例大全及详解答案(50例)

JA V A编程实例大全及详解答案(50例) 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count);

java实验报告实验3答案

实验三熟悉常用java工具包并运用编程 实验目的: 本实验旨在巩固同学们对上课所讲java.util工具包中Collection,List,Set,Map加深理解,对其用法编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。 实验内容: 本实验的内容为:用Collection,List,Set,Map来存储数据,并进行排序,任何用Iterator,ListIterator或者Enumeration来打印其结果(按顺序和降序排列打印)。共分为四部分部分(前三部分必做,如果选第四个,前三个可以不做。。): (1)按顺序把1,10,5,7,6,2,9,20,14,存入到List中(注:允许自己自定义任何数),并对其进行排序,打印其升序和降序排列的结果。然后再向List中位置为第四位插入数35看看会有啥结果?再向List中插入字符串“ddy”,试猜想排序是否会出错?然后看看运行结果是啥? 程序: import java.util.*; public class SY3 { public SY3() { List list=new ArrayList(); list.add(1); list.add(10); list.add(5); list.add(7); list.add(6); list.add(2); list.add(9); list.add(20); list.add(14); list.add(35); list.add("ddy"); System.out.println("原序列:"); for(int i=0;i<=list.size()-1;i++) { System.out.println(list.get(i)); } System.out.println("新序列"); for(int i=0;i<=list.size()-1;i++) {

相关主题
文本预览
相关文档 最新文档