Java 总结

简介: Java 总结

1. 程序逻辑

图 16.1 展示了程序逻辑的知识体系,包括数据类型和运算符、流程控制两部分内容。在 Java 中,提供了八种基本的数据类型,在实际应用中可以根据需要创建属于不同类型的常量和变量。在运算和赋值时,基本数据类型 (boolean 除外)之间可以进行类型转换,包括自动类型转换和强制类型转换。


Java 还提供了丰富的运算符,包括算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符等,各种运算符都有自己的优先级。可以通过自学来学习位运算符、条件运算符知识。



Java 的流程控制包含三种控制结构:选择结构、循环结构及跳转语句。选择结构的主要作用是依据判断条件的结果,执行相应的程序。循环结构的作用是在满足指定的条件时,某一代码段会重复地执行,直到指定的条件不满足时停止执行。跳转语句是一种控制程序代码执行结果的语句,使用跳转语句可以控制代码端的执行顺序,如终止循环、跳出循环等。从 JDK 5.0 开始还提供了一种新的循环语句 foreach, 可以将 foreach 语句看做增强型的 for 循环,使得对数组或集合进行遍历的时候更加方便,我们将在后面学习该语句。


fea98b922fdf4d7982e295713bcc0953.png


82a09c04bed64ab0a84a5cd1a906f10c.png


图 16.1 程序逻辑知识体系


2. 数组

图 16.2 展示了  Java 中数组知识体系,包括一维数组、多维数组、 Arrays 类等内容。Java 中数组通过下标来访问和操作数组元素,如赋值、取值、获取数组长度等。理解数组的内存分配方式可以更准确地把握数组。


Java 中也提供了多维数组,其中二维数组使用得最多。需要注意的是,Java 中虽然提供了多维数组的语法,但实际上只有一维数组,没有多维数组,二维数组可以理解为数组中的每个元素又是一个数组,可以通过自学来学习这部分内容。



Java 提供的 Arrays 类定义了一系列方法,可以方便地操作数组,可以通过 Arrays.方法名()的方式直接调用,这样大大降低了操作数组的难度。

2f7797bad746451b823a6bfbcc5f4d45.png

图 16.2 数组知识体系


3. Java 类

类和对象是 Java 中最重要的概念,两者是抽象和具体的关系。


类的主要成员有成员变量、成员方法、构造方法等,本书中讲解了成员变量和成员方法的内容。必须明白方法的参数传递过程,这是后续学习和开发的基础。


Java 的字符串处理类主要是 String 类和 StringBuffer 类。 String 对象的内容一旦初始化,将不能再发生改变,而 StringBuffer 类的字符串可以进行插入、连接、反转等各种操作。 StringBuiIder 是新增的字符串处理类,它与 StringBuffer 类似,不同之处在于 StringBuffer 是线程安全的,执行速度较慢,而StringBuider 是线程非安全的,执行速度较快。



图 10.3展示了初识 Java 类的知识体系,包括类和对象、成员方法、构造方法、字符串处理类等内容。其中,构造方法、方法重载的内容将在后面课程中学习。


01f10678cd5647d6abc7c870ce2bbbdd.png


图 16.3 初识 Java 类的知识体系


请使用 Java 语言编写代码,完成以下程序的编写。

f02aefc0068f48b7bc9eb5ff87817e8d.png


1. 实现用户登录功能,在控制台输入用户名和密码,然后判断输入是否正确并输出结果,如图 16.4 所示。


图 16.4 简答题 1 的运行结果


提示:编写登录的方法 public boolean login(String name,String password)。

ed68727f4b39438b8c898eb02899f371.png


2. 在控制台输入学生姓名、年龄、性别和学校,然后模拟将该学生信息存储到数据库中,输出结果如图 16.5 所示。


图 16.5 简答题 2 的运行结果


提示:编写存储学生信息的方法  public void insertStudent(Student stu)。

7da43946e02940f5a2629973c7cce459.png


3. 某公司对固定资产进行编号,规则如下:购买年份+产品类型 ( 1 为台式机,2 为笔记本,3为其他,统一采用两位数字表示,数字前加 0) + 3 位随机数,如图 16.6 所示。


图 16.6 简答题 3 的运行结果


提示:使用 String 类的方法提取字符。

aeebe7659742438b8ef680e385ccb929.png


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("用户名或密码错误!");

       }

   }

}

目录
相关文章
|
小程序 Java 大数据
初识Java篇
初识Java篇
78 0
|
Java 测试技术
103.【Java Microbenchmark Harness】(一)
103.【Java Microbenchmark Harness】
75 0
ly~
|
3月前
|
分布式计算 Java 大数据
什么是“Java”
Java 是一种广泛应用的高级编程语言,以其简单性、面向对象、分布式、健壮性、安全性、平台独立性与可移植性、多线程、动态性著称。Java 主要应用于企业级信息系统(如 CRM 和 ERP)、安卓应用、大数据处理(如 Hadoop 和 Spark)及 Web 开发等领域。其运行机制包括两个阶段:首先是将源代码编译为字节码,然后字节码在 Java 虚拟机(JVM)上运行,通过解释执行或即时编译提高运行效率,实现跨平台特性。
ly~
90 9
|
存储 Java 数据安全/隐私保护
Java 知识总结
Java 知识总结
57 0
Java 知识总结
|
缓存 负载均衡 Java
JAVA问答5
JAVA问答5
114 0
|
Java
Java常见的坑(二)
你猜上述程序输出的是什么? 是 ABC easy as 123 吗? 你执行了输出操作,你才发现输出的是 ABC easy as [C@6e8cf4c6 ,这么一串丑陋的数字是什么鬼? 实际上我们知道字符串与任何数值的相加都会变为字符串,上述事例也不例外, numbers输出其实实际上是调用了Object.toString()方法,让numbers转变为'[c' + '@' + 无符号的十六进制数。
73 0
|
Java 程序员 C++
|
算法 Java Linux
Java ConcurrentSkipListMap 实现
本文目前只是简单地介绍了 Java 并发容器中 ConcurrentSkipListMap 的实现方式,后续会考虑拓展本文,从源码的角度进行详细的分析。
Java ConcurrentSkipListMap 实现
|
存储 安全 算法
一篇文章让你真正了解Java
“你学习一门技术的最佳时机是三年前,其次是现在。”这句话对于哪一种行业都很适用,如果你已经学习过Java,那么恭喜你你很有先见之明,如果你并不了解Java,这篇文章带你快速掌握Java的几个核心知识点。
|
Java
Java的nanoTime()
java有两个获取和时间相关的秒数方法,一个是广泛使用的 System.currentTimeMillis()   返回的是从一个长整型结果,表示毫秒。 另一个是 System.nanoTime()   返回的是纳秒。
1791 0