![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSe
文章平均质量分 93
学无止路
积极向上,坚持不懈的奋斗!
展开
-
Java的IO流
1 IO 简介1.1 什么是 IO对于任何程序设计语言而言,输入输出(Input/Output)系统都是非常核心的功能。程序 运行需要数据,数据的获取往往需要跟外部系统进行通信,外部系统可能是文件、数据库、 其他程序、网络、IO 设备等等。外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象、屏蔽外部的差异,从而实现更加便捷的编程。输入(Input)指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据)。 常见的应用:1.读取硬盘上的文件内容到程序。例如:播放器打开一个视频文件、原创 2022-03-09 13:42:29 · 1066 阅读 · 0 评论 -
智能电话本项目
1 项目介绍1.1 项目描述该项目是用于日常生活中记录联系人信息的一款智能小工具。实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删 除、排序等功能。该项目是以 Windows 控制台为运行平台,所有的操作都应在控制台 上进行。1.2 编写目的进一步理解什么是面相对象设计(OOD:Object Oriented Design)。充分理解面向对 象设计的精髓。2 项目演示双击 start.bat 可启动电话本项目,如图所示:3 技术说明3.1 业务流程结构图3.2原创 2022-03-08 16:16:11 · 439 阅读 · 0 评论 -
Java的数据结构
1 数据结构简介1.1 什么是数据结构简单地说,数据结构是以某种特定的布局方式存储数据的容器。这种“布局方式”决定了 数据结构对于某些操作是高效的,而对于其他操作则是低效的。所以我们需要理解各种数据 结构,才能在处理实际问题时选取最合适的数据结构。数据结构=逻辑结构+物理结构(顺序、链式、索引、散列) 。逻辑结构:数据元素间抽象化的相互关系 。物理结构:(存储结构),在计算机存储器中的存储形式。2 数据结构逻辑分类数据结构从逻辑上划分为三种基本类型:2.1 线性结构数据结构中的元素存在一原创 2022-03-07 16:16:10 · 14523 阅读 · 2 评论 -
Java的容器
1 容器简介容器,是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、 箱子和包等。如图所示:程序中的“容器”也有类似的功能,用来容纳和管理数据。比如,如下新闻网站的新闻 列表、教育网站的课程列表就是用“容器”来管理:视频课程信息也是使用“容器”来管理:开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。我 们一般通过“容器”来容纳和管理数据。事实上,我们前面所学的数组就是一种容器,可以 在其中放置对象或基本类型数据。数组的优势:是一种简单的线性序列原创 2022-03-04 10:38:06 · 4631 阅读 · 2 评论 -
泛型(Generics)
1 泛型1.1 泛型基本概念泛型是 JDK1.5 以后增加的,它可以帮助我们建立类型安全的集合。泛型的本质就是“数据类型的参数化”,处理的数据类型不是固定的,而是可以作为参 数传入。 我们可以把“泛型”理解为数据类型的一个占位符(类似:形式参数),即告诉编 译器,在调用泛型时必须传入实际类型。这种参数类型可以用在类、接口和方法中,分别被 称为泛型类、泛型接口、泛型方法。参数化类型,白话说就是: 1.把类型当作是参数一样传递。2.<数据类型> 只能是引用类型。1.2 泛型的好处原创 2022-02-28 10:49:32 · 603 阅读 · 0 评论 -
飞机大战的项目
1 简介和项目目标通过游戏项目学习整个 Java 基础知识体系,我们做了精心的设计,让每一章知识都能 获得应用。 比如:多线程用来实现动画效果、容器实现对于多发炮弹的存取和处理、常用类等等的应用。寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上“程 序员”。建议:很多朋友会疑惑:“游戏项目,又不能拿到企业面试中,为什么要讲?” 这是一种太过 于功利的想法。就像,我们说:“今天吃个馒头,又不是长高,为什么要吃呢?” 游戏项目 的训练,只是为了锻炼大家的基本功,并不是直接用来企原创 2022-02-25 09:44:53 · 1647 阅读 · 0 评论 -
异常与错误
1 异常机制1.1 导引问题在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输 入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对; 你要读取数据库的数据,数据可能是空的;我们的程序再运行着,但是内存或硬盘可能满了 等等。软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是: Exception,意思是例外。遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理 的处理,安全的退出,而不至于程序崩溃呢?我们本章就要讲解这原创 2022-02-24 14:08:07 · 920 阅读 · 0 评论 -
Java的常用类
1 基本数据类型的包装类我们前面学习的八种基本数据类型并不是对象,为了将基本类型数据和对象之间实现互 相转化,JDK 为每一个基本数据类型提供了相应的包装类。1.1 包装类基本知识Java 是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据 类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。 比如:将基本数据类型存储到 Object[ ]数组或集合中的操作等等。为了解决这个不足,Java 在设计类时为每个基本数据类型设计了一个对应的类进行代 表,这样八原创 2022-02-23 13:24:14 · 3140 阅读 · 0 评论 -
数组 (Array)
1 数组的概念1.1 数组的定义数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先 后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标) 来访问它们。数组的四个基本特点:1.长度是确定的。数组一旦被创建,它的大小就是不可以改变的。2.其元素的类型必须是相同类型,不允许出现混合类型。3.数组类型可以是任何数据类型,包括基本类型和引用类型。4.数组变量属于引用类型,数组也是对象。建议:数组变量属于引用类型,数组也是对象,数组中的原创 2022-02-21 11:09:27 · 3540 阅读 · 0 评论 -
面向对象 4
1 抽象类和接口原创 2022-02-18 10:42:05 · 402 阅读 · 0 评论 -
面向对象 3
本章重点针对面向对象编程的三大特征:继承、封装、多态进行详细的讲解。另外还包 括抽象类、接口、内部类等概念。很多概念对于初学者来说,更多的是先进行语法性质的了 解。不要期望,通过本章学习就“搞透面向对象编程”。本章只是面向对象编程的起点,后 面所有的章节说白了都是对面向对象这一章的应用。1 继承继承是面向对象编程的三大特征之一,它让我们更加容易实现对于已有类的扩展、更加 容易实现对于现实世界的建模。 继承有两个主要作用:1.代码复用,更加容易实现类的扩展 。2.方便建模。1.1 继承的实现继承让原创 2022-02-17 11:10:06 · 431 阅读 · 0 评论 -
面向对象2
1 面向对象的内存分析为了让大家对于面向对象编程有更深入的了解,我们要对程序的执行过程中,内存到底 发生了什么变化进行剖析,让大家做到“心中有数”,通过更加形象方式理解程序的执行方式。JAVA 虚拟机内存模型概念,如图所示:从属于线程的内存区域(栈、计数器)JVM 的内存划分中,有部分区域是线程私有的,有部分是属于整个 JVM 进程;我们将 这部分归为一类。1.程序计数器(Program Counter Register),在 JVM 规范中,每个线程都有自己的 程序计数器。这是一块比较小的内存原创 2022-02-16 11:35:32 · 627 阅读 · 0 评论 -
Java的面向对象1
1 神速熟悉面向对象1.1 表格结构和类结构我们在现实生活中,思考问题、发现问题、处理问题,往往都会用“表格”作为工具。实际上,“表格思维”就是一种典型的面向对象思维。 实际上,互联网上所有的数据本质上都是“表格”。我们在这里通过从表格表示数据开 始,引入对象和类。大家就会神奇的发现,原来“表格就是对象”。我们也经常将表中的“列”,叫做“字段”,英文中统一叫做“field”。显然,field 定义了表的结构。我们可以通过增加新的 field(列),让表中所有的行增加数据:面向对象编程中,类对应表原创 2022-02-15 09:51:43 · 420 阅读 · 0 评论 -
Java的控制语句
流程控制语句是用来控制程序中各语句执行顺序 的语句,可以把语句组合成能完成一定功能的小逻辑模块。控制语句分为三类:顺序、选择 和循环。“顺序结构”代表“先执行 a,再执行 b”的逻辑。比如,先找个女朋友,再给女朋友 打电话;先订婚,再结婚; “条件判断结构”代表“如果…,则…”的逻辑。比如,如果女朋友来电,则迅速接电 话;如果看到红灯,则停车; “循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果没打通女朋友电话, 则再继续打一次; 如果没找到喜欢的人,则再继续找。 顺序结构即按照书写顺序执行原创 2022-01-13 14:00:28 · 431 阅读 · 0 评论 -
桌球小游戏
1 项目需求:桌球在球桌中按照一定线路和角度移动,遇到边框会自动弹回。要求:即使看不太懂,也要照着敲如下游戏代码,至少 5 遍。要求所有字符和源文件一致。 如果报异常,请细心看所在行和老师代码有何区别。现阶段不需要理解代码的语法功能,只 要按照代码结构输入代码,能够经过调试实现代码的正常运行即可。 下面我们将分以下四个步骤来实现桌球游戏:第一步:创建项目和窗口。第二步:加载两个图片。第三步:实现动画,小球沿着水平方向移动并做边界检测。第四步:实现小球沿着任意角度飞行(会用到初中学习的三角函数,原创 2022-01-10 14:54:45 · 3054 阅读 · 0 评论 -
反射的详解
反射类加载概念:类是编译器编译后的产物,是硬盘中的一个.class文件,如果在一个java程序中需要使用一个类,JVM必然会从硬盘中加载(读取)该类的信息(.class)文件。类加载的时机与过程:1. 当JVM第一次使用某个类时,需要通过class_path找到该类的.class文件2. 将.class文件中描述的信息(属性、方法、构造方法、父类、接口、代码),读取到虚拟机内存中。3. 加载时会初始化静态资源(静态属性,静态方法)并执行静态初始化代码块。注意:类加载只会执行一次。反射的概原创 2021-09-18 10:36:04 · 136 阅读 · 0 评论 -
I/O流介绍
I/O概念:I(input)O(output)即输入/输出。作用:将外部的数据输入到JVM中或将JVM中的数据输出到外部。例如:System.out.println()输出,Scanner输入。1 流概念:传输数据的通道(对象)。内存:存储数据,只存储程序运行过程中需要的数据(变量,对象),这些数据是临时的,读写速度非常快,内存越大可同时运行的程序越多。硬盘:存储数据,存储需要持久保存的数据,关闭软件,关闭计算机这些数据依然存在,读写速度较慢。2 流的分类按照方向1. 输入流:将原创 2021-09-17 15:03:53 · 768 阅读 · 0 评论 -
线程的安全性
线程1 进程概念:程序是静态的形式,而进程就是程序运行时的实体状态,在CPU执行时,才被赋予生命。CPU调度进程的方式:在单核CPU下任何时间点只能有一个进程被执行,CPU将一段时间分成若干时间片,为每个进程分配时间片,获得时间片的进程才可以执行,其他进程进入等待(挂起)宏观并行,微观串行。2 线程概念:线程是轻量级的进程,一个进程中包含了若干线程,在Java中没有多进程,因为一个JVM就是一个进程,CPU调度时线程是最小的调度单位。线程的重要组成部分:1. OS(操作系统):分配时间原创 2021-09-17 10:36:06 · 358 阅读 · 0 评论 -
异常的介绍
异常概念:在程序运行过程中出现的一种意外的情况,而非编译错误。1 异常的分类比如:1. Throwable:所有异常的父类。2. Error:Throwable子类,表示错误,JVM崩溃,硬件出现问题或与操作系统相关的问题;特点:无法避免,无法处理。3. Exception:Throwable子类,表示异常,编译时异常或已检查异常。4. RuntimeException:Exception子类,表示异常,运行时异常或未检查异常。Exception所有的子类都是已检查异常,编译时异常。是原创 2021-09-16 14:33:54 · 808 阅读 · 0 评论 -
Map和Set接口
日考已知有类class Worker{ private String name; private Integer age; private Double salary; public Worker(){}; // 无参构造 public Worker(String name,Integer age, Double salary){ this.age = age; this.name = name; this.salary = salary; } // get/set略.原创 2021-09-16 10:47:53 · 87 阅读 · 0 评论 -
集合的细节
集合概念:将多个对象集中整合在一个对象中,用来存储对象的容器,与数组的作用一样,但更加便捷。位置:Java.util包中。1 Collection 接口作用:存储对象。常用方法:方法名作用add(Object obj)添加一个对象remove(Object obj)删除一个对象size()返回有效元素个数contains(Object o)判断集合中是否有与o相同的元素clear()清空集合isEmpty()判断是否为空集合原创 2021-09-15 10:24:49 · 660 阅读 · 0 评论 -
包装类与String类型
日考已知有类:class Worker{ String name; int age; double salary;}// 请提供toString与equals方法演示的代码如下:package com.txw.test;import java.util.Objects;public class Worker { String name; int age; double salary; @Override public String..原创 2021-09-14 10:00:44 · 115 阅读 · 0 评论 -
内部类与常用类
内部类在类中再定义一个类例:class OuterClass{ // 外部类 // 属性 // 方法 // 构造方法 class InnerClass{ // 内部类 }}内部类也会生成独立的.class文件命名方式为外部类$内部类.class。1 成员内部类1.1定义方式定义位置:类以内方法以外。演示的代码如下:class OuterClass{ // 外部类 class InnerClas原创 2021-09-14 09:19:51 · 1163 阅读 · 2 评论 -
接口的细节
接口概念:接口是一种特殊的抽象类,通常用于定义标准或标注额外能力。演示的代码如下:package com.txw.test;public class TestInterface{ public static void main(String[]args){ // USB 标准 对象与对象之间的一种链接方式 // TYPE-C 标准 MyClass mc; // 可以声明引用 // mc = new MyClass(); // Error 不能创建对象原创 2021-09-13 10:12:10 · 537 阅读 · 1 评论 -
三个修饰符
三个修饰符学习目标认识每种修饰符的可以修饰组件。了解每种修饰符修饰组件时的特点。概念较多,注意记录。使用修饰符可以让程序设计的更加合理,通常起到优化的作用。1 abstract概念:抽象。可以修饰的组件:类、方法。1.1 abstract修饰类概念:abstract 修饰的类称为抽象类。抽点类特点:只能声明引用不能创建对象。// 抽象类abstract class MyClass{ int a; // 属性 public void method(){} /原创 2021-09-10 14:20:20 · 579 阅读 · 0 评论 -
三大特性之多态
概念:父类引用可以存储不同的子类对象,子类对象不同呈现出不同的状态,固称为多态。在程序中的体现:// 父类引用 子类对象// 主观类型 客观类型Animal a1 = new Dog();Animal a2 = new Cat();Animal a3 = new Fish();Animal a4 = new Bird();在父类引用中存储子类对象。1 多态的特点1.1对象类型始终不变演示的代码如下:class Animal{}class Pet extends Anima.原创 2021-09-09 14:27:58 · 491 阅读 · 0 评论 -
三大特性之继承
继承作用:还原客观世界中事物与事物的一种 is a 关系。1 is a 关系即什么是一种什么,如图所示:比如:鸟 是一种 动物 , 鸟 is a 动物。香蕉 是一种 水果, 香蕉 is a 水果。机械键盘 是一种 键盘 是一种 工具 , 机械键盘 is a 键盘 is a 工具。当 is a 关系成立时,前者一定具备后者的特征与行为。2 java中的is a关系特点:1. java中 is a 关系,称之为继承,继承关系是一种类与类的is a 关系。2. 前原创 2021-09-09 09:43:54 · 1096 阅读 · 0 评论 -
面向对象编程思想
面向对象编程思想(Object Oriented Programming)面向过程编程思想面向过程核心思想:自顶向下,逐步求精。面向对象编程思想面向对象核心思想:以对象为单位,将解决客观世界问题的方式方法引入到编程领域中。面向对象编程是面向过程的一种升级。1 什么是对象?概念:由于计算机不断地发展需要计算机解决人类在现实世界中的问题,所以必须在程序中模拟出客观世界存在事物,而对象就是对事物的一种统称一句话总结:万物皆对象,一切客观存在的事物在面向对象思想中统称为对象。1.1原创 2021-09-08 14:04:28 · 5191 阅读 · 0 评论 -
数组语法细节
1 数组概念:用于存储多个相同类型的数据,与变量仅在存储数量上有区别。1.声明定义数组语法如下:// 定义一个int类型的数组 a int[] a; // 将来a数组中可以存储多个int类型的数据 // 定义一个double类型的数组 b double[] b;2.手动为数组分配空间作用:避免内存空间的浪费,根据实际需求由自己控制数组的容量。语法如下:数组名 = new 数据类型[ 长度 ];长度:是一个int类型的整数,表示数组的容量,长度是多少将在就可以在数组中存储多少原创 2021-09-07 14:20:43 · 692 阅读 · 0 评论 -
函数方法细节
使用循环让用户输入一个整数,如果输入的整数为0则跳出循环。演示的代码如下:package com.txw.test;import java.util.Scanner;public class Test { public static void main(String[]args) { Scanner sc = new Scanner(System.in); while (true){ int n = sc.nextInt();原创 2021-09-06 14:31:29 · 314 阅读 · 0 评论 -
循环语句结构
1.循环结构作用:通过某个条件,可以反复执行代码。程序的执行流程:1. 顺序执行流程:从第一行代码开始运行到最后一行代码结束,每行代码执行次数 1次。2. 条件分支流程:根据某个条件选择要执行的代码,每行代码执行次数 0~1次。3. 循环执行流程:根据某个条件反复执行代码,每行代码执行次数 0~n次。2.循环的分类2.1 while循环语法:while( 布尔表达式 ){ // [循环体]当布尔表达式为true执行,执行完毕后再次判断布尔表达式是否为true。}执行流原创 2021-09-03 10:03:55 · 1239 阅读 · 0 评论 -
分支结构语句
1.java.util.Scanner作用:可以从CMD窗口中接受一个数据自动为变量赋值,简化测试步骤。使用方法的代码如下:// java.util.Scanner 使用步骤// 1. 创建Scanner对象java.util.Scanner sc = new java.util.Scanner(System.in); // 2. 根据数据的类型 选择 不同的方法接收不同的数据// int a = sc.nextInt(); // 从控制台中接收一个int类型的数据// double原创 2021-09-02 11:30:00 · 579 阅读 · 0 评论 -
变量以及运算符
变量一、变量概念:计算机中一块内存空间,是数据的基本存储单元。变量的组成:1. 变量名:用于获取变量中存储的数据,是变量的标识符(注意语法规范)。2. 数据类型:用于约束变量所存储的数据种类。3. 数据:变量中存储的值。Java是一门强类型的语言,每种数据都有与之对应的数据类型 。2.使用变量声明定义(创建变量)语法:数据类型 变量名;为变量赋值语法:变量名 = 值; // 程序运行时将值赋值给左侧的变量,执行流程:先右后左。*注意:没有赋值的变量不能使原创 2021-09-02 09:27:47 · 966 阅读 · 0 评论 -
Hello world
1.Java概述1.1 Java语言的历史年份主要事件1990sun成立Green项目组,负责开发一款基于C++而由于C++的语言,詹姆斯·高斯林,称为Java之父1991发布Oak(橡树),Java的前身,主要作用于嵌入小型消费设备1994Internet兴起,Oak与浏览器融合,产生一种Applet技术可以在浏览器中执行Java程序19955月23日,Java语言诞生,版本代号以JDK1.0起始1998JDK1.2,Sun公司讲Java改成为Ja原创 2021-09-01 10:51:18 · 324 阅读 · 0 评论 -
网络编程
网络编程1 网络编程入门1.1软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。如图所示:B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。如图所示:两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。1.2 网络通信协议网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在原创 2020-09-11 12:49:06 · 296 阅读 · 0 评论 -
函数式接口
函数式接口1 函数式接口1.1 概念函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,Java中的Lambd原创 2020-09-11 11:25:00 · 268 阅读 · 0 评论 -
缓冲流、转换流、序列化流
缓冲流、转换流、序列化流1 缓冲流比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。原理如图所示:1.1 概述缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流: BufferedInputStream , BufferedOutputStream 。字符缓冲流: BufferedReader ,原创 2020-09-11 09:00:26 · 81 阅读 · 0 评论 -
字节流、字符流
字节流、字符流1 IO概述1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了 ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、原创 2020-09-10 09:23:10 · 276 阅读 · 0 评论 -
File类、递归
File类、递归1 File类1.1 概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。案例的代码如下:package com.txw.demo01.File;import java.io.File;/* java.io.File类 文件和目录路径名的抽象表示形式。 java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作 我们可以使用File类的方法原创 2020-09-09 08:36:35 · 73 阅读 · 0 评论 -
Stream流、方法引用
Stream流、方法引用1 Stream流说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。1.1 引言传统集合的多步遍历代码, 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。案例的代码如下:pa原创 2020-09-08 09:09:06 · 300 阅读 · 0 评论