类:英雄机:x、y、img、height、width、life飞行物:x、y、img、width、height、移动小蜜蜂:继承 extends 飞行物  速度 移动(斜着)敌机:继承 extends 飞行物   速度 移动(向下)子弹:继承 extends 飞行物   移动(向上)主类extends JPanel:主方法paint(Graphics g) 绘画一个英雄机、分数(生命值)、n个子弹、n个小蜜蜂、n个敌机g.drawString   g.drawImage流程:1.英雄机跟随鼠标移动2.自动发射子弹3.移动子弹4.敌机小蜜蜂(飞行物)移动5.自动生成敌机和小蜜蜂(飞行物)6.判断碰撞,消失判断相撞,就是判断坐标消失:子弹存在子弹数组中,飞行物存于飞行物数组中让元素从数组中移除出去缩容是移除最后一个元素,将要移除的元素和最后一个元素调换位置Arrays.copyOf(arrays, length + 1)Arrays.copyOf(arrays, length - 1)7.小蜜蜂有奖励(要么加生命值,要么加子弹)8.敌机碰撞英雄机,减生命值,判断游戏结束hero.x > fly.x - hero.widthhero.x < fly.x + fly.widthhero.y > fly.y - hero.heigthhero.y < fly.y + fly.height持续做的、周期性做的?2 3 4 5 6 8主类:属性:1.一个英雄机 2.子弹数组 3.飞行物数组静态常量:窗口的宽、高静态图片:程序开始时就加载好的绘画方法:子方法,画各种东西showMe:展示窗口主方法:游戏开始定时器----------------------------------
思考:FlyObject父类中,step方法不能确定具体的方法实现可以称这个方法为抽象的static
final
abstract:抽象的形容方法:抽象方法,没有方法体{}方法是属于类的一个功能有抽象方法的类,一定是抽象类形容类:抽象类,可以有抽象方法不能修饰属性一个子类继承抽象类,就一定要实现/重写抽象类中的所有抽象方法
抽象类不能直接new对象,但是可以有构造器,提供给子类调用(创建子类时一定会调用父类构造器)抽象类意义在于被继承类 class
接口 interface
接口的意义在于被实现,扩展类的功能
JavaSE  JavaEE
JDK中写好的java代码 -> 类/接口
Math\Scanner\System\JFrame\KeyListener学习类:创建对象(构造器)/成员变量/方法/静态方法JDK - 核心基础jar包 rt.jar - 工程字节码文件打包
API -> Application Programming Interface 应用程序接口-> 帮助文档 doc
java.lang -> 基础常用 System String Math Thread Object
java.util -> 工具类 Scanner/集合/Date/Calendar
java.text -> 格式化工具 DateFormat
java.io   -> Input Output 文件读写
java.net  -> TCP/IP网络编程 Socket URL文本编辑器
EditPlus
NotePad ++
Sublimejavac\java\javadoc -> 生成帮助文档
exe4j -> exe文件测试
1.打桩 System.out.println();
2.单元测试 JUnit - 模块测试Test类 - 模拟主方法
3.debug - 断点测试,专业的步骤分析--------------------------------Object - 所有类的基类/父类
11个方法, 构造器无String toString() - 是将对象以字符串形式输出
boolean equals(Object obj) - 判断this和obj是否相等
native int hashCode() - 生成对象的哈希值,内存中的存储位置有关默认实现使用C++底层代码, 计算方式-通过内存空间来计算,new出得对象, 物理位置都不同,因此每个new对象哈希值都不同HashSet/HashMap 会使用哈希值, hashCode() 重写的规则:和equals方法一致equals判断相等的两个对象,必须保证哈希值一样equals判断不相等的两个对象,哈希值尽量不同
Class getClass()加载 - 方法区 - 字节码对象加载的触发条件:- 类加载器 ClassLoader (反射)实例化对象 new静态方法/静态变量使用子类,父类加载Class.forName("java.lang.String") -- 手动加载指定的类String.class -> 获得类的字节码对象跟线程有关的方法:
wait()*3
notify()/notifyAll()Object clone():浅克隆-复制浅克隆:clone()      - 复制引用深克隆:对象的读写      - 复制对象要求对象是可以克隆的 Cloneable(空) 标记是可克隆的void finalize() - GC 垃圾回收内存泄漏:内存被无效对象占用GC:在程序运行时开始启动,不定时回收内存所标记的垃圾也可以手动调用GC, System.gc()没有引用的对象,会被内存标记为垃圾原则上,Java中是不存在内存泄漏的finliaze() 在对象被回收时调用的--------------------------------
String:字符串 - 【不可变的】字符序列(字符数组)equalshashCode作业:- 码云
concat
contains
endsWith
indexOf * 4
isEmpty
lastIndexOf * 4
replace
startsWith * 2
substring * 2
trimHome_Work _ day01
正则表达式 - 预习选择题:40道 - 学过的
剑指offer:3道
回顾:JavaSE API - javadoc - 文档注释/jarObject:11个 toString() equals() hashCode()wait() * 3, notify() nofityAll() - 线程clone() finalize() getClass()类加载:类的字节码信息加载到JVM的方法区中Class 类型 - 对象 - 一个String:字符串 - 字符序列不可变字符串常量池常用API:int length()char charAt(int)char[] toCharArray()正则表达式     [可以选择的选项] - 一个字符?      0或者1次*      0或者多次+     1或者多次{n}    恰好 n 次{n,}  至少 n 次{n,m} 至少 n 次,但是不超过 m 次.        任意字符\w      单词字符[a-zA-Z0-9_]\d      数字\s        空白字符:[ \t\n\x0B\f\r]splitreplaceAll可变长字符串:改变字符串,不会产生新的对象StringBuffer:所有方法synchronized(锁)安全、效率低StringBuilder:不安全、效率高包装类     基本数据类型 8种 - 包装Object引用类型    Object满足一切皆对象byte  short  int   long  float  double  char       booleanByte Short  Integer  Long  Float  Double  Character  Boolean包装类型数值不可变, 多了 null, 使用上可以无缝切换int a = 10;a = a + 10;java.lang - 基础类String StringBuilder 包装类 线程
java.util - 工具类Date、Calendar、Collection、Map
java.text - 格式化
java.io   - 文件读写
java.net  - 网络编程 TCP/IPjava.sql  - 数据库相关long -> 计时,计算效率,简单的时间计算(7天之内)Date -> 显示时间Calendar -> 时间推算,时间的跳转三种时间格式都可以互相转换作业:day02/day03  -> 码云/GitHub牛客网 - 编程题3道选择题 - 30道今晚:选择题 - 30道day02 -> Test01 ~ Test04 下周四晚上9点之前剩余内容下周六正常上课
:String - 正则表达式boolean matches(regex)String[] split(regex);String replaceAll(regex, "newStr");[0-9]\d\w - 单词字符 [0-9a-zA-Z_]\s - 空白字符.  - 所有字符次数 ? + * {1} {1,} {1,3}\\java.util.Date new Date() -> 当前系统时间new Date(long) -> long所对应的时刻的时间boolean before(Date)boolean after(Date)long getTime()void setTime(long)格式化: DateFormate SimpleDateFormatnew SimpleDateFormat("yyyy-MM-dd HH:mm:ss")String format(Date)Date parse(String)时间计算 java.util.Calendar     - 抽象类static getInstance() - 获得对象字段 Calendar.YEAR  MONTH DATE/DAY_OF_MONTH DAY_OF_WEEK获得时间点 get(字段)设置时间点    set(字段,值)推算时间点   add(字段,改变值)Date      getTime()/setTime(Date)long getTimeMillis()/setTimeMillis(long)时间格式:long Date CalendarSystem.currentTimeMillis()new Date()Calendar.getInstance()----------------------------------------------------
集合:可变长的数组
数据结构:顺序结构、链表(链式结构)1.顺序结构:按顺序排列,每个元素都是带标号除了标号是连续的,内存中的物理空间也是连续的底层使用数组实现 -> 集合功能顺序结构的集合:-> 可扩容的数组存储数据 list.add(object)获得数据删除数据修改数据优点:查询速度很快缺点:插入/删除速度很慢,需要连续的物理空间,空间使用率低2.链式结构:线性,空间不连续,没有标号,只有头节点底层实现:节点(数据+下一个节点的引用)所有节点的访问,只能从头节点开始头节点:只有next,没有数据的空链表,head.next = null单向链表:Node-next,只能从head开始往下寻找双向链表:Node-next/pre,可以从head,还可以从foot开始head:不存元素,只有nextfoot:不存元素,只有preJDK -> LinkedList循环链表:尾节点指向头节点优点:插入/删除速度快,不需要连续的物理空间,空间利用率高缺点:查询效率极低总结:顺序结构+链式结构,-> 线性结构(固定顺序)3.树状结构 -> 二叉树4.栈、队列、双端队列 -> 线性结构(顺序固定)数组 节点 方式实现5.散列表 -> 无序 -> 哈希值 hashCode()Java中的单位:类Class、接口Interface、枚举Enum、注解Annotation、数组
Java中的数据结构的实现 -> 集合 java.utilCollection(集合-I)|List(I)            Set(I)          Queue(I)|                 |                 |ArrayList(C)   SortedSet(I)      Deque(I)LinkedList(C)   |- TreeSet(C)   LinkedList(C)Vector(C)        HashSet(C)作业:1.Collection -  List - ArrayList/LinkedList迭代器跳过,自学,并且完成day042.MyArrayList/MyLinkedList 完善今晚上传:MyArrayList/MyLinkedListday04: test01~test03
回顾:Collection:toArray() toArray(new String[0])iterator() -> foreachList:ArrayList/LinkedList/Vector增删查改 和 下标/索引 有关的方法add(index, obj)remove(index)get(index)set(index, obj)LinkedList:双向链表 first last-------------------------------
Queue:队列(先进先出)  线性结构(顺序结构、链表、队列、栈)LinkedList只有顺序,没有标号线性结构:顺序结构:物理空间也是连续的,有标号的链表结构:物理空间不连续,只有头/尾节点队列结构 - 双端队列,没有标号,实现通过顺序/链表实现栈:实现通过顺序/链表实现
散列结构:不连续、没有顺序Set -> 截取 Map(映射表)HashSet -> 不允许重复,equals方法判断是否重复内存存储位置,由hashCode值决定(进行的哈希算法)HashSet存储过程:1.调用自身的hashCode()方法计算存储位置2.如果位置上没有元素,直接存入3.如果位置上有元素,再调用自身equals方法和该位置上的元素比较4.如果比较不一致,另计算位置存入(重复上面)5.如果比较一致,不存入树状结构:二叉树 排序 中序遍历,由小到大排序Set -> SortedSet -> TreeSetTree存储过程:Comparable1.和根节点比较 —- 通过compareTo方法比较2.如果比根节点大,存储在右边3.如果比根节点小,存储在左边4.如果一样大,不存入作业:1.笔记整理到CSDN2.刷题30道选择题,编程题2个 -- 周六晚检查3.day05 - 必做1~3,4、5(自学并尝试)- 周四之前

Java笔记总结(二)相关推荐

  1. Java笔记(二)(寒假)

    Java 核心技术笔记 一. 接口.继承.多态 1. 继承.Object类 2. 多态.抽象类.接口 二. 类的高级特性 三. 异常处理 四. Swing程序设计 4.1 窗体 4.2 标签和图标 4 ...

  2. 黑马程序员java笔记之二-----多线程

    java中实现多线程操作有两种手段,一种继承自Thread类,另一种是实现Runnable接口. 一.继承Thread Thread类是在java.lang包中定义的,一个类只要继承了Thread类, ...

  3. Java笔记(二十) 注解

    注解 一.内置注解 Java内置了一些常用注解: 1.@Override 该注解修饰一个方法,表示当前类重写了父类的该方法. 2.@Deprecated  该注解可以修饰类.方法.字段.参数等.表示对 ...

  4. Java笔记(二十一) 动态代理

    动态代理 一.静态代理 代理的背后一般至少有一个实际对象,代理的外部功能和实际对象一般是一样的, 用户与代理打交道,不直接接触实际对象.代理存在的价值: 1)节省成本比较高的实际对象创建开销,按需延迟 ...

  5. Java笔记(十二)——泛型

    1 泛型是什么 2 使用 Object 3 使用泛型 4 类型边界 5 通配符 5.1 通配符上界 5.2 通配符下界 5.3 泛型中的父子关系 1 泛型是什么 让一个类 / 方法,能够支持多种不同类 ...

  6. Java笔记(二)抽象类,接口,完全解耦,多重继承,内部类,静态类,匿名内部类

    抽象类 包含抽象方法的类是抽象类,如果一个类包含一个或多个抽象方法,则这个类必须定义为抽象类. 如果从一个抽象类继承,并想创建该新类的对象,就必须为基类中的所有抽象方法提供方法定义.否则导出类也是抽象 ...

  7. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  8. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

  9. java学习笔记(二十八)——开发一个小项目(VMeeting3.0)

    上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...

  10. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

最新文章

  1. c编写程序完成m名旅客和n辆汽车的同步程序代写
  2. 原生态纯JavaScript 100大技巧大收集---你值得拥有
  3. PHP不同域名cookie共享(单点登录实现原理)
  4. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
  5. PHP-代码审计-ini配置文件
  6. 為什麼system32中放的是64位dll,syswow64中放的是32位dll
  7. Selenium-基础操作
  8. python无法安装第三方库read time out_解决pip install的时候报错timed out的问题
  9. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用
  10. 2017年计算机基础知识答题宝典,最全全国计算机基础知识试题及答案考级宝典(2018)..pdf...
  11. 【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
  12. matlab 拼接矩阵,Matlab 不同行数矩阵拼接
  13. 【推荐】JSON在线格式化工具
  14. 森林门前的小路用计算机弹奏歌曲,抖音森林外的小路是什么歌 森林外的小路歌曲介绍...
  15. 360强力删除也无法删除的文件 的 终极删除方法
  16. [转载] Python 3.x | 史上最详解的 导入(import)
  17. 20190131-JS - Promise使用详解--摘抄笔记
  18. 开网店应该如何不用自己发货呢?
  19. 22. 关于定时任务指定的时间间隔内没有完成任务的处理
  20. 群晖download station中添加BT搜索引擎

热门文章

  1. ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(二)—— 序列帧动画
  2. python用渐变色画圆_画圆圈和设置渐变色
  3. 计算机辅助设计绘图员四级,计算机辅助设计绘图员-标准及考试大纲.pdf
  4. Android项目实战_手机安全卫士软件管家
  5. 游戏原画之女性角色绘画技巧-张聪-专题视频课程
  6. 阻容感基础05:电容器原理(2)-电容器参数
  7. 一起来做NES开发(1)
  8. cmake命令之foreach
  9. 【通讯原理】Ch.1:通讯原理导论
  10. Cadence Orcad Capture修改图纸大小的2种常用方法图文教程及视频演示