一、java语言特点
-
面向对象;
-
跨平台(可移植性): 系统上安装对应版本的Java虚拟机,使得开发人员能够以一种统一的方式开发和部署应用程序,不需要为每个平台单独进行开发和调试;
-
编译和解释并存: Java源代码经过编译后,变成一种名为字节码(bytecode)的中间形式,而不是直接编译成机器码。Java虚拟机(JVM)将字节码转换为特定平台的机器码,从而使得Java程序可以在各种操作系统和硬件平台上运行。
二、JDK
-
Java Development kit :Java开发工具包;
-
JDK包括: JVM 、核心类库 、开发工具;
-
编写代码就需要 JDK
2.1 JVM
-
Java Virtual Machie : Java虚拟机,真正运行Java程序的地方;
2.2 开发工具
-
javac 编译工具 生成 .class 文件;
-
java运行工具:运行代码;
-
jdb 调试工具;
-
jhat 内存分析工具;
......
-
三、JRE
-
Java Runtime Environment :Java的运行环境;
-
JRE 包括:JVM、核心类库、运行工具;
-
运行环境只需要相应的运行工具,调试等工具不需要包含在JRE中;
四、JDK 、JRE 、JVM 三者包含关系
-
JDK 包含 JRE
-
JRE 包含 JVM
五、Java代码结构
// package 类所在的包(文件夹),位置:必须是java文件中的第一有效代码行 package com.lanou; public class Main { // 类全名 : com.lanou.Main public static void main(String[] args) { } }
六、注释
-
单行注释:
// 单行注释
-
多行注释:
/* 多行注释 */
-
文档注释:
/** 文档注释 */
七、标识符命名规则与规范
1.命名规则:
-
标识符可以由数字、字母、下划线、
$
符号组成; -
必须以字母、下划线、
$
开头,不能以数字开头; -
标识符区分大小写;
-
不能使用Java关键字;
2.命名规范:
-
包名:全部小写,使用逆域名命名规则 :例
com.baidu
-
文件名、类名、接口名命名规范:首字母大写、大驼峰命名法;
-
方法名、变量命名规范:首字母小写、小驼峰命名法;
-
常量命名规范:全部大写,单词间用下划线分隔;
-
命名时尽量不使用
_ $ 数字
八、java基本数据类型
数据类型 | 关键字 | 取值范围 | 内存占用(字节) |
---|---|---|---|
整数 | byte | -128 ~ 127 | 1 |
short | -32768~37767 | 2 | |
int | -2^31 ~ (2^31)-1 --> 2147483647 [10位数] | 4 | |
long | -2^63 ~ (2^63)-1 [19位数] | 8 | |
浮点数 | float | -3.4028235 x 10^38 ~ 3.4028235 x 10^38 [ 6~7位有效 ] | 4 |
double | -1.7976931348623157 x 10^308 ~ 1.7976931348623157 x 10^308 [ 有效位数为 15 位 ] | 8 | |
字符 | char | 0 ~ 65535 | 2 |
布尔 | boolean | true 或 false | 1 |
九、类型转换
自动类型转换:小类型转大类型:
-
两种类型要兼容:数值类型(整型和浮点型)互相兼容;
-
目标类型大于源类型;
int a=5; double b =6.21; double c =a+b; // c = 11.21
强制类型转换:大类型转小类型:
// 语法 (数据类型)表达式 int a=5; double b =6.21; int c =(int)(a+b); // c = 11
自动类型转换不会导致结果精度缺失,而强制类型转换会导致结果精度缺失。
java存储模块
Java启动时会从操作系统获取到一块内存,jvm再根据代码分配内存;
存储模块 | 作用 |
---|---|
程序计数器 | 记录java字节码运行到哪一行 |
本地方法栈 | 存放native方法运行的过程,调用c/c++实现的功能,实现jvm的某些功能 |
虚拟机栈 | 存放java方法运行的过程 |
以上三块数据区域独占(线程独占) | |
堆 | |
方法区(1.8以后元数据区) | 存放字节码文件中方法的执行流程 |
共享数据区域 |