首先,因为变量要保存数据,因此需要一块空间来存储,而这块空间就在“内存”上。

其次,变量必须先定义,再被赋值或者让初始化,才能被使用。

那么在JAVA中,变量有哪些形态呢?

Java整型变量类型说明符 java中定义整型变量_java

没有无符号类型!!!

  以及数据有哪些类型呢?

Java整型变量类型说明符 java中定义整型变量_Java_02

  那么,下面就来一一介绍一下这些类型。


1. 整型变量


 


•基本语法格式: int 变量名 = 初始值;  初始化操作是 可选的 , 但是 建议 创建变量的时候都显式初始化 。


•在 Java , 一个 int 变量占 4 个字节 , 和操作系统没有直接关系。 而 4 个字节表示的数据范围是 -2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿 。


•可通过以下代码查看 Java 中的整型数据范围 :


System.out.println(Integer.MAX_VALUE);  // int 的最大值
System.out.println(Integer.MIN_VALUE);  // int 的最小值

 ※如果运算的结果超出了 int 的最大范围,就会出现溢出的情况。

// Integer 是int的包装类,'.'相当于"的"。
int maxValue = Integer.MAX_VALUE;
System.out.println(maxValue+1);
int minValue = Integer.MIN_VALUE;
System.out.println(minValue-1);

2.长整型变量


•基本语法格式:  long 变量名 = 初始值;


long num = 10L;

 初始化设定的值为 10L,表示一个长整型的数字,10l 也可以。使用 10 初始化也可以,10 的类型是 int,10L 的类型是 long,使用 10 L 或者 10 l 更好一些。

•Java 中 long 类型占 8 个字节。表示的数据范围 -2^63 -> 2^63-1


•我们依然可以使用以下代码查看 Java 中的长整型数据范围 :


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

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


3. 双精度浮点型变量


 


•基本语法格式: double 变量名 = 初始值; 


在 Java 中, int 除以 int 的值仍然是 int( 会 直接舍弃 小数部分 );如果想得到 带小数的结果 , 需要使用 double 类型计算。


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


 


4. 单精度浮点型变量


 


•基本格式: float 变量名 = 初始值;


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


 


5. 字符类型变量


 


•基本格式: char 变量名 = 初始值;


Java 中使用 单引号 + 单个字母 的形式表示字符 字面值 。


•计算机中的字符 本质上 是一个 整数 , 在 C 语言中使用 ASCII 表示字符; 而 Java 中 使用 Unicode 表示字符, 因此一个字符占用 两个字节, 表示的字符 种类更多 , 包括中文。


char ch = 'A';
char ch = '呵';
System.out.println(ch);

6.字节类型变量


•基本语法格式: byte 变量名 = 初始值;


字节类型表示的 也是整数。 只占 一个字节, 表示范围较小 ( -128 ~ +127 )。


•字节类型和字符类型 互不相干


 


7. 短整型变量


 


•基本语法格式: short 变量名 = 初始值;


•short 占用 2 个字节, 表示的数据范围是 -32768 -> +32767。


•这个表示范围比较小, 一般不推荐使用。


 


8. 布尔类型变量


 


•基本语法格式: boolean 变量名 = 初始值;


•boolean 类型的变量 只有两种取值, true 表示真, false 表示假。


•Java 的 boolean 类型和 int 不能 相互转换, 不存在 1 表示 true,0 表示 false 这样的用法。


•boolean 类型有些 JVM 的实现是占 1 个字节 , 有些是占 1 个比特位, 这个没有明确规定。


 


字符串类型变量


•基本语法格式: String 变量名 = "初始值";


•Java 使用 双引号 + 若干字符 的方式表示字符串 字面值 。


•和上面的类型不同 , String 不是 基本类型 , 而是 引用类型。


•字符串中的一些特定的不太方便直接表示的字符需要进行转义。转义字符示例:


// 创建一个字符串 My name is "张三"
String name = "My name is \"张三\"";



转义字符有很多 , 其中几个比较常见的如下 :



转义字符

解释

\n

换行

\r

回到行首

\t

水平制表符

\'

单引号

\"

双引号

\\

反斜杠



 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


•字符串的 + 操作, 表示 字符串拼接 :


String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);

•还可以将字符串和整数进行拼接:

String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);

// 执行结果
result = 1020

※变量的作用域


也就是该变量 能生效的范围 , 一般是变量定义所在的 代码块 (大括号) 。举个例子:


class Test {
   public static void main(String[] args) {
      {
           int x = 10;
           System.out.println(x); // 编译通过;
      }
       System.out.println(x); // 编译失败, 找不到变量 x.
  }
}
class Test {
   public static void main(String[] args) {
      {
           int x = 10; // 这里定义了一个变量 x,类型是 int,值是 10
           System.out.println(x); // 会打印 10
      }
       
      {
           double x = 20.0; // 这里又定义了一个变量 x,类型是 double,值是20.0
                            // 和上面的变量完全无关,只是用到的符号(变量名)相同

※变量的命名规则


•硬性指标:


1. 一个变量名 只能包含 数字, 字母, 下划线;


2. 数字 不能 放 开头;


3. 变量名是大小写敏感的, 即 num 和 Num 是两个不同的变量。


注: 虽然语法上 允许 使用中文 / 美元符 ($) 命名变量, 但是  不推荐 使用。


 


•软性指标:


1. 变量命名要具有描述性, 见名知意


2. 变量名不宜使用拼音 ( 但是不绝对 );


3. 变量名的词性推荐使用名词


4. 变量命名推荐 小驼峰命名法  ( 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写)。


 


※字面量和常量


•字面值:


10        // int 字面值常量 ( 十进制 )


010     // int 字面值常量 ( 八进制 ) 由数字 0 开头 . 010 也就是十进制的 8


0x10    // int 字面值常量 ( 十六进制 ) 由数字 0x 开头 . 0x10 也就是十进制的 16


10L     // long 字面值常量 . 也可以写作 10l ( 小写的 L)


1.0       // double 字面值常量 . 也可以写作 1.0d 或者 1.0D


1.5e2   // double 字面值常量 . 科学计数法表示 . 相当于 1.5 * 10^2


1.0f      // float 字面值常量 , 也可以写作 1.0F


true      // boolen 字面值常量 , 同样的还有 false


'a'         // char 字面值常量 , 单引号中只能有一个字符


"abc"   // String 字面值常量 , 双引号中可以有多个字符


 


•final 关键字修饰的常量,常量 不能 在 程序运行过程中 发生 修改 。


 


※类型转换


Java 作为一个 强类型 编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。因此, 不同 数字类型 的变量之间赋值,表示范围 更小的 类型 能隐式转换 成 范围较大的 类型, 反之则不行。 但 int 和 boolean 是毫不相干的两种类型, 不能 相互赋值。还有在 int 字面值常量 给 byte 赋值时,因为 byte 表示的数据范围是: -128 -> +127,因此在赋值时必须考虑范围问题。


 


※使用强制类型转换

int a = 0;
double b = 10.5;
a = (int)b;

int a = 10;
boolean b = false;
b = (boolean)a; // 编译出错,提示不兼容的类型。


•使用 (类型) 的方式可以将 double 类型强制转成 int。 但是强制类型转换可能会导致 精度丢失。


•强制类型转换 不是一定能成功, 互不相干的类型之间 无法 强转。


 


※数值提升


当 int 和 long 混合运算的时候, int 提升 long, 需要使用 long 类型的变量来接收结果。如果非要用 int 来接收结果, 就需要 使用强制类型转换 。


byte 和 byte 都是相同类型, 但是出现编译报错。这是因为计算时会 先将 byte类型  都 提升 成 int类型 再进行计算, 得到的 结果也是 int  。 这是由于计算机的 CPU 通常是 按照 4 个字节为单位 从内存中读写数据, 为了硬件上实现方便, 像 byte 和 short 这种 低于 4 个字节的类型, 会先提升 成 int, 再参与计算。


 


※ int 和 String 之间的相互转换(类比方法!)


•int 转成 String:


int num = 10;
//方法1
String str1 = num + "";
//方法2
String str2 = String.valueOf(num);


•String 转成 int:


String str = "100";
int num = Integer.parseInt(str);

※打印输出

System.out.println(msg);            // 输出一个字符串, 带换行
System.out.print(msg);              // 输出一个字符串, 不带换行
System.out.printf(format, msg);     // 格式化输出(和C语言的printf的用法基本一致)
System.out.format(format, msg);     // 完全等同于 printf

※运算符

名称

内容

赋值运算符

=

算数运算符

+  -  *  / (0不能作为除数)  %  +=  -=  *=  /=  %=  ++ (如果取表达式的返回值,则前置自增的返回值是自增之后的值,后置自增的返回值是自增之前的值)  --

关系运算符

==  !=  <  >  <=  >==

逻辑运算符

&&  ||  ! (返回值都是boolean)

位运算符

&  |  ~  ^

移位运算符

<< (最左侧位不要了,最右侧补0.左移N位相当于原数字*2的N次方)  >> (最右侧位不要了,最左侧补符号位.右移N位,相当于原数字/2的N次方)  >>> (无符号右移:最右侧位不要了,最左侧补0)

条件运算符

表达式1 ? 表达式2 : 表达式3

 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 




•  && 和 || 遵守 短路求值 的规则:


1. 对于 &&, 如果 左侧 表达式值 为false, 则表达式的整体的值一定是 false, 无需计算右侧 表达式。


2. 对于 ||, 如果 左侧 表达式值 为true, 则表达式的整体的值一定是 true, 无需计算右侧 表达式。


& 和 | ( 不推荐使用 如果 操作数为 boolean 的时候 , 也表示逻辑运算。 但是 它们 不支持 短路求值。


 


运算符之间是有优先级的,在可能存在歧义的代码中 加上括号 即可。


 


※注释


注释是为了让代码更容易被读懂而附加的描述信息, 不参与编译运行 , 但是却非常重要。


•Java中的注释主要分为以下三种:


1.单行注释: // 注释内容(用的最多);


2.多行注释: /* 注释内容 */ (不推荐);


3.文档注释: /** 文档注释 */ (常见于方法和类之上描述方法和类的作用 ) ,可用来自动生成文


档。


 


※关键字


关键字是 Java 中的一些 具有特定含义 的单词。特别注意,在定义的变量名时 不能 和关键字冲突。




Java整型变量类型说明符 java中定义整型变量_System_03