Java基础知识巩固

1 篇文章 0 订阅
1 篇文章 0 订阅

目录

16.1 复习串讲

16.1.1 核心技能目标

16.1.2 归纳总结

16.2 知识梳理

1. 程序逻辑

2. 数组

3. Java 类


本章工作任务

  • 构建Java知识体系

本章技能目标

  • 构建程序逻辑知识体系
  • 构建数组知识体系
  • 构建类和对象知识体系
  • 构建方法调用知识体系

本章简介

我们已经完成了本课程第 1 章 ~ 第 15 章的学习,已经掌握了 Java 的基本语法,了解面向对象的基本思想,对 "对象"、""、"属性"、"方法" 等概念有了初步的认识,并掌握了 Java 中丰富的字符串处理机制,能够编写比较实用的 Java 程序。

下面,我们就对本课程第 1 章 ~ 第 15 章学到的知识和技能进行归纳总结,希望大家通过本章学习,能够熟练运用所学 Java 知识来解决实际问题。

技术内容

16.1 复习串讲

16.1.1 核心技能目标

学完本课程需要达到如下技能目标。

(1) 扎实掌握程序逻辑。

(2) 熟练使用数组存储数据。

(3) 理解类和对象的概念。

(4) 熟练定义和使用方法。

(5) 会进行常用的字符串操作。

大家可以自我检查,看是否达到了这些技能目标。如果还有疏漏和不足,就要赶快查缺补漏。

16.1.2 归纳总结

在学习过程中,归纳总结能力非常重要。为了锻炼大家在这方面的能力,本章安排了归纳、总结知识/技能点的任务。任务如下。

(1) 按照教员提供的 PPT 模板编写本课程的总结。

(2) 每个人都可能被选中上台分享自己的总结内容,要认真对待并积极准备。

16.2 知识梳理

本课程主要学习了:数据类型和运算符、流程控制、使用数组存储数据、类和对象、方法的定义和调用、字符串处理类等技能,可以借助图 16.1 ~ 图 16.3 提供的知识体系图理清这些技能的脉络。

在知识体系图中,图标</表示已经学过的知识;图标表示部分学过或者学过相关内容,但需要巩固和深化的知识;图标 f 表示需要自学或了解的知识;图标?表示将在后续章节学习的知识。

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 + "");

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值