(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358391冷血之心的博客)

马上就要秋招了,新的一轮笔试面试马上就要开始轰炸了,在这关键的节骨眼上,要做到查缺补漏,夯实基础,特此总结~

  1. Java基础概念
    1. Java和C++的区别:
      1. 都是面向对象的语言,都支持封装、继承和多态
      2. 指针:
        1. Java不提供指针来直接访问内存,程序更加安全
      3. 继承:
        1. Java的类是单继承的,C++支持多重继承
        2. Java通过一个类实现多个接口来实现C++中的多重继承
        3. Java中类不可以多继承,但是!!!接口可以多继承
      4. 内存:
        1. Java有自动内存管理机制,不需要程序员手动释放无用内存
    2. Java中值传递和引用传递:
      1. 值传递:
        1. 对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。
      2. 引用传递:
        1. 对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到所有的对象上。
    3. 创建对象的4种方式:
      1. new语句创建对象
      2. 使用反射创建对象
      3. 调用对象的clone()方法创建对象
      4. 使用反序列化,调用java.io.ObjectInputStream对象的readObject()方法
    4. 内部类可以访问创建它的外部类对象的成员,包括私有成员
    5. JDK中常用的包:
      1. java.lang:唯一一个不需要导入就可以用的包,基础类
      2. java.io
      3. java.net
      4. java.util
      5. java.sql
    6. JDK,JRE和JVM的联系和区别:
      1. JDK:
        1. java开发工具包,是java开发环境的核心组件,并提供编译、调试和运行一个java程序所需要的所有工具,可执行文件和二进制文件,是一个平台特定的软件
      2. JRE:
        1. java运行时环境,是JVM的实施实现,提供了运行java程序的平台。JRE包含了JVM,但是不包含java编译器/调试器之类的开发工具
      3. JVM:
        1. java虚拟机,当我们运行一个程序时,JVM负责将字节码转换为特定机器代码,JVM提供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是java程序可以一次编写多处执行的原因
      4. 区别:
        1. JDK用于开发,JRE用于运行java程序
        2. JDK和JRE中都包含JVM
        3. JVM是java编程语言的核心并且具有平台独立性。
  2. 面向对象编程:
    1. 覆盖和重载
      1. 覆盖:
        1. 子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小。
        2. 被覆盖的方法不能是private的,否则只是在子类中重新定义了一个方法
      2. 重载:
        1. 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数、顺序和类型不同)
        2. 重载的三个条件:参数类型不同、参数个数不同、参数顺序不同
    2. 构造器:
      1. 构造函数不可以被继承,所以不可以覆盖,只可以重载
      2. 一个类,如果构造函数被private修饰,则为不明确的构造函数,即其不可以被子类继承(原因下边解释)
    3. java的初始化顺序:
      1. 初始化父类中的静态成员变量和静态代码块
      2. 初始化子类中的静态成员变量和静态代码块
      3. 初始化父类的普通成员变量和代码块,再执行父类的构造方法
      4. 初始化子类的普通成员变量和代码块,再执行子类的构造方法
      5. (如果父类构造函数是私有的,则不可以被执行,所以解释了为什么父类不可以被继承)
    4. equals和hashcode的关系:
      1. 当两者equals时,则hash code 值一定相同,反之不成立。
  3. 字符串:
    1. String s = new String("xyz");创建了几个字符串对象?
      1. 答:两个对象,一个是静态存储区的“xyz”,一个是用new创建在堆上的对象。
    2. String s = "Hello" ;s = s+"world";则原始的String对象中的内容到底变了没有?
      1. 没有,String是不可变类。在这段代码中,s原先指向一个String对象,内容是hello,然后我们对s进行了+操作。s指向了另外一个String对象,内容是hello world。原来的那个对象还在内存,只不过引用变量s不再指向它了。
    3. String s = “a”+"b"+"c"+"d";共创建了多少个对象?
      1. 答案:1个对象。由于编译器对字符串常量直接相加的表达式进行了优化。编译时即可去掉+号,直接将其编译成一个常量相连的结果。
  4. Java中NIO学习笔记:
    1. NIO在JDK1.4中引入,提供了高速、面向块的I/O
    2. 流与块的比较:
      1. 原来的IO和NIO的最重要区别就是数据打包和传输的方式,前者以流的方式处理数据,后者以块的方式处理数据
      2. 面向流的IO系统一次一个字节的处理数据,面向块的IO系统每一步中产生或者消费一个数据块
    3. 核心概念:
      1. 缓冲区(Buffer):发送给一个通道的所有对象都必须首先放在缓冲区中。
        1. 状态变量:
          1. 每一个读/写操作都会改变缓冲区的状态。通过记录和跟踪这些变化,缓冲区就可能够内部地管理自己的资源。
          2. position
            1. 缓冲区实际就是数组,position变量指定了下一个字节将放到数组的哪一个元素中
          3. limit
            1. 该变量表明还有多少数据需要取出或者还有多少空间可以放入数据
          4. capacity
            1. 该变量表明可以储存在缓冲区中的最大数据容量,即底层数组的大小。
        2. 访问方法:
          1. flip()方法:
            1. 当我们将缓冲中的数据输出到通道中前,要调用flip()方法,该方法的功能如下:
              1. 将limit设置为当前的position
              2. 将position设置为0
            2. clear方法:
              1. 调用缓冲区的clear()方法,以便缓冲区接收更多的字节。clear方法功能如下:
                1. 将limit设置为与capacity相同
                2. 将position设置为0
      2. 通道(Channel):从通道中读取任何数据也必须首先读取到缓冲区里。
      3. 选择器(Selector)
        1. Selector是异步I/O中的核心对象。Selector就是您注册对各种I/O事件的兴趣的地方,而且当那些事件发生时,就是这个对象告诉您所发生的事件。
        2. 创建选择器:Selector s = Selector.open()
        3. 我们将对不同的通道对象调用register()方法,以便注册我们对这些对象中发生的I/O事件的兴趣。register()的第一个参数就是这个Selector对象。
    4. NIO的大致流程:
      1. 输入文件->缓冲区->通道->缓冲区->程序处理数据->缓冲区->通道->缓冲区->输出文件
    5. NIO读取文件示例:
    6. NIO写入文件示例:


如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~

本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。


     

Java基础拾遗(一)的更多相关文章

  1. Java基础拾遗(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358523冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

  2. JAVA基础拾遗-论线程池的线程粒度划分与深浅放置

    摘要:多线程任务处理对提高性能很有帮助,在Java中提供的线程池也方便了对多线程任务的实现.使用它很简单,而如果进行了不正确的使用,那么代码将陷入一团乱麻.因此如何正确地使用它,如以下分享,这个技能你 ...

  3. [Think In Java]基础拾遗4 - 并发

    第21章节 并发 1. 定义任务 任务:任务就是一个执行线程要执行的一段代码.(在C语言中就是函数指针指向的某个地址开始的一段代码) [记忆误区]:任务不是线程,线程是用来执行任务的.即任务由线程驱动 ...

  4. [Think In Java]基础拾遗3 - 容器、I/O、NIO、序列化

    目录 第十一章 持有对象第十七章 容器深入研究第十八章 Java I/O系统 第十一章 持有对象 1. java容器概览 java容器的两种主要类型(它们之间的主要区别在于容器中每个“槽”保存的元素个 ...

  5. [Think In Java]基础拾遗2 - 多态、反射、异常、字符串

    目录 第八章 多态第十四章 类型信息第十二章 通过异常处理错误第十三章 字符串 第八章 多态 1. 前期绑定 & 后期绑定 绑定是指将方法调用同一个方法主体关联起来的这么一个过程.如果在程序执 ...

  6. [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

    目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式 ...

  7. Java基础拾遗(二) — 关于equals(),hashcode()和 ==

    这里分别讲==和equals()的关系,以及equals()和hashcode()的关系 讲解之前,需要先明白对象的内容.对象的引用,基本类型,引用类型这几个概念,此处不做解释 一.==和equals ...

  8. Java基础拾遗(一) — 忽略的 Integer 类

    学习前我们先看一个笔者之前项目踩过的坑 public static void main(String[] args) { Integer a = 127; Integer b = 127; Syste ...

  9. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

随机推荐

  1. 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码

    20145314郑凯杰 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 ①JDBC(Java DataBase Connectivity) 即java数据库连接,是一种用于 ...

  2. 20135320赵瀚青LINUX第十八章读书笔记

    概述:调试工作艰难是内核级开发区别于用户级开发的一个显著特点 18.1准备开始 内核调试往往是一个令人挠头不已的漫长过程.幸运的是,在这些费劲的问题中也有不少比较简单而且容易消灭的小bug,运气好你可 ...

  3. python-作用域和装饰器

    Python 作用域 学习的时机: 基本的数据类型 Python的运算 数字运算 + - * / // ** 逻辑运算 And or not 比较运算 > < == >= <= ...

  4. linux下挂载ISO像镜文件

    挂载命令(mount) 命令格式:mount [-t vfstype] [-o options] device dir其中:1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自 ...

  5. Covariance and Contravariance (C#)

    Covariance and Contravariance (C#) https://docs.microsoft.com/en-us/dotnet/articles/csharp/programmi ...

  6. springMVC数据回显

    1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

  7. 09_MySQL DQL_SQL99标准中的多表查询(外连接)

    # 二.外连接/* 场景:查询值在1个表中出现,在另外1个表中没有出现 特点: 0.也是两张表的字段拼接,分为主表和从表 1.外连接的结果,将显示主表中的所有记录行 如果连接字段在从表中有记录,则显示 ...

  8. Hadoop 常用指令

    1. 察看hdfs文件系统运行情况 bin/hdfs dfsadmin -report 2. 为了方便执行 HDFS 的操作指令,我们可以将需要的 Hadoop 路径写入环境变量中,便于直接执行命令. ...

  9. Android----- 改变图标原有颜色 和 搜索框

    本博客主要讲以下两点知识点 图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了. 搜索框: ...

  10. UVA-11294 Wedding (2-SAT)

    题目大意:一张长桌,n对夫妻,编号为0~n,这些人要坐在长桌两侧,每对夫妻不能坐在同一侧.其中,有2*m个人相互讨厌,编号为0的夫妻中的妻子不愿意让对面那一侧中有两个相互吵过架的人,找一种排座位方案. ...