Java 简介

Java 简史

计算机语言发展历史:

  1. 第一代:机器语言
  2. 第二代:汇编语言
  3. 第三代:高级语言
    1. 面向过程:C、Fortran、Pascal ···
    2. 面向对象:C++、Java、C# ···

其中,Java 是由 James Gosling 发明,美国SUN(Stanford University Network)公司推出

常见名词

  • Java 体系
    • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
    • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
    • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)

image.png

  • Java 开发环境
    • JDK(Java Development Kit ):编写Java程序的程序员使用的软件
    • JRE(Java Runtime Environment):运行Java程序的用户使用的软件
    • Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
    • SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK
    • DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
    • MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法

Java 特点

  • 跨平台(核心优势
    • 编译后的字节码文件可以在任何具有 Java 虚拟机的设备上运行
  • 简单
  • 安全
    • 取消了强大而又危险的指针
    • 提供了自动内存管理机制
  • 完全面向对象
  • 健壮

Java 跨平台

image.png

  • Java 跨平台和 C 跨平台的区别
    • Java:一次编译,处处运行
    • C:多次编译,处处运行
  • 字节码文件
    • 格式中立、平台无关的二进制文件
    • 是编译的产物、解释的原料

编译与反编译

  • 编译时空白行、注释的行会被忽略掉
  • 反编译软件:jd-gui.exe
  • 反编译得到的源代码不可能有注释

面向对象

封装性、继承性、多态性

开发环境

  • Windows
    • 环境变量
      JAVA_HOME:方便更改 JDK 路径
      PATH:Java 命令的路径
      CLASSPATH:内部类的路径
  • Linux

Hello World

  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. System.out.println("Hello World!");
  4. }
  5. }
  1. $ javac HelloWorld.java
  2. $ java HelloWorld
  3. Hello World!

Java 基础

语句和表达式

  • 语句以 ; 结尾

注释

  • 单行注释 // comment
  • 多行注释 /* comment */
  • 文档注释 /** comment */

关键字

类别 关键字
访问控制 private、protected、public
类、方法、变量的修饰符 abstract、class、extends、final、implements(声明接口)、interface(接口)、native、new、static、 strictfp、synchronized(线程,同步)、transient、volatile
程序控制 if、else、switch、case、default、for、do、while、break、continue、return、instanceof
错误处理 assert(断言)、try、catch(捕捉异常)、throw(抛出一个异常对象)、throws(声明一个可能被抛出的异常)、finally(有无异常都执行)
包相关 import(引入)、package
基本类型 byte、short、int、long、float、double、char、boolean、void
变量引用 super(父类,超类)、this(本类)
保留关键字 null、goto(不能使用)、const(不能使用)
  • 关键字都是小写的
  • jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,jdk1.5多了enum(枚举) 关键字
  • true、false、null 严格说不应该算关键字,应称其为保留字更合适

标识符

  • 字母下划线 _美元符 $ 打头
  • Unicode 字符集 组成
  • 字母大小写敏感
  • 不能使用 关键字

Java 命名规范:

  • 变量名、方法名:小驼峰命名法
  • 类名:大驼峰命名法
  • 常量名:字母全部大写,单词间用 _ 连接
  • 包名:字母全部小写

变量类型

  • 基本数据类型(8种)
    数值型(整型、浮点型)、字符型、布尔型 | 类型 | 长度 | 范围 | | —- | —- | —- | | byte | 1 Byte = 8 bit | - 128 ~ 127 | | short | 2 Byte = 16 bit | - 32768 ~ 32767 | | int | 4 Byte = 32 bit | - 2^31 ~ 2^31 - 1 | | long | 8 Byte = 64 bit | - 2^63 ~ 2^63 - 1 | | float | 4 Byte = 32 bit | | | double | 8 Byte = 64 bit | | | char | 2 Byte | | | boolean | 1 Byte | truefalse |
  • 引用数据类型
    • 接口
    • 数组

常量

  • final 修饰
  • 常量名通常全部大写
  • 默认整型常量为 int 型,long 型常量要加上 L 或 l
    默认浮点型常量为 double 型,float 型常量要加上 F 或 f
  • 整型常量八进制0 开头,十六进制0x 开头
  • 字母、数字占 1 Byte,汉字占 2 Byte
  • 常用的转义字符
    1. "\b" (退格)
    2. "\f" (换页)
    3. "\n" (换行)
    4. "\r" (回车)
    5. "\t" (水平制表符(到下一个tab位置))
    6. "\'" (单引号)
    7. "\"" (双引号)
    8. "\\" (反斜杠)

修饰符

  • 访问修饰符 | 修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 | | :—-: | :—-: | :—-: | :—-: | :—-: | :—-: | | public | √ | √ | √ | √ | √ | | protected | √ | √ | √ | ? | × | | default | √ | √ | √ | × | × | | private | √ | × | × | × | × |
  • 非访问修饰符

运算符

  • 算术运算符:+ - * / %
  • 赋值运算符:= += -= *= /= %=
  • 递增递减运算符:++ --
  • 比较运算符:== != > < >= <=
  • 逻辑运算符:AND(短路 &&、非短路 &)OR(短路 ||、非短路 |)XOR(^)NOT(!

运算优先级:递增递减 > 算术运算 > 比较运算 > 逻辑运算 > 赋值运算

运算符优先级(从高到低)
. () []
++ -- ! ~ instanceof
new
* / % + -
> < >= <= == !=
& ^ ` ` && ` `
?:
= += -= *= /= %=

分支结构

循环结构

数组

Java 面向对象