# 常量
常量代表程序运行过程中,不能再次改变的值 。
# 常量的作用
- 固定的值 代表计算过程中经常用到的值
便于程序计算
- 用来代表一个含义
比如:UP ==》 1 2 3 4 分别代表上 下 左 右
# 什么样的值算是常量
- 固定不变的值 算作常量
可以认为所有基本类型的值,固定不变的都是常量 。
- 特殊常量
"abc"---》String
String 是一个引用数据类型,它的值很特殊,可以简单的视为常量 。
- 自己创建的空间 存储一个值 让它固定起来 不能改变
final int UP = 1;
关键字:final
# 变量
变量指的是:程序执行过程中可以改变的
它也是一个内存空间(小容器)。
变量空间在创建(声明)的时候,必须指定数据类型和变量空间的名字 。
里面只能存储一个内容(值,引用)
里面的内容可以改变
# 变量如何创建 / 声明
数据类型 变量名字;
int a;
String b;
- 需要注意:
- 变量是一个空间,可以只创建空间,里面不存放内容。
- 没有赋值的变量空间创建后是没有默认的内容,是空的。
- 空的变量空间不能拿来使用,编译错误。
# 注释
常用于对一段或多段代码的含义标注,尤其对团队开发很重要。
# 单行注释
//
class DemoTwos{ | |
public static void main(String[] args){ | |
byte a; | |
short a1; | |
int a2; | |
long a3; | |
float a4; | |
double a5; | |
char a6; | |
boolean a7; | |
boolean a8; | |
a = 1; | |
a1 = 45; | |
a2 = 454; | |
a3 = 9404L; | |
a4 = 54.15F; | |
a5 = 95.14; | |
a6 = 'd'; | |
a7 = true; | |
a8 = false; | |
long b = 2147483648L; | |
float c = 6.8F; | |
} // 单行注释 | |
} |
# 多行注释
/*
*/
class DemoTwos{ | |
public static void main(String[] args){ | |
System.out.println("谨腻子冲啊!!!"); | |
} /* | |
多行注释 | |
*/ | |
} |
# 文档注释
/**
*/
/** | |
文档注释 | |
*/ | |
class DemoTwos{ | |
public static void main(String[] args){ | |
System.out.println("谨腻子冲啊!!!"); | |
} | |
} |
# 数据与内存的关系
- 赋值的变量值会先存储在常量池里,之后变量空间里的
x
会把常量缓冲区里的1
拿出来存进栈里面 。- 常量缓冲区里的常量值 存储形式是以 计算机识别的 ** 二进制形式存储 ** 的 。
- 在向内存中存储常量值时,如果你没对内存 “预定” 数据类型,内存通常会自动帮你定义一个数据类型,但有时候并非是我们想要的,需要我们自己去 “预定” 一个。
- 特殊例中 内存里自动 “预定” 整型 最大值只有 int ,而浮点型中 最大是 double 。
# 补充 1:long 和 float 的 “命运”
- long
举例:
int a = 1;
byte b = a;1----> 32bit ( int )
00000000 00000000 00000000 00000001
8 位一组
b----> 8bit
00000001
为什么 32bit 的 1 能转到 8bit 的 b ?
因为 = 赋值的时候做了一个自动的决定 自动类型转化 。
它把前面没用的 “组”(全是 0 的情况下) 全都去除了,留下了符合条件的 “组” 。
但是,为什么
long
确不行呢?!因为内存里帮你决定的 数据类型 最大只有 int ,long 比它还大 ,所以要是存 int 的上限值 以上的数值,是存不下的。
解决办法:
long a = 2147483648L;
在后面加一个 L 就行,虽说小写 l 也行,但建议还是 以大写为主。小写看着像 1,团队开发千万不要小写。
- float
举例:
3.4----》 64bit(double)
0 000000000 00000000000000000000000.... 省略
第一组 第二组 第三组
分别表示:
符号位
指数位(整数)
尾数位(小数)
可以看到 浮点型 和 整型 在这计算方面不同。
它没有统一有规律的组,从 double 进行转换到 float 会有损失 。
解决办法:
float a = 6.9F;
在后面加一个 F 就行,同样建议 以大写为主 。
# 补充 2:char 和 String 的区别
- char
基本数据类型
'a'
' '
里只能存一个字符叫法:字符
- String
引用数据类型
"a"
"abcde"
""
null
" "
里能存多个字符 包括空符 和 null 都算字符串。叫法:字符串