# 常量

常量代表程序运行过程中,不能再次改变的值 。

# 常量的作用

  1. 固定的值 代表计算过程中经常用到的值

便于程序计算

  1. 用来代表一个含义

比如:UP ==》 1 2 3 4 分别代表上 下 左 右

# 什么样的值算是常量

  1. 固定不变的值 算作常量

可以认为所有基本类型的值,固定不变的都是常量 。

  1. 特殊常量

"abc"---》String

String 是一个引用数据类型,它的值很特殊,可以简单的视为常量 。

  1. 自己创建的空间 存储一个值 让它固定起来 不能改变

final int UP = 1;

关键字:final

# 变量

变量指的是:程序执行过程中可以改变的

它也是一个内存空间(小容器)

变量空间在创建(声明)的时候,必须指定数据类型和变量空间的名字 。

里面只能存储一个内容(值,引用)

里面的内容可以改变

# 变量如何创建 / 声明

数据类型 变量名字;

int a;

String b;

  • 需要注意:
  1. 变量是一个空间,可以只创建空间,里面不存放内容。
  2. 没有赋值的变量空间创建后是没有默认的内容,是空的。
  3. 空的变量空间不能拿来使用,编译错误。

# 注释

常用于对一段或多段代码的含义标注,尤其对团队开发很重要。

# 单行注释

//

a
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 的 “命运”

  1. 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,团队开发千万不要小写。

  1. float

举例:

3.4----》 64bit(double)

0 000000000 00000000000000000000000.... 省略

第一组 第二组 第三组

分别表示: 符号位 指数位(整数) 尾数位(小数)

可以看到 浮点型 和 整型 在这计算方面不同。

它没有统一有规律的组,从 double 进行转换到 float 会有损失 。

解决办法:

float a = 6.9F;

在后面加一个 F 就行,同样建议 以大写为主

# 补充 2:char 和 String 的区别

  1. char

基本数据类型

'a' ' ' 里只能存一个字符

叫法:字符

  1. String

引用数据类型

"a" "abcde" "" null

" " 里能存多个字符 包括空符 和 null 都算字符串。

叫法:字符串