java三大块

  • javaSE java Standard Edition 标准版 (基础)
  • javaEE java Enterprise Edition 企业版
  • javMSE java Micro Edition 微型版

    java版本

  • 应该在生产环境使用LTS版本,例如java1.8与java11

  • JDK是一个软件,由JVMS、JLS规范约束,各vendor的JDK如下

    • Oracle JDK
    • Open JDK
    • DragonWell JDK
    • Zulu JDK
    • Adopt Open JDK

      java特点

  • 强类型、静态

  • 面向对象 一切皆是对象
  • 可移植性(跨平台性) 一次编译,到处执行
  • 简单性 继承c++的优点,去掉难理解的多继承、指针等概念
  • 编译解释性 编译程序生成字节码,而非机器码,提升执行速率
  • 稳健性 为可靠稳健而设计

    java语言编译与执行

    java基本概念 - 图1

  • java Test执行过程

    • 运行命令 java Test
    • java.exe 启动 JVM
    • JVM 启动类加载器ClassLoader
    • 类加载器在硬盘上搜索Test class文件
    • JVM把 Test class文件解释为二进制代码
    • 操作系统执行二进制代码
  • JDK、JRE、JVM 为向下包含关系
    • JVM:Java Virtual Machine Java 虚拟机
    • JRE:Java Runtime Enviroment Java 运行时环境,可独立安装,例如只需要部署无需开发的服务器上
    • JDK:Java Development Kit Java开发工具包

      注释

      ```java // 单行注释

/ 多行注释 /

/**

  • javadoc注释 */ ```

    语法

    标识符

  • 定义 在java源程序中凡是程序员自己有权利命名的单词就是标识符
  • 标识符可以标识的元素有 类名、方法名、接口名、变量名、常量名
  • 命名规则有
    • 必须是数字、字母、下划线、美元符,且不能用数字开头
    • 不可以是java关键字
    • 严格区分大小写
    • 理论上无长度限制
  • 命名规范

    • 见名知意
    • 遵守驼峰命名规范
    • 类名、接口名 首字母大写,每个单词的首字母也要大写
    • 变量名、方法名 首字母小写,之后每个单词首字母大写
    • 常量名 每个字母都大写

      关键字

  • java 中固定、保留要使用的词,不能作为标识符

    变量

    基本概念、声明与初始化

  • 程序中可能被反复访问或者需要修改的值,本质是内存中的一块空间

  • 是内存中存储数据的最基本单元,数据类型决定开辟空间的大小
  • 有数据类型、名称、字面值三部分构成
  • 字面值的数据类型必须与变量的数据类型一致
  • 变量申明后必须进行初始化,变量值可以重新赋值
  • java方法体内,语句逐行执行,访问前需要先申请

    1. public class Var01
    2. {
    3. public static void main(String[] args){
    4. int i;
    5. i = 100;
    6. System.out.println(i);
    7. // 同时声明和初始化变量
    8. int k = 19;
    9. k = 20;
    10. // 同时声明和赋值多个变量
    11. int a,b,c=2;
    12. }
    13. }

    作用域、分类

  • 变量作用域指的是变量的有效范围

  • 一般为括号范围
  • 方法体内声明的变量为局部变量(栈内存),方法体外,类体内为成员变量(堆内存)
  • 变量访问遵循就近原则
  • 成员变量声明后,jvm会提供默认初始化

    1. public class Var03
    2. {
    3. public static void main(String[] args[]){
    4. int i;
    5. i = 100;
    6. System.out.println(i);
    7. // 同时声明和初始化变量
    8. int k = 19;
    9. k = 20;
    10. // 同时声明和赋值多个变量
    11. int a,b,c=2;
    12. }
    13. }

    数据类型

    作用

  • 决定在内存中开辟空间的大小

  • 除了布尔类型,其他基本类型也对应一个包装类,有成员属性MAX_VALUE、MIN_VALUE等
  • java整数默认类型为int,若需使用long类型,需要在数字后面添加l
  • java浮点型默认类型为double,若需使用float类型,需要在后面加f,或者使用强制转换
  • 高精度数据赋值低精度数据,需要强制类型转换,低精度数据赋值高精度数据,自动转换

    分类

  • 基本类型

    • 整数型 byte short int long,分别占用 1 2 4 8 byte,包装类为 Byte Short Integer Long,默认值0
    • 浮点型 float double,分别占用 4 8byte,默认值0.0
    • 布尔型 boolean 占用1byte
    • 字符型 char 占用2byte 可表示中文
  • 引用类型

    • 类、接口、数组
    • 字符串属于
      1. public class DateType01
      2. {
      3. static float a;
      4. static double b;
      5. public static void main(String[] args){
      6. System.out.println(Integer.MAX_VAlUE);
      7. System.out.println(Integer.MIN_VAlUE);
      8. long n = 1234567890L;
      9. float k = 3.14f;
      10. float m = (float)3.14;
      11. }
      12. }

      运算符

      算数运算符

        • / %
  • ++ —

    关系运算符

  • = < <= != ==

    逻辑运算符

  • 算子为布尔类型,执行结果也为布尔类型

  • & 与 | 或 ! 非 ^ 异或
  • && 短路与 || 短路或

    赋值运算符

  • 先计算等号右边表达式的值,再赋值等号左边

    控制流

    条件控制

  • if if else

  • switch

    控制台接收数据

    1. import java.util.Scanner;
    2. public Class InputTest
    3. {
    4. public static void main(String[] args){
    5. Scanner sc = new Scanner(System.in);
    6. System.out.println("请输入年份");
    7. int year = sc.nextInt();
    8. }
    9. }