Java新手入门小技巧

Java新手入门小技巧

----解析增删改查思维在编程实践中的使用

很久以前,就想写这篇文章的,但由于种种缘故,一直都没有,今天借这个机会,与大家交流下自己的想法,不合理之处,还望大家批评指正,共同进步。

我想,对于每一个Java程序学习者,特别是以自学为起点的人员(牛人除外),在学习的最开端,一定很是苦恼Java系统类的每一个方法,也不知自己编写程序时要实现哪一些功能。和这些人学习人员一样,最初对于这些我也毫无办法,只能先记在心里,因为自己心里总是明白一点:对于程序初学者,晕着晕着就习惯了,习惯后就知晓了,然后只是感叹原来就是那么回事。

经过自己的长期实践与总结,觉得Java编程的一个小窍门就简单的四个字--增、删、改、查。如果把Java比作一个杯子,我们可以向这个特殊的杯子里加水(增),也可以把里面的水倒出来(删),如果你愿意,你可以把里面的水换成咖啡或是其它自己喜欢的饮料(改),同样的,你完全可以去打开盖子,看看杯子装的是什么(查)。对于一个初学者来说,Java就这么简单,用这四个字指导你的学习,完全可以让你了解地更快、学习地更好、运用地更妙。现在以几个常用的例子加以说明:

在这个例子中,我们把自己编写的JavaTest类看作是上面述说的杯子,首先看编写的代码:

public class JavaTest {

public static void main(String[] args) {

//定义两个变量

int a=2;

String str="我们定义的a的值是:";

System.out.println(str+a);

//改变str的值

str="我要查看变量a的值:";

System.out.println(str+a);

//将str的值置空

str=null;

System.out.println(str+a);

}

}

在以上这段程序中,定义过程相当于在杯子里增加了两个实体,每一个输出语句就是查看的应用,语句str="我要查看变量a的值:"就是改变其值,而str=null就相当于是删除,值得注意的是,这里用的是str=null,而不是str="",后者只是将一个空串的值赋给变量str,对它的操作(如str.length)不会出现异常,前者的操作之后对str的操作(如str.length)将产生空指针异常。

接下来,我们用集合类举例说明:

首先做一个准备工作,写一个学生类Student,为方便调用,复写里面的toString方法,代码如下:

public class Student {

public String name;

public int age;

public Student(String name, int age) { //定义一个构造方法

this.name = name;

this.age = age;

}

public String toString(){ //复写toString方法

return "姓名:"+this.name+"\t年龄:"+this.age;

}

}

现在我们进行第一个操作,创建一个List集合的测试类JavaTest,其中的List接口用ArrayList类实现,通过List集合的add方法向集合里面加入三个学生实例,同时,将将集合类型转化成枚举类型以方便输出,具体程序代码如下:

import java.util.*;

public class JavaTest {

public static void main(String[] args) {

List list = new ArrayList();//用ArrayList类实现List接口

//实例化三个学生对象

Student stu1 = new Student("张三", 19);

Student stu2 = new Student("李四", 20);

Student stu3 = new Student("王五", 19);

//加入到集合中

list.add(stu1);

list.add(stu2);

list.add(stu3);

Iterator it=list.iterator(); //转化成枚举类型

while (it.hasNext()) {

//从枚举对象中取得里面的对象并输出

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

}

}

程序运行后控制台上显示:

姓名:张三 年龄:19

姓名:李四 年龄:20

姓名:王五 年龄:19

在上面程序的基础上,删除里面的元素,JavaTest的代码变为:

import java.util.*;

public class JavaTest {

public static void main(String[] args) {

List list = new ArrayList();

Student stu1 = new Student("张三", 19);

Student stu2 = new Student("李四", 20);

Student stu3 = new Student("王五", 19);

list.add(stu1);

list.add(stu2);

list.add(stu3);

Iterator it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

System.out.println("-----------从这里开始删除里面的元素-----------");

System.out.println("删除单个元素:");

list.remove(2);

it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

System.out.println("删除全部元素:");

list.removeAll(list);

it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

}

}

则看到的输出变为:

姓名:张三 年龄:19

姓名:李四 年龄:20

姓名:王五 年龄:19

-----------从这里开始删除里面的元素-----------

删除单个元素:

姓名:张三 年龄:19

姓名:李四 年龄:20

删除全部元素:

以上演示的是删除单个元素和全部元素的方法,接下来我们来看看修改的运用,把JavaTest类的改为如下代码:

import java.util.*;

public class JavaTest {

public static void main(String[] args) {

List list = new ArrayList();

Student stu1 = new Student("张三", 19);

Student stu2 = new Student("李四", 20);

Student stu3 = new Student("王五", 19);

list.add(stu1);

list.add(stu2);

list.add(stu3);

Iterator it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

System.out.println("-----------从这里开始修改里面的元素-----------");

stu1.name = "我的名字";

stu3.age = 21;

it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

}

}

可以看到运行的结果为:

姓名:张三 年龄:19

姓名:李四 年龄:20

姓名:王五 年龄:19

-----------从这里开始修改里面的元素-----------

姓名:我的名字 年龄:19

姓名:李四 年龄:20

姓名:王五 年龄:21

从运行结果我们可以清楚地看到修改的效果,现在我们来探讨查询的应用,同样地,我们只要将JavaTest的代码改变为:

import java.util.*;

public class JavaTest {

public static void main(String[] args) {

List list = new ArrayList();

Student stu1 = new Student("张三", 19);

Student stu2 = new Student("李四", 20);

Student stu3 = new Student("王五", 19);

list.add(stu1);

list.add(stu2);

list.add(stu3);

Iterator it = list.iterator();

while (it.hasNext()) {

Student myStu = (Student) it.next();

System.out.println(myStu.toString());

}

System.out.println("-----------从这里开始查询里面的元素-----------");

Student myStu = (Student)list.get(2);

System.out.println(myStu.toString());

}

}

程序的运行结果为:

姓名:张三 年龄:19

姓名:李四 年龄:20

姓名:王五 年龄:19

-----------从这里开始查询里面的元素-----------

姓名:王五 年龄:19

以上演示的是增删改查在集合类中的使用,通过具体程序的演示,相信大家对增删改查的使用已经有了一定的认识,在这里我想说,当你查看文档时,每一个Java类基本上都有这些方法,只是具体的表现形式上有所差异,也就是我们通常所说的“新瓶装旧酒”,更多的演示也就留与读者在以后我学习中自我总结。

现在有一个问题,在具体的开发中,这种思路又该怎么体现呢?在这里,我以网上书城的书目信息和会员为例与大家进行简单的探讨。

我们仔细思考下,书城对于书的管理操作无非就是将新到的书目注册编号加入到数据库中,值的注意的是有的书不只是一本,如同一网上书店里的《系统分析师考试综合知识试题分类精解》可能有多本,数据库中它们的编号是一样的,只是有一数目属性;如若某一编号书本被顾客全部购买或是因质量问题全部退回则应当从数据库中删除这本书的信息;当顾客只购买某编号书目的一部分或某一编号的书目更新打折信息时则应该修改书目在数据库中的信息,以但让顾客看到的信息是及时的、正确的;同时,顾客也可以在网上书城系统里按书名、作者、出版社、关键字信息等搜索书籍……

同样的,在网上书城的系统里,可以注册会员、会员可以修改、查询信息、注销个人信息等,管理员也可以查询、修改、删除会员信息……

对于书目信息的操作,我们用一个接口BookDao体现操作的全部方法,具体实现只要用一个实现类去实现这个接口即可,如下代码即是书目信息操作的具体体现:

package com.lch.bookShop.dao;

import java.util.List;

import com.lch.bookShop.entity.Book;

public interface BookDao {

public int addBook(Book book);// 增加书籍

public int deleteBookById(int bookId);// 按书目id删除

public int deleteBookByType(int typeId);// 按书目类型批量删除

public int modifyBookById(Book book);

// public int modifyBookByTypeId(int typeId);//按书目类型批量修改

public Book findBookById(int bookId);

public List<Book> findBookByName(String name, int page);// 按名称查询书目

public List<Book> findBookByForwardKeyword(String str, int page);// 按前方关键字一致查询书目

public List<Book> findBookByKeyword(String str, int page);// 按关键字查询书目

public List<Book> findBookByBackwardKeyword(String str, int page);// 按后方关键字一致查询书目

public List<Book> findBookByType(int typeId, int num, int page);// 按书目类型及页码批量查询书目

public List<Book> findAllBook(int page, int num);// 按页码查询全部书目

public List<Book> findBookByAttention(int page);// 按关注度查询书目 [desc]

}

通过分析,里面的操作就是增、删、改、查的体现,同样地,会员(用户)信息的接口如下:

package com.lch.bookShop.dao;

import java.util.List;

import com.lch.bookShop.entity.User;

public interface UserDao {

public int addUser(User user);

public int deleteUserByUserName(String userName);

public int modifyUserInfo(User user);

public User findUserByUserName(String userName);

public List<User> findUserByUserSex(int userSex, int page);

public List<User> findUserByUserPoint(int userPoint1, int userPoint2,int page);

public List<User> findAllUser(int page);

}

限于篇幅,这里就只讨论这些了,当然,这些也已经足够。只要大家在以后的编程学习中注重增删改查,慢慢培养这一编程思维方式,在自己编写程序时用增删改查指引自己的编程思路,将在自己的开发过程中起到不一样的效果,它会让你的思维更加地清晰,让程序的结构更加明了。

posted on 2012-03-26 11:24  追梦^_^纯  阅读(419)  评论(0编辑  收藏  举报