变量
什么是变量
内存中的一个储存区域
该区域有自己的名称(变量名)和类型(数据类型)
通过变量名来访问这块区域的
个人理解:把变量比喻为一个个大小种类不同的箱子(数据类型),不同的箱子可以装不同的东西(变量的值)。例如装易碎物品的箱子内层要有泡沫,装大件用大箱子;要区分箱子就要给箱子命名(变量名)。
使用变量要注意什么?
变量的作用域:一对{}之间,出包含它最近的大括号就不能用了
初始化值
定义变量的格式是什么?
数据类型 变量名 = 初始化值
int x = 0;
变量类型
按数据类型分
基本数据类型
数值型
整数类型 byte short int long
浮点类型 float long
字符型 char
只能表示一个字符
布尔型 boolean
只能取true或false,不能取null
引用数据类型
类 class(字符串是类)
接口 interface
数组 []
按声明位置分
成员变量:在类的内部,方法或代码块的外部声明的变量
实例变量(不以static修饰)
类变量(以static修饰)
局部变量:在方法或代码块的内部声明的变量
形参(在方法签名的参数列表中声明)
方法局部变量(在方法内部定义的变量)
代码块局部变量(在代码块内部定义的变量)
二者异同:
同:都有生命周期
异:局部变量除形参外,其余需显示初始化;生命周期不同
(扩展:局部变量如果不显示初始化也不会报错,但是接下来除了赋值这种初始化操作,其余操作皆不能进行)
基本数据类型
整数类型
类型 | 占用空间 | 取值范围 |
---|---|---|
byte | 1字节=8bit | -2^7 ~ 2^7-1 |
short | 2字节 | -2^15 ~ 2^15-1 |
int | 4字节 | -2^31 ~ 2^31-1 |
long | 8字节 | -2^63 ~ 2^63-1 |
定义long型变量,末尾加“L”或“l”
long l1 = 123;//没有加l,因为123默认为int型,4个字节可以往8个字节转化,所以不报错,自动类型转化,容量小的类型可以向容量大的类型转化
浮点类型
类型 | 占用空间 | 取值范围 |
---|---|---|
float | 4字节 | -3.403E38 - 3.403E38 |
double | 8字节 | -1.798E308 - 1.798E308 |
定义float型常量,末尾需加“f”或“F”
字符型
char型数据用来表示通常意义上的“字符”(占2字节)
char c1 = 'a';//只能表示一个字符(中文、英文,标点符号,转义字符......)
char c2 = '\t';//一个转义字符也是一个char。
\b退格符 \n换行符 \r回车符 \t制表符 \"双引号 \'单引号\\反斜线
直接使用Unicode值来表示字符型常量:'\uXXXX',其中XXXX表示一个16进制整数。如:\u00a表示\n
char类型可以进行运算,因为它都有对应的Unicode码
布尔型
只能取true或false,不能取null,占用1bit,也就是1/8字节
适用于逻辑运算,一般用于程序流程控制
if条件控制语句
while循环控制语句
do-while循环控制语
变量之间的运算
(除boolean。剩下byte short int long float double char之间的运算)
自动类型转换
当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动转化为容量大的数据
char,byte,short --> int --> long --> float --> double
char,byte,short之间相互做运算时(包括自己和自己),默认的结果为int类型
强制类型转换
容量大的转化容量小的。要使用强制类型转化符:()
强制类型转化的问题:导致精度的损失
平时常用的字符串,也是一种数据类型:String
字符串与基本数据类型之间的运算:只能是连接运算:+,得到的结果仍为一个字符串
//题目:
String s1 = "hello";
int i1 = 12;
char c1 = 'a';//97
System.out.println(s1 + i1 + c1);//hello12a
System.out.println(s1 + c1 + i1);//helloa12
System.out.println(i1 + s1 + c1);//12helloa
System.out.println(c1 + s1 + i1);//ahello12
System.out.println(i1 + c1 + s1);//109hello
编码
ASCII码
Unicode码
UTF-8
进制
二进制、十进制、八进制、十六进制
原码、反码、补码
正数:原码、反码、补码都一样
负数:
反码:除符号位,各位取反
补码:反码+1
计算机以反码的方式存储
二进制与十进制转换
二进制与八进制、十六进制的转换