• java入门


    入门

    Java一切皆对象

    • 一次编译,到处运行:

      • 一次javac 生成 二进制可执行程序
      • 通过 java 在 JVM上运行
        • image-20231007095145444
    • 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++编写的软件
          • 实现了 环境的隔离,可执行文件只在虚拟机上执行
        • image-20231007095623218
    • 规范:

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

      • 	public static void main(String[] args) {
        		for(int i=0;i
    • 1
    • 2
    • 3
    • 4
    • 5

注释

  • 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
        • 3
        • 4
        • 5
        • 6
  • 注意:

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

标识符

硬性规则

  • 标识符中可以包含:

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

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

软性建议

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

关键字

image-20231007102109349

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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

方法

image-20231009195002689

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

方法重载

  • 方法签名即:
    • 经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
      • image-20231007230753103

native

本地方法:

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

内存划分

image-20231007234321107

image-20231007234150770

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

数组

数组的存储

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

image-20231008100700459

  • 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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    基于零代码搭建你自己的设备管理系统
    在pycharm中,使用open3d得到pcd变量无法使用智能函数提示。解决方法
    海康威视嵌入式软件一面(技术面)
    7.CF438D The Child and Sequence 线段树维护区间取模
    使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
    有这些症状要考虑是湿气重的原因?
    每日五问(java)
    五、运算表达式
    C++ 环境变量 二
    【MPC】⑥ubuntu系统下C++程序调用MATLAB生成的.so动态库文件
  • 原文地址:https://blog.csdn.net/yin_ming_hui/article/details/133971744