12 2023 档案
摘要:我对这一章节比较陌生,如果回答中有错误,或者您有什么不同观点,请不吝指教。 一、复习题 Q6-1 本章讨论的需要遵循达成双向通信的协议分层的首要原则是什么? A: 一、保证每一个协议层都可以进行两个对立且方向相反的工作。 二、两个站点中每一层的两个对象必须完全相同。 Q6-2 在TCP/IP协议族中
阅读全文
摘要:如果您的答案与我不同,并有个人的理解,欢迎在评论区讨论。 一、复习题 Q5-1 计算机由哪三个子系统组成? A:中央处理单元CPU,主储存器,输入/输出子系统。 Q5-2 CPU由哪几个部分组成? A:算数逻辑单元ALU,控制单元,寄存器组。 Q5-3 ALU的功能是什么? A:对数据进行逻辑、位移
阅读全文
摘要:使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。(秦疆老师:用的不多,但开源框架或者大型系统会用到。) 用户自定义异常类,只需要继承Exception类即可。 自定义异常类的步骤: 创建自定义异常类 在方法中通过throw关键字抛出异常对象 如果在当前抛
阅读全文
摘要:异常处理五个关键词:try,catch,finally,throw, throws 写一个会出错的代码: public class Test1 { public static void main(String[] args) { int a = 1; int b = 0; System.out.pr
阅读全文
摘要:实际工作中,遇到的情况不可能非常完美。比如:写好的某个模块,用户输入不一定符合要求;程序要打开某个文件,但这个文件可能不存在或者格式不对;你要读取数据库的数据,数据可能是空的;程序在跑着,内存或者硬盘满了……等等情况。 软件程序在运行过程中,这类例外情况,通称“异常”,英文:Exception,意思
阅读全文
摘要:内部类就是在一个类的内部再定义一个类。比如,在A类中定义一个B类,那么B类相对于A类来说就是内部类;相反,A类相对于B类就是外部类。 秦疆老师声明,这小节主要是长长见识,实际编程作业中不推荐下列写法。 成员内部类 //先写一个有内部类的类 public class Outer { private i
阅读全文
摘要:区别 普通类:只有具体实现。 抽象类:具体实现和规范(抽象方法)都有。 接口:只有规范,自己无法写方法。专业的约束。约束和实现分离:面向接口编程。 接口就是规范,定义的是一组规则。 OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么讨论设计模式都只针对具备抽象能力的语言(C++、Java、
阅读全文
摘要:abstract修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。 抽象方法,只有方法的声明,没有方法的实现
阅读全文
摘要:先看变量 public class Student { private static int age; //静态变量 private double score; //非静态变量 public static void main(String[] args) { System.out.println(S
阅读全文
摘要:多态即同一方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。(指向父类或者有关系的类。) //父类 public class Person { } //子类 public class Student extends Person {
阅读全文
摘要:instanceof关键字,用于判断左边的对象是否属于右边的类。 先创建4个类,父类Person,其子类Student和Teacher,测试类Application。在Application中测试instanceof语句: //父类 public class Person {} //子类 publi
阅读全文
摘要:重写都是方法的重写,和属性没有关系。 //父类写一个静态方法 public class A { public static void test() { System.out.println("A=>test()"); } } //子类也写一个静态方法 public class B extends A
阅读全文
摘要:super调用父类属性 //首先写一个父类 public class Person { protected String name = "1"; } //然后写一个子类 public class Student extends Person{ private String name = "2"; p
阅读全文
摘要:继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。 extands的意思是“扩展”。子类是父类的扩展。 Java中类只有单继承,没有多继承。 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承
阅读全文
摘要:该露的露,该藏的藏 程序设计要求“高内聚,低耦合”。高内聚就是类的内部数据数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用。 封装:数据的隐藏 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。 记住这句话就够了:属性私有,get/set。
阅读全文
摘要:65 面向对象 创建对象内存分析 先写两个类 //创建一个Pet类 package OOP.demo; public class Pet { public String name; public int age; public void shout() { System.out.println("喵
阅读全文
摘要:类中的构造器也称为构造方法,世在进行创建对象的时候必须要调用的。并且构造器有以下两个特点 必须和类的名字相同 必须没有返回类型,也不能写void 构造器必须掌握! 一个类即使什么也没写,也会存在一个方法 //写一个空的Person类 public class Person1 {} //然后在主程序调
阅读全文
摘要:类与对象的关系: 类是一种抽象的数据类型,它是对一类事物整体描述/定义,但是并不能代表某一个具体的事物。 动物、植物、手机、电脑…… Person类,Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为 对象是抽象概念的具体实例 张三就是人的一个具体实例,张三家里的旺财
阅读全文
摘要:61 面向对象 回顾方法的定义 略 62 面向对象 回顾方法的调用 对于静态方法 //先写一个静态方法 public class Student1 { public static void say() { System.out.println("学生说话了"); } } //然后在主程序中调用 pu
阅读全文
摘要:面向过程思维: 步骤清晰简单,第一步做什么,第二步做什么…… 面对过程适合处理一些较为简单的问题 面向对象思想: 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作
阅读全文
摘要:当一个数组中大部分元素都是0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方式是: 记录数组一共有几行几列,有多少个不同值 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 public class ArrayDemo1 { public static
阅读全文
摘要:总共有八大排序,其中冒泡排序无疑是较为出名的排序算法之一。 冒泡排序的代码相当简单,两层循环,外层冒泡轮数,里层依次比较。 当看到嵌套循环,应该立马意识到,这个算法的时间复杂度是\(O(n^2)\)。 冒泡排序基本步骤: 比较数组中两个相邻元素,如果第一个数比第二个数大,就交换位置。 每一次比较,产
阅读全文
摘要:数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们使用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。 查看JDK帮助文档-Class Arrays Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接
阅读全文
摘要:多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 秦疆老师表示Java中并不太使用二维以上的多维数组。 例如二维数组:int a[][] = new int[2][5],就可以看成是一个两行五列的数组 public class ArrayDemo1 {
阅读全文
摘要:一些基础用法,其中增强for循环其实就是“For-Each循环” public class ArrayDemo1 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; //打印全部的数组元素 for (int i
阅读全文
摘要:数组的四个基本特点: 其长度是确定的。数组一旦被创建,他的大小就是不可改变的。 其元素必须是相同类型,不允许出现混合类型。 数组中的元素可以是任何数据类型,包括基本类型和引用类型。 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是
阅读全文
摘要:Java内存分析: 当声明数组int[] array = null时,只在栈中存在一个名为array的数组。当创建数组array = new int[3]时,在堆中开辟了一个存在3个int数据的空间。当给元素赋值时,堆中的每一个int类型获得了一个自己的值。 “下标越界异常”报错java.lang.
阅读全文
摘要:51 什么是数组 数组是入门阶段的最后部分。 数组的定义: 数组是相同类型数据的有序集合。 数组描述的是相同类型的若干数据,按照一定的先后次序排序组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 52 数组的声明和创建 首先必须声明数组变量,才能在程序中使用数组
阅读全文
摘要:要求: 具有加、减、乘、除功能 能够循环接收新的数据 通过用户交互实现(Scanner) 思路推荐: 写4个方法:加、减、乘、除 利用循环+switch进行用户交互 传递需要操作的两个数 输出结果 疑问: 要求不太明确,“循环接收新数据”是指要求“能重复进行两个数的四则运算”,还是“实现连续四则运算
阅读全文