1.定义
变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。其包含了多种类型,类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。

2.分类

2.1 ==整型变量 int==
 ① 基本语法格式:
   int 变量名 = 初始值;

② 代码实例:
int num = 20; / / 定义一个整型变量
System.out.println(num);

③ Java中的整型数据范围:
在Java中,一个int变量占4个字节,与操作系统没有直接关系
System.out.println(Integer.MAX_VALUE); / / int 的最大值
System.out.println(Integer.MIN_VALUE); / / int 的最小值

※ 若运算的结果超出了int的最大范围,就会出现以下溢出的情况:
   int maxValue=Integer.**MAX_VALUE**;
   System.out.println(**maxValue+1**);

  int minValue=Integer.**MIN_VALUE**;
   System.out.println(**minValue-1**);
   为了解决这一问题,针对这种溢出的情况,我们就需要使用更大范围的数据来表示,于是Java中提供了long类型。

注意事项:
<1. int 表示变量的类型是一个整型;
<2. 变量名是变量的标识,后续都是通过这个名字来使用变量;
< 3.Java中“=“表示赋值,即给变量设置一个初始值;
<4. 初始化操作是可选的,但建议创建变量的时候都显示初始化;
<5. / / 表示注释,注释作为代码的解释说明部分,不参与编译运行;
<6. 分号不可忘记,否则会编译运行。

2.2 长整型变量
① 基本语法格式:
long 变量名 = 初始值;

②代码示例:

long num = 10L; / / 定义一个长整型变量,初始值也可写做10l(小写L),但易读性差
 System.out.println(num);

③Java中的长整型数据范围:
在Java中,Long类型占8个字节,表示的数据范围是 -2^63 到 2^63-1

System.out.println(Long.MAX_VALUE);
 System.out.println(Long.MIN_VALUE);
 / /运行结果为:
 9223372036854775807
 -9223372036854775808


该数据范围远超过 int 的表示范围, 已足够满足绝大部分的工程场景使用。

2.3 单精度浮点型变量
① 基本语法格式:
float 变量名 = 初始值;

② 代码示例:

float num = 1.0f; / / 也可写作 1.0F
 System.out.println(num);

float 类型在 Java 中占4个字节, 遵守 IEEE 754 标准(与C语言一样), 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float。

2.4 双精度浮点型变量(重点)
① 基本语法格式:
double 变量名 = 初始值;

② 代码示例:

double num = 1.0;
 System.out.println(num);

举几个易踩雷的例子:
代码1:

int a=1;
 int b = 2;
 System.out.println(a / b);

// 执行结果为 0
理由是在 Java 中, int 除以 int 的值仍然是 int,只会保留整数部分,会直接舍弃小数部分。
如果想得到 0.5, 需要使用 double 类型计算。

→double a = 1.0;
 double b = 2.0;
 System.out.println(a / b);// 执行结果为0.5

代码2:

double num = 1.1;
 System.out.println(num * num);// 执行结果为1.2100000000000002


理由是Java 中的 double 虽然也是 8 个字节, 但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据 范围。且Java 的 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差。

2.5 字符类型变量
① 基本语法格式:
char 变量名 = 初始值;

② 代码示例:

char ch = ‘A’;

③ 注意事项:
(1). Java 中使用 单引号 + 单个字母 的形式表示字符字面值。
(2). 计算机中的字符本质上是一个 整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符。 因此 一个字符占用两个字节, 表示的字符种类更多, 包括中文,使用一个字符表示一个汉字:
char ch = ‘嘿’;
System.out.println(ch);
(3). 执行 javac 的时候可能出现以下错误:
Test.java:3: 错误: 未结束的字符文字
char ch = ‘鍛?’;
^
此时我们在执行 javac 时加上 -encoding UTF-8 即可:javac -encoding UTF-8

2.6 字节类型变量
① 基本语法格式:
byte 变量名 = 初始值;

② 代码示例:

byte value = 0;
 System.out.println(value);

③ 注意事项:
(1). 字节类型表示的也是整数. 只占一个字节, 表示范围较小 ( -128 -> +127 );
(2). 字节类型和字符类型互不相干。

2.7 短整型变量
① 基本语法格式:
short 变量名 = 初始值;

② 代码示例:

short value = 0;
 System.out.println(value);

③ 注意事项:
(1). short 占用 2 个字节, 表示的数据范围是 -32768 -> +32767
(2). 这个表示范围比较小, 一般不推荐使用。

2.8 布尔类型变量
① 基本语法格式:
boolean 变量名 = 初始值;

② 代码示例:

boolean value = true;
 System.out.println(value);

③ 注意事项:
(1). boolean 类型的变量只有两种取值, true 表示真, false 表示假;
(2). Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法; (3). boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。

boolean value = true;
 System.out.println(value + 1);

// 代码编译会出现如下错误:
Test.java:4: 错误: 二元运算符 ‘+’ 的操作数类型错误
System.out.println(value + 1);
第一个类型: boolean
第二个类型: int 1 个错误

2.9 字符串类型变量(重点)
① 基本语法格式:
把一些字符放到一起就构成了字符串
String 变量名 = “初始值”;

② 代码示例:

String name = “laowang”;
 System.out.println(name);

③ 注意事项:
(1). Java 使用’’ 双引号 + 若干字符’’ 的方式表示字符串字面值;
(2). 和上面的类型不同, String 不是基本类型, 而是引用类型(后面重点解释);
(3). 字符串中的一些特定的不太方便直接表示的字符需要进行转义。
转义字符示例:(还有很多)
// 创建一个字符串
My name is “张三”
String name = “My name is “张三””;
(4).字符串的 + 操作, 表示字符串拼接:

String a = “hello”;
 String b = “world”;
 String c = a + b;
 System.out.println©;


(5). 还可以用字符串和整数进行拼接:

String str = "result = ";
 int a = 10;
 int b = 20;
 String result = str + a + b;
 System.out.println(result);/ / 执行结果 result = 1020


以上代码说明, 当一个‘’ +‘’ 表达式中存在字符串的时候, 都是执行字符串拼接行为.
因此我们可以很方便的使用 System.out.println 同时打印多个字符串或数字

int a = 10;
 int b = 20;
 System.out.println("a = " + a + ",b = " + b);