目录

一. 变量和常量

变量是内存中的一个存储区域,其作用是在内存中存储一个值。

该区域的数据可以在同一类型范围内不断变化。

变量是程序中最基本的存储单元。包含变量类型,变量名和存储的值。

需要明确的是:文件是在硬盘中作为数据的载体,变量是内存中作为数据的载体

变量的分类

java区分常量和变量 java常量变量区别_java定义64位的数据变量

1. 变量和常量区别和用途

变量和常量都是针对于内存中数据存储的载体

变量常量同一个时刻只能保存一个值

可以被多次赋值

变量最终保存的值是最后一次的赋值结果同一时刻只能保存一个值

只能被有效赋值一次,一旦赋值将无法再次改变其值

2. 声明

变量和常量在使用之前都需要进行有效的声明,必须在声明之后才能使用。

语法格式示例声明一个变量数据类型 变量名int a;

声明一个常量final 数据类型 变量名final int a;

声明多个变量数据类型 变量名1,变量名2, …int a,b,c;

声明多个常量final 数据类型 变量名1,变量名2, …final int a,b,c;

3. 赋值

赋值是指为之前声明的变量给一个确定的值。

语法格式示例为变量或常量赋值变量名 = 值a = 0

初始化

所谓初始化,只是一个概念,通常将一个新的变量的第一次赋值的过程称之为初始化。

4. 声明同时赋值

如果在声明的时候已经确切的清楚这个变量需要存储什么样的值,那么可以直接在声明的时候进行赋值。

语法格式示例声明一个变量并赋值数据类型 变量名 = 值int a = 0;

声明一个常量并赋值final 数据类型 变量名 = 值final int a = 0;

声明多个变量并赋值数据类型 变量名1 = 值1,变量名2 = 值2, …int a = 0,b = 0,c = 0;

声明多个常量并赋值final 数据类型 变量名1 = 值1,变量名2 = 值2, …final int a = 0,b = 1,c = 2;

5. 作用范围

作用范围又叫“作用域”,所指这个变量或者常量的可有效使用的范围。

同一个作用范围中,不能存在两个同名称的变量或者常量。

变量的作用域在其所定义位置的{}中。

二. 数据类型

java区分常量和变量 java常量变量区别_java区分常量和变量_02

1. 基本数据类型(值类型)

(1)整型

整型就是整数类型,整型专门用于保存整数,可以是正整数或者负整数。

类型特征

数据类型长度(位bit)字节空间可表示的数据范围long(长整型)64位8-922337203685775808 ~ 922337203685775807

int(整型)32位4-2147483648 ~ 2147483647

short(短整型)16位2-32768 ~ 32767

byte(字节)8位1-128 ~ 127

值表示法

类型说明示例byte,int,short直接给出常规整型值即可100

long需要在值的后面加一个“l”或者“L”100L

Java中遇到整型默认解析为int类型

(2)浮点类型

专门用于表示带有小数点的数据。

类型特征

数据类型长度(位bit)字节空间可表示的数据范围double(双精度浮点类型)64位8-1.7E308 ~ 1.7E308

float(单精度浮点类型)32位4-3.4E38 ~ 3.4E38

值表示法

类型说明示例float给出的值需要带有小数点

需要在值后面加一个“f”或者“F”

支持十进制形式表示

支持科学计数法表示

整数部分如果只有0,则可以省略整数部分十进制表示法:3.14F,314.0F,.314F

科学计数法表示:3.14e2F

double给出的值需要带有小数点

可以但不必须在值后面加一个“d”或者“D”

支持十进制形式表示

支持科学计数法表示

整数部分如果只有0,则可省略整数部分十进制表示法:3.14,314.0,.314

科学计数法表示:3.14e2

Java中默认将小数解析为double数据类型,如果希望某个小数以float类型处理,就在其后面加“f”或者“F”

(3)字符类型

字符类型专门用于存储字符值,在计算机领域中,我们认为一个字符可以代表:一个汉字,一个字母,一个数字,一个符号等。

类型特征

数据类型长度(位bit)字节空间可表示的数据范围char(字符)16位20 ~ 65535

值表示法

说明格式示例表示某个字符以一对单引号的形式直接包裹需要保存的字符‘你’

转义字符以一对单引号包裹,内部包含转义字符‘\n’

16进制Unicode表示以一对单引号包裹,内部使用\u开始的十六进制整数‘\u0001’

整数Unicode代码点表示直接使用整数的Unicode代表1

(4)布尔类型

数据类型长度(位bit)字节空间可表示的数据范围boolean(布尔)1位1true或者false

注意:与C++中的布尔类型不同,C++中的bool类型是0为假,非0为真,此处的boolean是专用的布尔类型,只能是true和false,不可以和int类型混用。

2. 引用数据类型(对象类型)

引用数据类型主要包含如下三类:

class(类类型)

interface(接口类型)

[ ] (数组类型)

三. 整数的多进制表示法

1. 十进制

默认就是十进制

2. 八进制

以数字0开头,例如:012表示的数是10

3. 十六进制

以0x或者0X开头,a/A,b/B,c/C,d/D,e/E,f/F分别表示10,11,12,13,14,15,例如:0x1f表示的数是31

4. 二进制

以0b或者0B开头,例如:0b111表示的数是7

四. 数值类型值中的下划线

数值(可以是整数,也可以是浮点数)中间可以加下划线,而且可以加多个下划线,例如:int a = 100_000_00;

数值的头尾不可以加下划线,即int a = _100;这是不允许的。

这个下划线的作用只是方便去看,没有什么实际作用,不会对程序产生其他影响。

五. 基本数据类型转换

Java中有8种基本数据类型,在必要的时候数据类型是需要转换的,即将一个数据类型的值转换另一种数据类型,数据类型转换的时候具有一定的规则,并不是任何数据类型都可以相互转换。

数据类型的转换分为“显式转换”和“隐式转换”两种。

自动类型提升(隐式类型转换)

因boolean类型无法参与运算,所以这里讨论的内容不包括此类型。

char类型虽然代表字符,但是实际上字符也是由整数代表,所以可以进行运算。

当一个相对容量小的数据类型变量和一个相对容量比较大的数据类型进行运算的时候,整个表达式的结果将自动提升为容量大的数据类型。

以上内容提到的容量大小,指的是一个类型所能表示值范围的大小,而不是所占内存空间的大小。

当byte,char,short三种类型进行运算的时候,结果都为int类型。

类型提升的顺序为:byte/short/char -> int -> long -> float -> double

public static void main(String[] args)
{
byte byte1 = 2;//定义byte类型的变量并赋值为2
int int1 = byte1;//将byte类型所存储的2赋值给int类型,此时这个2已经被装在int空间中,类型自动提升。
System.out.println(int1);
}
public static void main(String[] args)
{
byte byte1 = 2;
int int1 = 120;
//byte byte2 = byte1 + int1;//编译不通过
int int2 = byte1 + int1;
System.out.println(int2);
}

强制类型转换(显式类型转换)

强制类型转所所指将某个变量中存储的值转换到另一个数据类型。

强制类型转换很可能面临丢失精度的问题。

不兼容的数据类型之间无法完成转换。

小数转换为整数会丢失精度:

public static void main(String[] args)
{
double double1 = 12.3;
//int int1 = double1;//编译错误,无法将大类型的值放在小类型的变量中。
int int2 = (int)double1;//这里进行强制类型转换
}
转换前的值超出了转换后的数据类型表示范围,丢失了精度:
public static void main(String[] args)
{
int int1 = 130;
byte byte1 = (byte)int1;
System.out.println(byte1);
}