文章目录
入门
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++编写的软件
- 实现了 环境的隔离,可执行文件只在虚拟机上执行
- 由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
-
-
-
注意:
- 多行注释不能嵌套使用
- 不论是单行还是多行注释,都不参与编译,即编译之后生成的.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;
}
}
方法
- 修饰符:现阶段直接使用public static 固定搭配
- 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
- 方法名字:采用小驼峰命名
- 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
- 方法体:方法内部要执行的语句
- 在java当中,方法必须写在类当中
- 在java当中,方法不能嵌套定义
- 在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]