java入门

文章目录

入门

Java一切皆对象

  • 一次编译,到处运行:

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

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

      	public static void main(String[] args) {
      		for(int i=0;i<args.length;i++){
      			System.out.println(args[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文件中不包含注释信息。

标识符

硬性规则

  • 标识符中可以包含:

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

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

软性建议

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

关键字

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

方法重载

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

native

本地方法:

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

内存划分

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

数组

数组的存储

  • 引用变量
    • 引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象
  • 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]
相关推荐
SteveKenny4 分钟前
Python 梯度下降法(六):Nadam Optimize
开发语言·python
Hello.Reader1 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
xrgs_shz3 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
customer085 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu5 小时前
Spring MVC消息转换器
java·spring
乔冠宇5 小时前
Java手写简单Merkle树
java·区块链·merkle树
LUCIAZZZ6 小时前
简单的SQL语句的快速复习
java·数据库·sql
来恩10036 小时前
C# 类与对象详解
开发语言·c#
komo莫莫da7 小时前
寒假刷题Day19
java·开发语言