码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Head First Java 第二版


    • 不管你的程序有多大,一定都会有一个main()来作为程序的起点。
    • Java是强类型语言。
    • float f=23.5f    如果不加上f,就会被Java当做double处理。
    • 对于任意一个Java虚拟机来说,所有的引用大小都一样,但是不同的Java虚拟机可能会以不同的方式来表示引用。因此某个Java虚拟机的引用大小可能会大于或小于另一个Java虚拟机的引用。
    • Java是通过值传递的,也就是说通过拷贝传递。方法没办法改变调用方法所传入的参数。
    • 方法可以返回会被隐含转成声明类型的其他类型值。例如说用byte当做int类型的返回。但若声明的类型容器小于想要返回的类型时,必须作明确的转换。
    • 局部变量没有默认值。实例变量有默认值,例如0/0.0/false,引用的默认值是null。
    • 虽然ArrayList只能携带对象而不是primitive主数据类型,但编译器能够自动地将primitive主数据类型包装成Object以存放到ArrayList中。
    • 程序不会因为import而变大或变小。
    • 有三种方法可以防止类被继承:(1)存取控制。非公有的类智能被同一个包的类作出子类。(2)使用final修饰符。(3)构造函数为private。
    • 方法覆盖的要求:相同的参数和返回类型。存取权限必须相同或者更为开放。
    • 方法重载的要求:参数不同。
    • 抽象的方法必须存在于抽象类中。抽象方法的意义是就算无法实现出方法的内容,但还是可以定义出一组子型共同的协议。
    • 抽象类可以带有抽象和非抽象方法。
    • 任何从ArrayList取出的东西都会被当做Object类型的引用而不管它原来是什么。比如ArrayList<动物>放进去猫、狗,取出来的只能是动物,只能执行动物有的方法,不能执行猫和狗独有的方法。
    • 接口是100%纯天然抽象类。
    • 当调用一个方法时,该方法会放在调用栈的栈顶。
    • 方法调用和局部变量在栈里;所有对象都在堆里。
    • 如果没构造函数,编辑器会自动给加一个无参构造函数;构造函数没有返回值;构造函数不会被继承。
    • 如果自己写了一个有参数的构造函数,那么一定要再写一个没有参数的构造函数。
    • 如果一个类有一个以上构造函数,则参数一定要不一样,包括的参数的顺序与类型。
    • 在创建子类对象时,构造函数在执行的时候,第一件事就是去执行它的父类的构造函数,这会连锁反应到Object这个类为止,所有父类的构造函数都会被执行。
    • 调用父类的构造函数的唯一方式是:super()。super()的调用必须是构造函数的第一个语句。
    • 如果在构造函数中调用了this(),那么this()也必须是构造函数的第一个语句。
    • 在构造函数中super()和this()不能同时出现。
    • final的变相不能改变它的值。final的方法不能被覆盖。final的类不能被继承。final的变量要在声明的时候就赋值。
    • Java中唯一有重载的运算符是“+”,例如 String a = "" + d;
    • 异常处理规则:
    • 当有catch或者finally时,必须要有try;有try的时候,必须要有catch或者finally;如果只有try和finally,则方法必须要声明异常(void go() throws Exception...)。
    • 类被序列化需要implement Serializable。最好在类里加上serialVersionUID。
    • 如果实力变量不希望被序列化,则用transient标记。例如transient String aaa;
    • 使用泛型的方式:
      1. public class ArrayList extends AbstractList...{}
      2. public void takeThing(ArrayList list),注意本行的extends后面可以接类和接口都行。
      3. public static > void sort(List list)
      •  Collection API: 
      • 对象相等 

        如果两个对象相等,则hashcode必须相等。

        如果两个对象相等,则a.equals(b),而且b.equals(a)。

        如果两个对象的hashcode值相等,但他们不一定相等。

        如果覆盖了equals(),则也要覆盖hashcode()。

        hashCode()的默认行为是对在heap上的对象产生独特的值。如果没有override过hashCode(),则该class的两个对象怎么样都不会被认为是相同的。

        equals()的默认行为是执行==,也就是说去测试两个引用是否对上heap上同一个对象。如果equals()没有被覆盖,两个对象永远都不会被视为相同。因为不同的对象有不同的字节组合。

        a.equals(b)必须与a.hashCode()==b.hashCode()等值。

        但a.hashCode()==b.hashCode()时,a.equals()不一定等值。

    • 相关阅读:
      【Python】模块与包的组织
      错题本1:为什么往div盒子模型添加不上背景颜色和背景图片?
      轻松应对80% 的工作场景?GitHub 爆赞的 Java 高并发与集合框架,面试官也拿我没辙
      大数据之数据质量检查
      如何在Linux(CentOS)中添加tree命令------包括用户不在sudoers文件中的解决方法
      计算机网络——计算机网络体系结构
      算法通关村第十八关——回溯
      【VR】Network Manager HUD
      如何把Bootstrap和JQuery在不能上网环境中生效并用Maven来管理版本?
      USB学习(3):USB描述符和USB类设备
    • 原文地址:https://blog.csdn.net/chengshiruxia/article/details/134318660
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号