Java的变量详细概括

1变量

在这里插入图片描述
1.1整形变量
基本语法: int 变量名 =初始值;
在Java中,一个int占4个字节,和操作系统无关

int 的取值范围 [-2^31,-2^31-1]

可以使用下面的代码查看int的最大值和最小值

public class Test {
    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);//2147483647
        System.out.println(Integer.MIN_VALUE);//-2147483648
    }
}

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

        int maxValue = Integer.MAX_VALUE;
        System.out.println(maxValue+1);//-2147483648
        int minValue = Integer.MIN_VALUE;
        System.out.println(minValue-1);//2147483647

maxValue+1会变成int的最小值
minValue-1 会变成int的最大值
在这里插入图片描述

当将一个超过int值范围的数给某个int变量是会报错;
在这里插入图片描述
1.2长整形变量
基本语法

long 变量名 =初始值;

在赋值后最后加上L或者l方便编译器识别

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

查看 Java 中的长整型数据范围:

System.out.println(Long.MAX_VALUE);//9223372036854775807
System.out.println(Long.MIN_VALUE);//-9223372036854775808

1.3双精度浮点数变量

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

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

例如:

double num = 1.1;
System.out.println(num * num)//1.2100000000000002

1.4 单精度浮点型变量

float num = 1.0f;   // 写作 1.0F 也可以

在赋值后最后加上f或者F方便编译器识别

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

1.5字符类型变量

Java中的char类型占2个字节
使用 单引号 + 单个字母 的形式表示字符字面值.
使用 Unicode 表示字符.

1.6字节变量

char 变量名 = 初始值;
byte 变量名 = 初始值;

byte 占1个字节 相当于c语言中的char
表示范围较小 ( -128 -> +127 )

1.7短整形变量

short 变量名 = 初始值;

short 占用 2 个字节, 表示的数据范围是 -32768 -> +32767
这个表示范围比较小, 一般不推荐使用

1.8 布尔类型变量

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

1.9 字符串类型变量

String 变量名 = "初始值";
  1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值.
  2. 和上面的类型不同, String 不是基本类型, 而是引用类型
  3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义.(转义字符和c语言相同)

1.10 变量的作用域
一般是变量定义所在的代码块 (大括号)
1.11 变量的命名规则

硬性指标:

  1. 一个变量名只能包含数字, 字母, 下划线
  2. 数字不能开头.
  3. 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量.
    ?注意: 虽然语法上也允许使用中文/美元符($)命名变量, 但是 强烈 不推荐这样做.

软性指标:

  1. 变量命名要具有描述性, 见名知意.
  2. 变量名不宜使用拼音(但是不绝对).
  3. 变量名的词性推荐使用名词.
  4. 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大
    写.

小驼峰命名示例:

int maxValue = 100;
String studentName = "张三";

基本数据类型转换

1.八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
2.如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;
3.小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) <int < long < float < double,其中 short和 char 都占用两个字节,但是char 可以表示更大的正整数;
4.大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用
5.byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
6.多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

注意

整数型字面值默认当做 int类型处理,如果以long 形式表示,需要在字面值后添加 L或 l;浮点型字面量默认被当做 double 处理,后面添加 F/f 才可以被当做 float类型;而布尔型在 Java 中只有 true 和false 没有其他值;字符型变量完全可以存储1 个汉字

解惑:1.byte a = 3;这行代码为什么可以编译通过呢?

按说 3 是 int 类型,而 a 变量是 byte 类型,大容量转换成小容量不是应该使用强制类型转换符吗,这里没有使用,也可以编译通过。这是因为 Java 中固定的语法规则规定的,当一个整数没有超出 byte 类型取值范围时,可以直接赋值给 byte 类型的变量。

2.byte b = a + 4;这行代码为什么又编译报错了呢?

按说 a 是 3,3+4 是7,这个 7 并没有超出 byte 取值范围,为什么编译报错呢?这是因为 byte 类型的 a 和 int 类型的 4 求和,结果为int 类型,并且对于以上代码来说 a 是一个变量,变量就是一个不确定的值,所以编译器会认为 a + 4 可能会超出 byte 取值范围,所以编译报错了。

3.byte b = 3 + 4为什么能编译通过

这是因为 3和 4 不是变量,都是确定的值,编译器会直接检测出3+4 等于 7,这个 7 并没有超出范围,所以编译又通过了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值