1. 程序逻辑
图 16.1 展示了程序逻辑的知识体系,包括数据类型和运算符、流程控制两部分内容。在 Java 中,提供了八种基本的数据类型,在实际应用中可以根据需要创建属于不同类型的常量和变量。在运算和赋值时,基本数据类型 (boolean 除外)之间可以进行类型转换,包括自动类型转换和强制类型转换。
Java 还提供了丰富的运算符,包括算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符等,各种运算符都有自己的优先级。可以通过自学来学习位运算符、条件运算符知识。
Java 的流程控制包含三种控制结构:选择结构、循环结构及跳转语句。选择结构的主要作用是依据判断条件的结果,执行相应的程序。循环结构的作用是在满足指定的条件时,某一代码段会重复地执行,直到指定的条件不满足时停止执行。跳转语句是一种控制程序代码执行结果的语句,使用跳转语句可以控制代码端的执行顺序,如终止循环、跳出循环等。从 JDK 5.0 开始还提供了一种新的循环语句 foreach, 可以将 foreach 语句看做增强型的 for 循环,使得对数组或集合进行遍历的时候更加方便,我们将在后面学习该语句。
图 16.1 程序逻辑知识体系
2. 数组
图 16.2 展示了 Java 中数组知识体系,包括一维数组、多维数组、 Arrays 类等内容。Java 中数组通过下标来访问和操作数组元素,如赋值、取值、获取数组长度等。理解数组的内存分配方式可以更准确地把握数组。
Java 中也提供了多维数组,其中二维数组使用得最多。需要注意的是,Java 中虽然提供了多维数组的语法,但实际上只有一维数组,没有多维数组,二维数组可以理解为数组中的每个元素又是一个数组,可以通过自学来学习这部分内容。
Java 提供的 Arrays 类定义了一系列方法,可以方便地操作数组,可以通过 Arrays.方法名()的方式直接调用,这样大大降低了操作数组的难度。
图 16.2 数组知识体系
3. Java 类
类和对象是 Java 中最重要的概念,两者是抽象和具体的关系。
类的主要成员有成员变量、成员方法、构造方法等,本书中讲解了成员变量和成员方法的内容。必须明白方法的参数传递过程,这是后续学习和开发的基础。
Java 的字符串处理类主要是 String 类和 StringBuffer 类。 String 对象的内容一旦初始化,将不能再发生改变,而 StringBuffer 类的字符串可以进行插入、连接、反转等各种操作。 StringBuiIder 是新增的字符串处理类,它与 StringBuffer 类似,不同之处在于 StringBuffer 是线程安全的,执行速度较慢,而StringBuider 是线程非安全的,执行速度较快。
图 10.3展示了初识 Java 类的知识体系,包括类和对象、成员方法、构造方法、字符串处理类等内容。其中,构造方法、方法重载的内容将在后面课程中学习。
图 16.3 初识 Java 类的知识体系
请使用 Java 语言编写代码,完成以下程序的编写。
1. 实现用户登录功能,在控制台输入用户名和密码,然后判断输入是否正确并输出结果,如图 16.4 所示。
图 16.4 简答题 1 的运行结果
提示:编写登录的方法 public boolean login(String name,String password)。
2. 在控制台输入学生姓名、年龄、性别和学校,然后模拟将该学生信息存储到数据库中,输出结果如图 16.5 所示。
图 16.5 简答题 2 的运行结果
提示:编写存储学生信息的方法 public void insertStudent(Student stu)。
3. 某公司对固定资产进行编号,规则如下:购买年份+产品类型 ( 1 为台式机,2 为笔记本,3为其他,统一采用两位数字表示,数字前加 0) + 3 位随机数,如图 16.6 所示。
图 16.6 简答题 3 的运行结果
提示:使用 String 类的方法提取字符。
4. 按照月/日/年的方法输入一个日期(如8/8/2008), 然后对字符串进行拆分,输出某天是哪年哪月哪曰(如 2008 年 8 月 8 日),如图 16.7 所示。
图 16.7 简答题 4 的运行结果
练习题代码参考
例子1代码
package cn.jbit.classandobject; import java.util.Scanner; public class Login{ /** * 判断学生登录是否成功 * @param name * @param password * @return */ public boolean login(String name,String password){ if(name.equals("wangfeng")&&password.equals("163.com")){ return true; }else return false; } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String name = input.next(); System.out.println("请输入密码:"); String password = input.next(); Login lg=new Login (); boolean flag=lg.login(name, password); if(flag){ System.out.println("登录成功!"); }else{ System.out.println("用户名或密码错误!"); } } }
例子2代码
Student类代码:
package cn.jbit.classandobject; /** * 学生类 * @author 北大青鸟 * */ public class Student { private String name; //姓名 private int age; //年龄 private String sex; //性别 private String school; //学校 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } }
测试Student类:
package cn.jbit.classandobject; import java.util.Scanner; public class StudentDao { /** * 模拟插入学生数据到数据库 * @param stu */ public void insertStudent(Student stu){ String name=stu.getName(); int age=stu.getAge(); String sex=stu.getSex(); String school=stu.getSchool(); System.out.println("\n将该学生信息成功写入到数据库"); System.out.println(name+" "+age+" "+ sex +" "+school); } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入学生姓名:"); String name = input.next(); System.out.println("请输入学生年龄:"); int age = input.nextInt(); System.out.println("请输入学生性别:"); String sex = input.next(); System.out.println("请输入学生学校:"); String school = input.next(); Student stu = new Student(); stu.setName(name); stu.setAge(age); stu.setSchool(school); stu.setSex(sex); StudentDao stuDao =new StudentDao(); stuDao.insertStudent(stu); } }
例子3代码
package cn.jbit.classandobject; import java.util.Scanner; public class GetProNo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入年份: "); int year = input.nextInt(); System.out.print("请选择产品类型(1. 台式机 2. 笔记本 3. 其他)"); int type = input.nextInt(); int random = (int)(Math.random() * 1000); //产生3位随机数 String productNo = year + "0" + type + random; //产生产品编号 System.out.println("\n该固定资产编号是: " + productNo); } }
例子4代码
package cn.jbit.classandobject; import java.util.*; public class DeDate { public static void main(String[] args) { System.out.print("请输入一个日期(月/日/年): "); Scanner input = new Scanner(System.in); String date = input.next(); int pos1 = date.indexOf("/"); int pos2 = date.lastIndexOf("/"); int length = date.length(); String month = date.substring(0, pos1); String day = date.substring((pos1 + 1), pos2); String year = date.substring((pos2 + 1), length); System.out.println("\n\n" + year + "年" + month + "月" + day + "日"); } }
package cn.jbit.classandobject;
import java.util.Scanner;
public class Login{
/**
* 判断学生登录是否成功
* @param name
* @param password
* @return
*/
public boolean login(String name,String password){
if(name.equals("wangfeng")&&password.equals("163.com")){
return true;
}else
return false;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
String password = input.next();
Login lg=new Login ();
boolean flag=lg.login(name, password);
if(flag){
System.out.println("登录成功!");
}else{
System.out.println("用户名或密码错误!");
}
}
}