一、变量
1.了解变量之前的准备
所有软件的执行过程最主要的就是对数据的处理
软件在执行数据之前需要能够表示数据
表示数据就需要字面量
字面量有很多种:
整数型字面量:1,2,3
浮点数字面量:1.1,2.2,3.3
布尔型字面量:true(真),false(假)
字符型字面量:‘1’ , ‘a’ , ‘人’
字符串型字面量:“1”, “a”, “人类”
所有字符型需要单引号括起来,并且里面只能有一个字符;字符串型需要双引号括起来
但是如果只有字面量是不够的,只有字面量不能做到内存重复利用,这个时候就需要变量;
每创建一个字面量内存都是开辟一块新的空间,但是创建一个变量,每次使用变量都是指向同一个空间
2.什么是变量
变量其实是内存中存储数据最基本的单元
在java中所有数据都是有类型的,不同类型的变量,Java虚拟机会为其分配不同的内存空间
对于一个变量来说,需要注意三大要素
变量的数据类型:决定空间大小
变量的名字:方便以后访问
变量中保存的值: 保存数据
变量也是属于标识符:
首字母小写,后面每个单词首字母大写,驼峰命名,见名知意
3.变量的声明
数据类型 变量名
变量必须先声明再访问
在同一个class中变量名不能重名
4.变量的分类
(1)在方法题中声明的变量:局部变量(只在方法体中有效,方法执行后就释放)
(2)在方法体之外,类体之内声明的变量:成员变量(class下,main上)
5.变量的作用域
(1)什么是作用域
变量的有效范围(出了大括号就不认识了,以及就近原则)
二、数据类型
1.数据类型有什么用
数据类型就是用来声明变量的
2.数据类型的分类
(1)基本数据类型
1)整数型:byte、short、int、long
2)浮点型:float、double
3)布尔型:boolean
4)字符型:char
java中除了基本其他都是引用
(2)引用数据类型
字符串型String以及其他
3.基本数据类型的区别
(1)所占的字节不同(输出形式)
byte:1个字节(1)
short:2个字节(1)
int:4个字节(1)
long:8个字节(1L)
float:4个字节(1.1F)
double:8个字节(1.1)
boolean:1个字节(true/false)
char:2个字节(‘a’)
任何一个浮点型都比整数型空间大
任何一个
4.字符编码
因为char表示文字,每个国家有不同的文字,计算机表示起来麻烦,所以就需要一套字符编码来规定 (相当于字典)
字符编码涉及到编码和解码,如果编码和解码不一致会出现乱码
常用的字符编码
‘a’:97
‘A’:65
‘0’:48
三.转义字符
1.常用转义字符
‘\t’:表示tab
‘\n’:表示换行
‘’’:表示’
\转义的是后面的字符
\u+…表示一个字符的unicode编码
unicode编码是十六进制的
扩展
在任何情况下,整数型的"字面量/数据"默认被当作int类型处理,如果希望该字面量被当作long,需要加L
任何情况下,浮点型数据默认被当作double来处理,如果相当float需要加F/f
小容量转换为大容量被称为自动类型转换
大容量转换为小容量被称为强制类型转换(代价是有可能损失精度)
当整数型字面量没有超过byte,short,char取值范围的时候可以直接赋值(这种语法是为了方便存在的)
多种数据类型混合运算的时候,各自先转换成容量最大的那一种再运算
当一个整数赋值给char的时候,会自动转换为char字符型
(计算机底层知识)(不需要看)
计算机在任何情况下都只能识别二进制
计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”,原因是补码形式效率最高
什么补码
二进制有:原码 反码 补码
对于一个正数来说,二进制原码、反码、补码是同一个,完全相同
int i = 1;
对应的二进制原码:00000000 00000000 00000000 00000001
对应的二进制反码:00000000 00000000 00000000 00000001
对应的二进制补码:00000000 00000000 00000000 00000001
对于一个负数来说:
byte i = -1;
对应的二进制原码:10000001
对应的二进制反码:(符号位不变,其他未取反)11111110
对应的二进制补码:(反码+1)11111111
因此可以通过一个二进制补码形式,采用逆推导的方式推算出这个二进制补码对应的原码是多少
例子:先算出一个数字的的二进制,然后减一,然后取反,然后如果第一位是1是负数,0是正数,其他位相加得出的数