API
| 快捷键 |
| ctrl + alt + m(method) 抽取方法 |
| ctrl + 鼠标左键 查看源码 |
| alt + insert 生成 equals and hashcode |
| |
| # API |
| |
| 1. API: 应用程序编程接口 |
| |
| 2. Math(应用) |
| abs/ceil/floor/round/max/min/pow/random |
| |
| 3. System(应用) |
| exit/currentTimeMillis/arraycopy |
| 1). 终止循环 |
| break; // 中止当前循环 |
| return; // 中止当前方法 |
| System.exit(0); // 0表示正常退出 中止当前所有程序 |
| System.exit(1); // 非0表示异常退出 |
| |
| 2). 获取当前时间毫秒值(时间最小单位: 毫秒) |
| long time = System.currentTimeMillis(); |
| 1秒 = 1000毫秒 |
| 时间原点: 1970年1月1日0时0分0秒 |
| 3). System.arraycopy(original, index, dest, index2, length) |
| original : 源数组 |
| index : 源数组的起始索引 |
| dest : 目标数组 |
| index2 : 目标数组的起始索引 |
| length : 复制的长度 |
| |
| |
| 🌙案例:打印10000次的耗时 |
| |
| 4. Object类中的toString方法 |
| 1). 面向对象编程(OOP:Object oriented programming) |
| 父类是所有子类的共性抽取 |
| 2). native(本地方法) |
| (1) 本地方法的方法体是用 C/C++ 写在 JVM 中 |
| (2) java中的本地方法看似没有方法体,实际上是在底层调用 C/C++ 代码 |
| (3) 编程语言发展(以牺牲效率为代价,以提高阅读性) |
| 1. 机器语言 |
| 2. 汇编语言 |
| 3. c语言 |
| 4. 面向对象语言 |
| 3). 抽象数据类型的对象 |
| Student s = new Student("张三", 18); |
| System.out.println(s); |
| |
| |
| (1) 现象: |
| 直接打印: 内存地址值 |
| (2) 源码: |
| println打印一个Object类型的对象, |
| 底层会默认先调用其toString方法转换成字符串 |
| println打印一个String类型的对象 |
| 直接打印 |
| (3)需求: |
| 打印内存地址没有意义,想要输出对象的值 |
| |
| 4). Object中的toString方法 |
| (1) Object中toString方法 |
| 获取此对象的类型 + 内存地址的哈希码值 |
| (2) 经常在开发测试时: |
| 让我们的自定义类型重写toString方法, |
| 这样此类型对象直接打印,会打印toString返回值 |
| |
| 5. Object类中的equals方法 |
| 1). object中的equals方法 |
| 底层就是==,比较的是内存地址值 |
| 2). 需求: 比较内存地址没有意义,希望比较对象属性值 |
| 3). 实现: 重写equals方法 |
| |
| ⭐基础面试题 |
| // s1保存的是字符串常量池中常量"abc"的地址 |
| String s1 = "abc"; |
| // s2保存的是堆中对象String的地址 |
| String s2 = new String("abc"); |
| String s3 = "abc"; |
| String s4 = new String("abc"); |
| System.out.println(s1==s2); // false |
| System.out.println(s1==s3); // true |
| System.out.println(s2==s4); // false |
| // 因为String重写了equals方法, |
| System.out.println(s2.equals(s1)); // true |
| |
| 6. 函数式接口: 有且仅有一个抽象方法(需要被重写)的接口 |
| 有些抽象不需要被重写 |
| equals 不需要被重写的抽象方法(接口中) |
| 接口定义的跟Object类声明一致的方法,都不需要被重写 |
| 在类继承接口中,Dog是Object的子类,从Object继承过来的equals方法,变相重写了Animal |
| |
| 7. Objects(应用) |
| toString(对象)/toString(对象, 默认字符串)/isNull(对象)/onoNull(对象) |
| |
| 8. BigDecimal |
| 1). 构造方法 |
| BigDecimal(double val) |
| BigDecimal(String val) |
| 2). 精度损失 |
| float(8字节) 指数运算 8位当底数 24位当指数 |
| 2^0=1 2^1=2 2^2=4 |
| |
| 1. 整型: 取值范围本质遍历字节所有的取值方式 |
| 2. 浮点型: 以一部分字节作为底数, 另一部分作为指数 |
| |
| 问题: |
| 1. 这样浮点型可以用少的字节数, 表示更大的数 |
| 2. 一些正常计算有可能精度丢失 |
| 3). 常用方法 |
| add/subtract/multiply/divide/divide(另一对象, 精确几位, 舍入模式) |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通