
Java 学习笔记
发布日期:2021-05-07 13:11:25
浏览次数:15
分类:原创文章
本文共 1784 字,大约阅读时间需要 5 分钟。
目录
Java 命令行备忘
- 启用断言:
-enableassertions
,简写-ea
数据类型
基本数据类型
抽象数据类型(ADT)
-
背包(Bag)
API:public class Bag<Item> implements Iterable<Item> Bag() 创建一个空背包 void add(Item item) 添加一个元素boolean isEmpty() 背包是否为空 int size() 背包中的元素数量
-
队列(Queue)
实现队列的最好方式是链表 -
栈(Stack)
实现栈的最好方式是也链表- 通过删除表头实现
pop()
- 通过插入表头实现
push()
- 通过删除表头实现
Java 特性
泛型
泛型类的定义例如:
public class Bag<Item> { // Defination}
需要注意的是:Java 不允许创建泛型数组,即:
a = new Item[cap]; // 错误
需要使用类型转换:
a = (Item[]) new Object[cap];
迭代
如果集合是可迭代的,那么就可以使用 for each
语句。
任何一个可迭代的集合类型都需要满足以下两点:
- 实现
iterator()
方法并返回一个Iterator
对象 Iterator
类必须包含两个方法:hasNext()
和next()
实现一个可迭代类型的步骤:
- 在声明中加入
implements Iterable<Item>
- 定义
iterator()
方法 - 定义
Iterator<item>
类,推荐使用嵌套类实现 - 在开头加入
import java.util.Iterator
自动装箱 & 自动拆箱
例如:
Stack<Integer> stack = new Stack<Integer>();stack.push(17); // 自动装箱(int -> Integer)int i = stack.pop(); // 自动拆箱(Integer -> int)
嵌套类
嵌套类可以访问包含它的类的实例变量
程序设计
契约式设计
-
异常(Exception):用于处理不受我们控制的不可预见的错误
最简单的异常RuntimeException
:throw new RuntimeException("Error message here.");
-
断言(Assertion):验证我们在代码中做出的一些假设
断言默认是关闭的,需要在命令行下启用-enableassertions
,简写为-ea
例如:// 冒号后是可选的错误信息assert index >= 0 : "Negative index in method X";
数据抽象的步骤
- 定义 API
- 根据特定的应用场景开发用例代码
- 描述一种数据结构(一组值的表示),并在 API 所对应的抽象数据类型的实现中根据它定义类的实例变量
- 描述算法(实现一组操作的方式),并根据它实现类中的实例方法
- 分析算法的性能特点
问题
- 类型转换如何检查,例如:
// 会报错:"Type safety: Unchecked cast from Object[] to Item[]"Item[] arr = (Item[]) Object[cap];
算法分析
- 获取程序运行时间可使用:
System.currentTimeMillis(); // 返回
设计算法的基本步骤
-
完整而详细地定义问题,找出解决问题所必需的基本抽象操作并定义一份 API。
-
简洁地实现一种初级算法,给出一个精心组织的开发用例并使用实际数据作为输入。
-
当
实现
所能解决的问题的最大规模达不到期望时决定改进还是放弃。 -
逐步改进
实现
,通过经验性分析或(和)数学分析验证改进后的效果。 -
用更高层次的抽象表示数据结构或算法来设计更高级的改进版本。
-
如果可能,尽量为最坏情况下的性能提供保证,但在处理普通数据时也要有良好的性能。
-
在适当的时候将更细致的深入研究留给有经验的研究者并继续解决下一个问题。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月21日 17时53分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
计算机网络子网划分错题集
2019-03-04
java一些基本程序
2019-03-04
数据结构经典十套卷之八
2019-03-04
tensorflow入门变量常量
2019-03-04
卷积神经网络六之CNN反向传播计算过程
2019-03-04
神经元与神经网络一之概述
2019-03-04
神经网络二之手写数字识别
2019-03-04
神经网络六之反向传播
2019-03-04
第五章 数字滤波器的基本结构之三
2019-03-04
FANUC机器人R-30iB_R-30iB PLUS备件规格型号统计整理
2019-03-04
FANUC机器人的镜像备份操作及U盘格式化具体步骤
2019-03-04
vue-依赖-点击复制
2019-03-04
js井子棋
2019-03-04
css取消双击选中文字
2019-03-04
LeetCode 116填充每个节点的下一个右侧结点指针
2019-03-04
2021-4-28【PTA】【L2-1 包装机 (25 分)】
2019-03-04
Arduino mega2560+MPU6050利用加速度值控制舵机
2019-03-04
pycharm+python+MS SQLSERVER 实战2、实现爬虫程序。
2019-03-04
深入理解数组指针与指针数组的区别
2019-03-04
iOS客户端与PHP服务端的简单交互
2019-03-04