zoukankan      html  css  js  c++  java
  • Java SE(一)

    Java 基本概念

    1. Java 与 C++ 相比的优点

    • Java 中没有指针、结构和类型定义等概念。
    • 不再有全局变量
    • 没有 #include 和 #define 等预处理器;
    • 没有多重继承的机制。

    2. Java 的分布式与安全性

    • Java 强调网络特性,内置 TCP/IP、HTTP、FTP 协议类库,便于开发网上应用系统。
    • Java 程序在语言定义阶段、字节码检查阶段及程序执行阶段进行的三级代码安全检查机制(防止二义性),对参数类型匹配、对象访问权限、内存回收、Java 小应用程序的正确使用等都进行了严格的检查和控制,可以有效地防止非法代码的侵入,阻止对内存的越权访问,能够避免病毒的侵害。

    三级代码安全检查机制:第一级验证时在类下载完成时的,检查从哪里下载文件,是否有权限进到本机系统;然后进行第二级检查,即字节码校验,此时要分析下载的字节码是否合乎规则,否则不予执行。执行的时候,安全管理器始终检测所执行的每部操作,检查其合法性。

    3. Java 的跨平台性

    Java 编译器将 Java 程序编译成二进制代码,即字节码(bytecode)。不同的操作系统有不同的虚拟机,它类似于一个小巧而高效的 CPU。字节码就是虚拟机的机器指令,与平台无关。

    4. Java 虚拟机

    JVM 是编译后的 Java 程序 和 硬件系统 之间的接口,程序员可以把 JVM 看作是一个虚拟的处理器,它不仅可以解释执行编译后的 Java 指令,而且还进行安全检查。
    JVM 的具体实现包括 指令集(等价于 CPU 的指令集)、寄存器组、类文件格式、栈、垃圾收集堆、内存区。

    JVM内存模型见本人的另一篇博客:https://www.cnblogs.com/john1015/p/13935824.html

    5. Java 垃圾收集机制

    Java 提供了后台系统级线程,记录每次内存分配的情况,并统计每个内存指针的引用次数。在 Java 虚拟机运行时环境闲置时,垃圾收集线程将检查是否存在引用次数为 0 的内存指针,引用次数为 0 意味着没有程序在使用这块内存;如果有这样的内存,则垃圾收集线程把该内存 “标记” 为 “清除”(释放),就是要归还给系统,留给下次再分配给其他的内存申请。
    具体内容详见本人另一篇博客:https://www.cnblogs.com/john1015/p/14140973.html

    6. 代码安全

    Java 语言是解释执行的,但从某种意义来讲,Java 文件是 “编译”的,因为它也声称了中间语言形式的文件。经过“编译”的 Java 目标代码,称为字节码,存储在.class文件中。字节码是不依赖于机器硬件平台的二进制代码。
    Java 源程序(.java文件)=> Java 编译器 => Java bytecode(.class文件)=> bytecode 下载器 -->(bytecode检查)=> bytecode 解释器 => 系统执行平台

    Java 解释器工作:1.下载代码:由类下载器完成;2. 校验代码:由字节码校验器完成;3. 运行代码:由运行时解释器完成。

    字节码校验器:检测代码段的格式,并使用规则来检查非代码段。字节码校验器要对程序中的代码进行 4 趟扫描。主要检查:1.类遵从JVM的类文件格式;2.不出现访问违例的情况;3.代码不会引起运算栈溢出;4.所有运算代码的参数类型总是正确的;5.不会发生非法数据转换,如把整数转换为指针;6.对象访问是合法的。

    7. Java 的基本数据类型

    (1)布尔类型————boolean
    两种类型:true 和 false ,且内部用 8 个二进制位来表示。
    (2)字符类型————char
    一个 char 表示一个 Unicode 字符,其值用 16 位无符号整数表示,范围为 0~65535.
    (3)整型量

    整型类型 整数长度 字节数 表示范围
    byte 8位 1 -27~27-1
    short 16位 2 -215~215-1
    int 32位 4 -231~231-1
    long 64位 8 -263~263-1

    (4)整型常量的最大和最小值

    类型 最大值 最小值
    int Integer.MAX_VALUE Integer.MIN_VALUE
    long Long.MAX_VALUE Long.MIN_VALUE

    (5)浮点型————float 和 double

    浮点类型 浮点数长度 字节数
    float 32位 4
    double 64位 8

    包装类详解见本人另一篇博客:https://www.cnblogs.com/john1015/p/13870276.html

    8. OOP 的介绍

    OOP 采用了三大技术:封装、继承和多态。

    • 封装:将数据及对数据的操作捆绑在一起为类,这就是封装技术;
    • 继承:将一个已有类中的数据和方法保留,并加上自己特殊的数据和方法,从而构成一个新类;
    • 多态:在一个类或多个类中,可以让多个方法使用同一个名字,从而具有多态性。

    9. Override和Overload的区别

    Override(重写):

    1. 方法名、参数、返回值不同。
    2. 子类方法不能缩小父类方法的访问权限。
    3. 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
    4. 存在于父类和子类之间。
    5. 方法被定义为final时不能被重写。

    Overload(重载):

    1. 参数类型、个数、顺序至少一种不相同。
    2. 不能重载只有返回值不同的方法名。
    3. 存在于父类和子类、同类中。
  • 相关阅读:
    [转载]Netmsg 局域网聊天程序
    [转载] VC6 STLport5.1.4 /STLport4.6.2 编译,安装
    Project Euler Problem 17
    [转载]Singleton的一个基类实现
    [翻译]进化游戏的层次结构 用组件来重构你的游戏实体
    [转载]使用 WSAAsyncSelect 的 Winsock 编程模型
    一种简单定义FourCC常量的方法 (C/C++)
    Permissions 0755 for '/data/user/lxb/.ssh/id_rsa' are too open.
    外键约束之Mysql
    parted
  • 原文地址:https://www.cnblogs.com/john1015/p/13868288.html
Copyright © 2011-2022 走看看