什么是变量
变量的定义是: 用来命名一个数据的标识符
比如现在是2023年,如果要定义2023这个数字,在Java里就会写成:
int year =2023;
int是数据类型,表示为整数
year是应该标识符
=是赋值操作符
2023是数字类型值
;结束该行
变量基本类型
Java中变量有8种基本类型,并且是关键字。
分别是
整型(4种)
字符型(1种)
浮点型(2种)
布尔型(1种)
下面分别讲讲这几种不同的基本类型:
- 1-整型
整型变量用于存放整数
byte
short
int
long
区别在于不同类型的整型,最大值,最小值不一样
如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误,这个时候就需要进行类型转换,后面会讲。
- 2-字符型
char类型用于存放一个字符,值用单引号'表示 (双引号表示字符串)
其长度和short一样,也是16位的
只能存放一个字符,超过一个字符就会产生编译错误
- 3-浮点型
浮点数类型有两种
float 长度为32位
double 长度为64位
注意: 默认的小数值是double类型的
所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的长度32
在数字后面加一个字母f,直接把该数字声明成float类型
float f2 = 54.321f,
这样就不会出错了
- 4-布尔型
布尔型用于表示真假
其长度为1
boolean b1 = true;
boolean b2 = false;
分别代表真假
虽然布尔型真正存放的数据是0(false) 1(true)
但是,不能直接使用0 1 进行赋值
5.5- String类型
String类型其实并不是基本类型,但是它是如此广泛的被使用,常常被误以为是一种基本类型。
String类型是Immutable的,一旦创建就不能够被改变,更多的关于String的学习,请参考String
字面值
创建一个对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。
给基本类型的变量赋值的方式叫做 字面值
- 1-整数字面值
当以l或者L结尾的时候,一个整数字面值是long类型,否则就是int类型。 建议使用大写的L而非小写的l,因为容易和1混淆。
byte,short,int和long的值都可以通过int类型的字面值来创建。整数的字面值可以用如下四种进制来表示:
十进制: 基 10, 包含从0-9的数字,平常用的就是这种
十六进制: 基 16, 包含从0-9的数字,和从A-F的字母。
八进制: 基 8, 包含从0-7的数字
二进制: 基 2, 包含0和1。(从 JAVA7开始就可以创建 二进制的字面值了)
- 2-浮点数字面值
当以f或者F结尾的时候,就表示一个float类型的浮点数,否则就是double类型(以d或者D结尾,写不写都可以)。
浮点数还可以用E或者e表示(科学计数法)
e2表示10的二次方,即100
1.234e2 = 1.234x100
- 3-字符和字符串字面值
字符的字面值放在单引号中
字符串的字面值放在双引号中
需要注意的是,\表示转义,比如需要表示制表符,回车换行,双引号等就需要用 \t \r \n \" 的方式进行
类型转换
- 转换规则
转换规则如图所示
精度高的数据类型就像容量大的杯子,可以放更大的数据
精度低的数据类型就像容量小的杯子,只能放更小的数据
小杯子往大杯子里倒东西,大杯子怎么都放得下
大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出
需要注意的一点是
虽然short和char都是16位的,长度是一样的
但是彼此之间,依然需要进行强制转换
低精度向高精度转换
long l = 50;
int i = 50;
l 是long类型的,其类型长度是64位
i 是int类型的,其类型长度是32位
所以l的精度,比i的精度要高
l = i;
把i的值赋给l, 首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度
这个例子,是低精度向高精度转换 是可以正常转换的
换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去
高精度向低精度转换
byte b = 5;
int i1 = 10;
int i2 = 300;
b = i1;
b=i2;
b的类型是byte,其长度是8,最大只能放127
i1 的类型是int, 其长度是32,最大,反正就是很大了,超过127
所以, 把int类型的数据转成为byte类型的数据,是有风险的
有的时候是可以转换的,比如 b = i1 (i1=10);
有的时候不可以转换 比如 b= i2 (i2=300) 因为放不下了
编译器就会提示错误
命名规则
命名规则很常见,我只总结一下:
变量命名只能使用字母 数字 $ _
变量第一个字符 只能使用 字母 $ _
变量第一个字符 不能使用数字
注:_ 是下划线,不是-减号或者—— 破折号
使用完整的单词命名,而非缩写
不能只使用关键字,但是可以包含关键字
作用域
变量处于不同的位置,有不同的名称
分别是
字段,属性
参数
局部变量
不同名称的变量,其作用域是不一样的
- 1-字段,属性,Field
当一个变量被声明在类下面
变量就叫做字段 或者属性、成员变量、Field
比如变量i,就是一个属性。
那么从第2行这个变量声明的位置开始,整个类都可以访问得到
所以其作用域就是从其声明的位置开始的整个类
- 2-参数
如果一个变量,是声明在一个方法上的,就叫做参数
参数的作用域即为该方法内的所有代码
其他方法不能访问该参数
类里面也不能访问该参数
- 3-局部变量
声明在方法内的变量,叫做局部变量
其作用域在声明开始的位置,到其所处于的块结束位置
final
final 修饰一个变量,有很多种说法,比如不能改变等等
准确的描述是 当一个变量被final修饰的时候,该变量只有一次赋值的机会
final在修饰一个变量时,通常有下面几种情况:
在声明的时候赋值
在声明的时候没有赋值
final 修饰其他
表达式
以;结尾的一段代码,即为一个表达式
;
块
从{开始 到对应的} 结束,就是一个块