11 2022 档案
摘要:抽象类 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。 抽象方法,只有方法的声明,没有方法的实
阅读全文
摘要:static关键词详解 package com.oop.demo07; //static public class Student { private static int age;//静态变量 private double score;//非静态变量 public void run(){ //go
阅读全文
摘要:instanceof package com.oop.demo06; public class Person { } // package com.oop.demo06; public class Teacher extends Person { } // package com.oop.demo0
阅读全文
摘要:多态 即同一方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多 (父类,有关系的类) 多态存在的条件 有继承关系 子类重写父类方法 父类引用指向子类对象 注意: 多态是方法的多态,属性没有多态性。 instanceof 类型转换(引用类
阅读全文
摘要:方法重写 重写:需要有继承关系,子类重写父类的方法! 1.方法名必须相同 2.参数列表必须相同 3.修饰符:范围可以扩大但不能缩小! public > protected > default > private 4.抛出的异常:范围,可以缩小,但不能扩大 ClassNotFoundException
阅读全文
摘要:Super详解 super注意点: 1.super调用父类的构造方法,必须在构造方法的第一个! 2.super必须只能出现在子类的方法或者构造方法中! 3.super和this不能同时调用构造方法! vs. this: 代表的对象不同: this: 本身调用者这个对象 super: 代表父类对象的引
阅读全文
摘要:继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。 extends的意思是“扩展”。子类是父类的扩展。 JAVA中 类 只有单继承,没有多继承! 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。 继承关系的两个类,一个为子类(派生类).一个为父类(基类)
阅读全文
摘要:封装 该露的露,该藏的藏 我们程序设计要追求**“高内聚,低耦合”**。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏) 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。 记住这句话就够了: 属性私
阅读全文
摘要:类与对象小结 /* 1.类与对象 类是一个模板:抽象;对象是一个具体的实例 2.方法 定义、调用 3.对象的引用 引用类型; 基本类型(8个) 对象是通过引用来操作的 : 栈 >堆 4.属性:字段Field (成员变量) 默认初始化: 数字: 0 0.0 char: u0000; boolean:
阅读全文
摘要:创建对象内存分析 package com.oop.demo03; public class Pet { public String name; public int age; public void shout(){ System.out.println("叫了一声"); } } package c
阅读全文
摘要:类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物. 动物、植物、手机、电脑.... Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为 对象是抽象概念的具体实例 张三就是人的一个具体实例,张三家里的
阅读全文
摘要:回顾方法 方法的定义 修饰符 返回类型 break和return的区别 break : 跳出switch ;结束循环 return:结束方法,返回一个结果 方法名:注意规范;见名知意 参数列表: (参数类型 参数名) 在指定参数类型后加一个省略号(...) : 可变参数 ,如:(double ...
阅读全文
摘要:面向过程 & 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么..... 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的
阅读全文
摘要:稀疏数组 需求: 编写五子棋游戏中,有存盘退出和续上盘的功能。 分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。 解决:稀疏数组(一种数据结构) 稀疏数组介绍 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理方式是: 记录数组一
阅读全文
摘要:冒泡排序 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。 思考:如何优化? package com.wang.array; import
阅读全文
摘要:Arrays类 数组的工具类 java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。 查看JDK帮助文档 Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类
阅读全文
摘要:多维数组 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 二维数组 int a[][] = new int[2][5]; 解析:以上二维数组a可以看成一个两行五列的数组。 思考:多维数组的使用? package com.wang.array; pub
阅读全文
摘要:数组的使用 普通的For循环 For-Each循环 数组作方法入参 数组作返回值 package com.wang.array; public class ArrayDemo03 { public static void main(String[] args) { int[] arrays = {1
阅读全文
摘要:数组边界 下标的合法区间:[0, length-1],如果越界就会报错; public static void main(String[ ] args) { int[ ] a=new int[2]; system.out.println(a[2]); } //Error : ArraylndexOu
阅读全文
摘要:内存分析 Java内存分析: 数组的3种初始化 静态初始化 int[] a = {1,2,3}; Man[ ] mans = {new Man(1,1) ,new Man(2,2)}; 动态初始化 int[] a = new int[2]; a[0]=1; a[1]=2; 数组的默认初始化 数组是引
阅读全文
摘要:数组的声明创建 数组的声明创建 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[ ] arrayRefVar; //首选的方法 或 dataType arrayRefVar[]; //效果相同,但不是首选方法 Java语言使用new操作符来创建数组,语法如下
阅读全文
摘要:数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.
阅读全文
摘要:递归 A方法调用B方法,我们很容易理解! 递归就是:A方法调用A方法!就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递
阅读全文
摘要:可变参数 JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。 在方法声明中,在指定参数类型后加一个省略号(...)。 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它 之前声明。 public static void printMax( double
阅读全文