目录

1、常量

2、Final关键字与static关键字同时使用

3、变量

4、Java 变量之变量数据类型

 (1)基本数据类型(又名内置类型)

1)整形(全为有符号类型)

2)浮点型

3)字符型

4)布尔型

(2)引用数据类型

5、数据类型转换

(1)自动类型转换

(2)强制类型转换

6、变量作用域

(1)类变量

(2)局部变量

(3)方法参数变量

(4)异常处理参数变量


1、常量

定义:在程序运行期间,固定不变的量;

常见分类

(1)字符串常量:用双引号引起来的部分

例子:“Abc”、“HelloWorld”、“12345”

(2)整数常量:没有小数点的数字

例子:0、12、345、-678

(3)浮点数常量:带小数点的数字

例子:1.2、3.45

(4)字符常量:用单引号引起来的单个字符

例子:‘a’、‘B’、‘1’、‘单’

(5)布尔常量:只有两个取值

例子:true、false

(6)空常量:没有任何数据

例子:null

基本注意事项:

(1)主要使用final关键字来定义常量;

(2)常量被设定后,一般情况下就不允许再进行更改;

(3)必须要在常量声明时对其进行初始化;

(4)当在常量定义的时候初始化过后,在应用程序中就无法再次对这个常量进行赋值;

(5)final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法;

(6)一个数组对象被final关键字设置为常量数组之后,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组内容;

(7)常量有一定的命名规则,具体规则参照开发手册或公司规范;

(8)两个单引号中间必须有且仅有一个字符,没有不行,有两个也不行;

(9)空常量不能直接用来打印输出;

2、Final关键字与static关键字同时使用

(1)Java中一段程序代码从编辑到最后执行,需要经过两个过程:代码的装载->对象的建立;

(2)一个被定义为final的对象引用或者常量只能够指向唯一的一个对象,不可以将他再指向其他对象;

(3)为了做到一个常量在一个应用程序内真的不被更改,就需要将常量声明为staitc final的常量;

(4)为了确保在所有情况下(即创建多个对象情况下)应用程序还能够得到一个相同值的常量,在代码装载的时候就初始化常量的值。然后在后续创建对象的时候,只引用这个常量对象的地址,而不对其再进行再次初始化;

(5)不同的关键字会改变变量的作用范围,为此程序开发人员需要了解自己的需求,然后选择贴合需求的关键字;

3、变量

定义:在程序运行期间内容可以发生改变的量;

创建格式:数据类型 变量名称 = 数据值;

注意事项

(1)用long 和 float创建变量时要加后缀L和F;

4、Java 变量之变量数据类型

java后端知识体系 java后端基础_java后端知识体系

 (1)基本数据类型(又名内置类型)

特点:可以直接在栈分配内存;

Java保留基本数据类型的原因:提升性能;

巧记:四大类八小种;

1)整形(全为有符号类型)

a)byte

大小:1字节(8bit);

高位:符号位(其余7位为数据位);

范围:1111,1111~0111,1111(-128~127);

注意事项:byte类型虽然在语义(逻辑)上是占用1字节,但实际上,JVM中是将其当做int看待的,实际上占用了32位,4字节的,运算效率等同于int;

初始化默认值:0

b)short

大小:2字节(16bit);

高位:符号位(其余15位为数据位);

范围:-2的15次方~2的15次方-1(-32768~32767);

注意事项:byte类型虽然在语义(逻辑)上是占用1字节,但实际上,JVM中是将其当做int看待的,实际上占用了32位,4字节的,运算效率等同于int;

初始化默认值:0

c)int

大小:4字节(32bit);

高位:符号位

范围:-2的31次方~2的31次方-1(-4294967296~4294967295);

注意事项:Java默认的整型类型;

初始化默认值:0

d)long

大小:8字节(64bit);

高位:符号位

范围:-2的63次方~2的63次方-1(-4294967296~4294967295);

注意事项:参考:Java 数据类型转化

初始化默认值:0L

2)浮点型

a)float

大小:4字节(32bit);

精度:单精度;

范围:(-2^128)~(-2^(-23-126))-(0)-(2^-149)~2^128(1.4013E-45~3.4028E+38);

注意事项:通俗来说就是小数,但是,这是有精度要求的,即在这区间float可不是能表达任意小数的,而是在一定精度下才行;参考:Java中float/double取值范围与精度

初始化默认值:0.0f

b)double

大小:8字节(64bit);

精度:双精度;

范围:-2^1024~(-2^(-1022-52))-0-(2^-1074)~2^1024(4.9E-324~1.7977E+308);

注意事项:Java默认的浮点类型,即若后面不加f/F,默认是double类型;

初始化默认值:0.0d

3)字符型

a)char

大小:2字节(16bit);

表示:一个字符(可以是汉字),字符集(charset)采用UCS-2,编码(encoding)采用UTF-16;

范围:(-2^128)~(-2^(-23-126))-(0)-(2^-149)~2^128(0-65535);

注意事项:一个16位的无符号整型;随着发展,char所能代表的字符个数(UCS-2字符集)被限定死了,所以并不推荐使用;

初始化默认值: '/uoooo'(null)

4)布尔型

a)boolean

大小:逻辑上:1bit;(实际上,boolean并没有具体规定,完全是看各个JVM实现)

取值:true或者false;

初始化默认值:false;

注意事项

(1)字符串隶属于引用类型,而非基本数据类型;

(2)浮点型可能只是一个近似值,并非精确;

(3)数据范围与字节数不一定相关。例如:float数据范围比long更加广泛,但是float是4字节,long是8字节;

(4)浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F;如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L;

(2)引用数据类型

也称对象变量类型,复合数据类型,包含类、接口、数组(除了基本类型外,就是引用类型)。

Java的引用不支持对内存直接操作,而指针则可以,所以,Java用起来更安全,但不够灵活,而指针,自由度大;(可以理解为受限制的指针)

在Java中,任何对象都需要通过引用才能访问到,没有引用指向的对象被视为垃圾对象,将会被回收。参考:Java中的引用

5、数据类型转换

定义:当左右数据类型不一样时,将会发生数据类型转换;

分类:自动类型转换(隐式)+ 强制类型转换(显式);

(1)自动类型转换

特点:代码自动完成;

规则:数据范围从小到大;

(2)强制类型转换

特点:需要对代码进行特殊处理;

规则:范围小的数据范围+变量名 = 原本大范围内的数据;

风险:可能会发生精度损失和数据溢出;

精度损失:数据转换后一部分数据被舍去;

数据溢出:大范围数据类型转换为小范围数据类型,装不下;

注意事项

(1)byte/short/char这三种类型都可以发生数学运算;

(2)byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后在计算;

(3)boolean类型不能发生数据类型转换;

6、变量作用域

定义:规定了变量能够使用的范围;

决定条件:变量的声明地点;

分类:类变量、局部变量、方法参数变量、异常处理参数变量;

(1)类变量

声明地点:类中;

作用域:整个类;

注意事项:若初始化时没有赋值,则为系统默认初始化的值;

(2)局部变量

声明地点:方法或者方法代码块中;

作用域:其所在的代码块;

(3)方法参数变量

声明地点:具体方法中;

作用域:对应的方法;

(4)异常处理参数变量

声明地点:具体异常处理块中;

作用域:对应的异常处理块;