变量的定义
Java变量的定义在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。 这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。
简单来说就是在开发程序时,产生的临时数据所存放的内存单元,这些内存单元就叫做变量,给每个变量赋予一个不同的名字,名字就是变量名,也就是标识符。
变量的特点
- 变量的值可以不断地变化
- 变量是最基本的存储单元 变量类型、变量名、储存的值
- 是内存的一个存储区域
- 变量的所有类型都没有默认值,所以变量用之前必须初始化
- 变量必须声明在作用域内,在那里定义的就在那里用。不同的方法中就是不同的作用域(之后会有具体的分类,到时候再补充)
变量的数据类型
引用数据类型
1.数组([])
2.类(class)
3.接口(interface)
目前的阶段知道class类中的String(字符串类型)就行
基本数据类型
基本数据类型有四类,共八种
整形
1. byte型 (是计算机中的基本存储单元,bit是计算机中最小的存储单位)
2. short型
3. int型(Java开发中整形默认的数据类型)
4. long型(该类型的变量申明时,必须以L或l结尾;如果不写,编译不会报错但是会有精度损失,会以int型来计算)
浮点型
1. float型(单精度)(该类型的变量申明时,必须以F或f结尾;否则编译错误)
2. double型(双精度)(Java开发中小数的默认数据类型)
字符型
1.char型
(1)char型可以存储的值只能是一个字符(任何语言的一个字符),或是一个转义字符(例如'\n','\t'),或是一个字符在底层存储中相对应的数字(Unicode码,ASCII码)。
(2).char型不能赋空值(例:char a = '' 这样是不行的)
说明:每个字母,汉字,数字等在计算机存储的都是一个对子那个的数字,例如‘a’在计算机中储存的对应的数字是97,这个数字通常被称作ASCII码。(由于各个国家的语言字母不同,后来出现了Unicode,UTF-8等,详细参考以下两位前辈的文章)
参考:前辈的文章
布尔型
1.boolean型(只有两个值:true和false)
几种数据类型的关系
1 byte = 8 bit (取值范围:-128 ~ 127)
1 short = 2 byte(取值范围:-2^15^~2^15^-1)
1 int = 4 byte(取值范围:-2^31^~2^31^-1)
1 long = 8 byte(取值范围:-2^63^~2^63^-1)
1 float = 4 byte(虽然也等于4byte,但是比long的存储范围要大)
1 double = 8 byte
数据运算的自动类型提升
- 取值范围大的 + 取值范围小的,用取值范围大的数据类型接收
例如:int = byte + int - byte,short,char之间的运算结果用int接收
- boolean类型不能与其他数据类型计算
- String(引用数据类型—字符串)和其他数据类型进行结合运算(+)时,都以String类型接收
数据运算的强制类型转换
- 一般用于取值范围大的---->取值范围小的
缺点:精度损失
例如:
class DoubleIntTransfer
{
public static void main(String[] args)
{
double d = 787.12;
int i = (int)d;
System.out.println("double强转后:" + i);
}
}
运行结果:
double强转后:787
- 特殊的情况:例如int强转byte
class DoubleIntTransfer
{
public static void main(String[] args)
{
int i1 = 128;
byte b = (byte)i1;
System.out.println("int强转后:" + b);
}
}
int强转后:-128
解释:!
128的二进制是1000 0000,这个二进制正好是-128的补码,所以int型的128强转为byte时是-128
说明:
1. 计算机底层都是以二进制的补码来存储数据的,但是正数的原码,反码,补码都是一样的。
2. 二进制的最高位是符号位,正数:0;负数:1;
3. 当数据是负数的时候,
原码就是将正数的最高位变为1
反码就是将原码的1变为0,0变为1
补码就是反码+1