java入门

文章目录

  • 入门
    • 注释
    • 标识符
    • 关键字
    • goto语句
    • 方法
      • 方法重载
      • native
    • 内存划分
    • 数组
      • 数组的存储
      • 数组的初始化

入门

Java一切皆对象

  • 一次编译,到处运行:

    • 一次javac 生成 二进制可执行程序
    • 通过 java 在 JVM上运行
      • java入门_第1张图片
  • JDK、JRE、JVM之间的关系?

    • JDK(Java Development Kit):Java开发工具包
    • 提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
    • JRE(Java Runtime Environment):Java运行时环境
      • 包含了JVM,Java基础类库。
      • 是使用Java语言编写程序运行的所需环境。
    • JVM:Java虚拟机,运行Java代码
      • 由C/C++编写的软件
        • 实现了 环境的隔离,可执行文件只在虚拟机上执行
      • java入门_第2张图片
  • 规范:

    • 类名与文件名要一致
    • 类名是大驼峰
  • 运行传入参数

    • 	public static void main(String[] args) {
      		for(int i=0;i

注释

  • ava中的注释主要分为以下三种

    • 单行注释:// 注释内容(用的最多)

    • 多行注释:/* 注释内容*/(不推荐)

    • 文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用)

      • 可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档

      • // 在cmd中,使用javadoc工具从Java源码中抽离出注释
        // -d 创建目录 myHello为目录名
        // -author 显示作者
        // -version 显示版本号
        // -encoding UTF-8 -charset UTF-8 字符集修改为UTF-8
        javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java
        
  • 注意:

    1. 多行注释不能嵌套使用
    2. 不论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息。

标识符

硬性规则

  • 标识符中可以包含:

    • 字母、数字以及 下划线和 $ 符号等等。
  • 注意:

    • 标识符不能以数字开头,也不能是关键字,且严格区分大小写。

软性建议

  • 类名:每个单词的首字母大写(大驼峰)
  • 方法名:首字母小写后面每个单词的首字母大写(小驼峰)
  • 变量名:与方法名规则相同

关键字

java入门_第3张图片

goto语句

label1:
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        System.out.println(i+" "+j);
        if(j ==2)
            continue label1;
    }
}

方法

java入门_第4张图片

  1. 修饰符:现阶段直接使用public static 固定搭配
  2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
  3. 方法名字:采用小驼峰命名
  4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
  5. 方法体:方法内部要执行的语句
  6. 在java当中,方法必须写在类当中
  7. 在java当中,方法不能嵌套定义
  8. 在java当中,没有方法声明一说

方法重载

  • 方法签名即:
    • 经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
      • java入门_第5张图片

native

本地方法:

底层使用C/C++实现的

内存划分

java入门_第6张图片

java入门_第7张图片

  • 程序计数器 (PC Register):
    • 只是一个很小的空间, 保存下一条执行的指令的地址
  • 虚拟机栈(JVM Stack):
    • 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧
      • 栈帧中包含有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息
      • 保存的都是与方法执行时相关的一些信息。
    • 比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了
  • 本地方法栈(Native Method Stack):
    • 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量.
    • 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的
  • 堆**(Heap)**:
    • JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存
    • 堆是随着程序开始运行时而创建,随着程序的退出而销毁
      • 堆中的数据只要还有在使用,就不会被销毁。
  • 方法区**(Method Area)**:
    • 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据.
    • 方法编译出的的字节码就是保存在这个区域
    • 方法区在堆上

数组

数组的存储

  • 引用变量
    • 引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象

java入门_第8张图片

  • null
    • 初始化为 null, 不指向任何对象
    • 注意: Java 中并没有约定 null 和 0 号地址的内存有任何关联

数组的初始化

可以省略 列,不能省略行:

  • int[][] arr2 = new int [2][];
    System.out.println(arr2[0]); //null
    arr2[0] = new int[5];
    arr2[1] = new int[1];
    System.out.println(Arrays.toString(arr2[0])); //[0, 0, 0, 0, 0]
    

你可能感兴趣的:(Java,java,开发语言)