文章目录

  • 变量与类型
  • 1.1 整型变量
  • 1.2 长整型变量
  • 1.3 双精度浮点型变量
  • 1.4 单精度浮点型变量
  • 1.5 字符类型变量
  • 1.6 字节类型变量
  • 1.7 短整型变量
  • 1.8 布尔类型变量
  • 1.9字符串类型变量
  • 1.10 变量的命名规则
  • 1.11 常量
  • 1.12 理解类型转换


变量与类型

1.1 整型变量

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

int占4个字节,表示范围是 -2^31 -> 2 ^31-1

byte = 8个bit,1KB = 1024 Byte,1MB = 1024 KB,1GB = 1024MB

使用如下代码可查看整型数据范围:

int有多长 java java int长度_变量名


注意:当int / int 时,值任为int类型。如 int 4 / 2 值为 2;int 3 / int 4 值为0!

1.2 长整型变量

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

代码示例:

int有多长 java java int长度_java_02


long占8个字节,表示范围是 -2^63 -> 2 ^63 -1

1.3 双精度浮点型变量

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

代码示例:

int有多长 java java int长度_类型变量_03


double占8个字节,但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围.例:

int有多长 java java int长度_java_04

1.4 单精度浮点型变量

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

int有多长 java java int长度_类型变量_05


float占4个字节,由于表示的精度范围较小,优先考虑使用double。

1.5 字符类型变量

基本格式: char 变量名 = 初始值;
代码示例: char ch = ‘A’ ; char ch = ‘和’;

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

1.6 字节类型变量

byte 变量名 = 初始值;
字节类型表示的是整数,占1个字节,表示范围 -128 -> 127

1.7 短整型变量

基本格式: short 变量名 = 初始值;
short占2个字节,表示范围较小。

1.8 布尔类型变量

int有多长 java java int长度_字面值_06

注意事项:

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
  2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
  3. boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位。

1.9字符串类型变量

语法格式: String 变量名 = “初始值” ; 把字符放到一起就构成了字符串

String 不是基本类型, 而是引用类型。

int有多长 java java int长度_java_07


字符串的+操作,表示字符串拼接。例

public static void main(String[] args) {
        String a = "haha";
        String b = "yaya";
        String c = a + b;
        System.out.println(c);
    }

输出结果为hahayaya

1.10 变量的命名规则

硬性指标:

  1. 一个变量名只能包含数字, 字母, 下划线
  2. 数字不能开头.
  3. 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量.
    注意: 虽然语法上也允许使用中文/美元符($)命名变量, 但是 强烈 不推荐这样做.
    软性指标:
  4. 变量命名要具有描述性, 见名知意.
  5. 变量名不宜使用拼音(但是不绝对).
  6. 变量名的词性推荐使用名词.
  7. 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写。studenName.

1.11 常量

  1. 字面值常量
    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 字面值常量, 双引号中可以有多个字符.

1.12 理解类型转换

int a = 10; 
long b = 20; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; // 编译通过. 
int a = 10; 
double b = 1.0; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; // 编译通过.

表示范围更小的类型能隐式转换成范围较大的类型。
使用强制类型转换:例

int a = 0;
        double b = 10.5;
        a = (int)b;
        System.out.println(a);

a的输出结果为10,说明强制类型转换可能会导致精度丢失。

byte 和 byte 的运算:

byte a = 10; 
byte b = 20; 
byte c = a + b; 
System.out.println(c); 
// 编译报错
Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失

正确的写法:

```java
byte a = 10; 
byte b = 20; 
byte c = (byte)(a + b); 
System.out.println(c);`

结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于4 个字节的类型, 会先提升成 int, 再参与计算.