目录
1. 常量概述
1.固定的值,都可以算作常量。
如1,‘a’,3.14,true,可以认为基本类型的值均为常量;
2.自己定义的常量。
自己创建空间,存储一个值,让他固定起来,
如 后面学到的 final int a=11;
3.特殊的常量。
String str="abc";
String是一个类,属于引用数据类型,创建字符串变量后,值不能修改,可以当作常量来使用;
2. 常量使用
1.参与过程运算。
作为固定的值,参与过程运算,使过程更加简便,如Π=3,14;
2.代表特殊的含义。
如在制作小游戏的过程中,1,2,3,4可用来对应up,down,right,left
3. 变量概述
变量是指在程序执行过程中可以改变的量;
变量空间里的内容可以改变;
变量只能存储一个值;
变量是一个内存空间(类似小容器);
4. 声明变量
数据类型+变量名
如 int a(告诉计算机,我要开辟一个空间 a,存储 一个 整数);
5.变量命名简单回顾:
变量名可由数字,字母,下划线,美元符($)组成;
数字不能当作命名的开头;严格区分大小写;
6. 区分变量名/类名
举一个例子就很好解释了.
例如: 类名: Test PracticeEnglish
变量名: super superMan
7. 底层实现
我们提出以下问题:计算机底层做了哪些事情?
a 是什么?a 是变量名,存储在哪儿?
1 是什么?1 是常量,存储在哪儿?
= 是什么:
7.1 计算机硬件
主板,cpu, 显卡,网卡,声卡,电池,硬盘,内存:
7.2 硬盘,内存
举例:
public class practice{
public static void main(String [] args){
int a;
a=1;
}
}
硬盘存储:
硬盘会存储“.java”的源文件和“.class”的字节码文件。
首先根据 javac practice.java 指令,Java编译器在硬盘中将源文件编译为字节码文件,
JVM开辟内存条
接着,JVM会在内存中开辟部分空间用于运行;
执行字节码文件
由类加载器(ClassLeader)将字节码文件信息搬运到JVM开辟的内存中;
之后,在栈内存中执行,根据 先进后出 原则,
public static void main(String [] args):main 方法先入栈,(最后出栈)
int a:开辟空间 a,存储 int 类型整数(前面说变量类似于一个容器);
将常量 1 存储在常量池中(转化为二进制存储,由于是 int 型,共有 32 bit ),再复制到栈内存中;
8. 数据类型的默认值
double:8个字节,浮点型默认为double型,因其精度较高,被广泛使用;
float:4个字节 int :4个字节 byte:1个字节
为什么同样是字节数多的转向字节数少的,int 可以转向 byte ,double 却不可以转向 float ?
8.1 整数二进制存储
前面说过,这些常量存储在栈内存的方法区,而且是以计算机能看懂的二进制形式存储的,
如 1: 0 0000000 00000000 00000000 00000001(int,32bit);
存储在byte类型的空间内,只能舍去前面的 0 0000001(byte,8bit),而如果超过byte的范围,即前面舍去的部分不均为零,不可以自动转换;
8.2 小数二进制存储
而浮点型3.14二进制存储形式:
0 000000000 0000000...(第一位表示符号(正或负),第二到十位表示整数部分,其余均表示小数部分),不同于整数的二进制表示方式;