计算机存储单元
字节:数据存储的最小单位
1byte(字节) = 8bit(位)
跨平台性
- JVM:Java虚拟机,Java代码都运行在 JVM上
- JRE:Java程序运行时的环境,包含JVM和运行时所需要的核心类库
- JDK:Java程序开发工具包,包含JRE和开发人员使用的工具
如果只需要运行一个 java程序,只需要安装JRE即可
如果需要开发一个JAVA程序,只需要安装JDK即可
环境变量配置
系统变量里新增一项,修改一项
新增
JAVA_HOME : C:\MyApp\Java\jdk1.8.0_202
修改
PATH :选项中新增两个
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
HelloWord
// 一个类
public class HelloWorld {
// 程序执行的七点
public static void main(String[] args ){
System.out.println("Hello World!");
}
}
// 编译代码,生成class文件
javac HelloWorld.java
// 运行class文件
java HelloWorld
关键字
标识符
- 程序中我们自己定义的名字,例如类的名字,方法的名字,变量的名字。。。
- 命名规则:可以包含英文字母,数字,$, _
- 命名规范:大驼峰,小驼峰
常量
- 固定不变的量
- 常量分类
- 字符串常量:双引号包含起来的字符串
- 整数常量
- 浮点数常量
- 字符常量:单引号包含起来的单个字符,例如‘a’
- 布尔常量
- 空常量,null
数据类型
- 基本数据类型:
- 整数型
- byte:1字节
- short:2字节
- int:4字节,默认
- long:8字节
- 浮点型
- float:4字节
- double:8字节,默认
- 字符型
- char:2字节
- 布尔型
- boolean:1字节
- 整数型
- 引用数据类型:字符串,数组,类,接口,Lambda
变量
- 程序运行期间可以改变的量
public class Demo{
public static void main(String[] args){
// 创建变量
int a; // 创建
a = 100; // 赋值
double b = 3.14; // 创建并赋值
System.out.println(a);
}
}
数据类型的转换
- 自动类型转换(隐式)
- 代码不需要特别处理
- 数据范围从小转到大
// 默认从int类型转换成了long类型
long num = 100;
// 默认从float类型转换成了double类型
double db = 3.14F;
// 从long转换到float
float num3 = 20L;
- 强制类型转换(显式)
- 代码需要特殊处理
// 范围小的类型 范围小的变量名 = (范围小的类型)范围大的数据
int num = (int)100L
运算符
+ ,- ,*,/,%(取余)
方法
// 定义方法
public static void demo() {
// 方法体
}
// 方法调用
demo();
选择结构
// 条件判断if else
if(true){
// a
}else{
// b
}
// switch
switch(表达式){
case 常量1:
// 语句1
break;
.
.
.
default:
break;
}
循环结构
// for 循环
for(初始表达式;条件表达式;步进表达式){
//循环体
}
// while循环
初始表达式;
while(条件表达式){
循环体;
步进表达式;
}
// do while循环
do{
// 循环体
// 步进表达式
}while(条件表达式)
break和continue
- break跳出循环体
- continue跳出本次循环
数组
- 直接打印数组会输出数组对应内存地址的哈希值
- 程序运行期间,数组长度不可以变
// 数组初始化
// 动态初始化,指定长度
int[] arr1 = new int[300]
// 静态初始化,指定内容
int[] arr2 = new int[]{1,2,3,4}
// j静态省略格式
int arr3 = {6,7,8}
// 访问数组元素
int num = arr1[0]
// 数组赋值
arr1[2] = 33;
// 获取数组长度
int len = arr1.length;
// 遍历数组
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i])
}
内存
- 栈(stack):存放方法中的局部变量,方法在栈内存中运行
- 局部变量:方法参数,或者方法体里面的变量
- 作用域:一旦超出作用域,立即会从栈内存中消失
- 堆(Heap):new出来的对象,都存放在堆内存中
- 堆内存中存放的东西,都会有一个地址值:16进制
- 堆内存中存放的数据,都有默认值,规则:
- 整数,默认为0
- 浮点数,默认0.0
- 字符,默认‘\u0000’
- 布尔,默认false
- 引用,默认null
- 方法区(Method Area):存储.class相关信息,包含 方法的信息
- 本地方法栈(Native Method Stack):与操作系统相关
- 寄存器(pc Register):与CPU相关