变量的作用:
- 程序中使用变量可以接收、保存、传递、操作数据
- 变量的类型和数据的类型必须是一致的
- 如果类型不一致,那么就需要进行类型转换(自动转换、手动转换)
变量的使用:
- 必须是先声明、再赋值、再使用
- 也可以声明变量的同时就进行赋值,然后再使用
- 如果只声明变量,没有赋值,那么再使用的时候会报错
变量的种类:
-
通过类型划分
基本类型变量(byte short int long float double char boolean)
引用类型变量(类类型、接口类型、数组类型) -
通过范围划分
局部变量
实例变量
注意,在不同的情况给一个变量可以赋不同的值,那么这个变量就可以表示不同的数据,也就是
说,随着程序的运行,变量所表示的值,是可以随时发生变化的
public static void main(String[] args) 中 args也是局部变量
局部变量不初始化 不能使用,但是实例变量有默认值,可以不初始化
但是args会在jvm调用的时候被赋值
局部变量的作用范围:
- 变量都是有作用范围的,超出这个范围,变量就不能使用了
- 局部变量被直接包裹的大括号中,从这变量声明开始,一直到这个大括号结束
实例变量是默认值的,即使声明完,不赋值,它也是有一个默认的值:
不同类型的实例变量,它们的默认值是:
byte类型,默认值为0
short类型,默认值为0
int类型,默认值为0
long类型,默认值为0L
float类型,默认值为0.0F
double类型,默认值为0.0D
boolean类型,默认值false
char类型,默认值是’\u0000’
引用类型,默认值是null
实例变量的作用范围是当前类中所有的 非静态 方法中,都可以访问。
作用域总结
局部变量
1 除了类以外的其他方法;方法的参数
2 使用前必须初始化
3 声明的位置开始到所在的大括号}结束
实例变量
1 定义在类中的变量
2 使用之前,也是进行了初始化的;(jvm)创建实例,才使用实例变量。有默认初始化的值。
类中定义完之后,类中的其他方法使用,仅仅是类中定义而已,除非实例化类(真正的使用)
3 创建出的实例消失,实例变量消失
操作符
= 赋值操作符
i++ ++i(先参与运算还是先参自加)
比较运算符的表达式用boolean接收
instanceof 判断对象是否属于指定类型
Person o = new Person();
//表示引用o所指向的对象,是不是属于Person类型
System.out.println( o instanceof Person );
移位操作符和位运算符
>> 算术右移位运算,也叫做【带】符号的右移运算 补符号位
<< 左移位运算 补0
逻辑右移位运算,也叫做【不带】符号的右移运算 补0
& 与运算 1&1=1,1&0=0, 0&1=0, 0&0=0
| 或运算 1|1=1,1|0=1,0|1=1,0|0=0
-
^ 异或运算 1^1=0, 0^0=0, 1^0=1, 0^1=1,相同为0,不同为1
- 取反运算 0 -> 1 ,1 -> 0
&& 短路与 一假则全假
|| 短路或 一真则全真
条件操作符 也可以称为三目运算符
boolean表达式 ? 表达式1 : 表达式2
类型转换:
基本类型:
隐式转换
窄类型转宽类型
显示转换
手动转换/强制转换(会有丢失精度的风险)
引用类型
隐式转换(Implicit)子转父
显示转换 (略)
流程控制
条件控制
if else else if
switch case
循环控制
for
while
do while
其他控制
switch(val)val默认int或char或String(jdk1.7以上)(只接受int short byte char)
循环语句:
for while do-while
基础语法整合:
注释
标识符
关键字与保留字
数据类型(基本数据类型,引用数据类型)
变量 数据类型 变量名 = value;//声明并且初始化
数据类型不同:
基本类型的变量: int i;(基本数据类型)
引用变量:String s;(引用数据类型)
作用范围不同:
局部变量:
class Test{
方法(){
数据类型 变量名;
}
}
作用范围(方法内)
实例变量:
class Test{
数据类型 变量名;
方法(){
}
}
作用范围(Test类内)
【创建实例之后,通过实例对象的引用使用】
Test t = new Test();
t.变量名;
jvm创建实例之后,会有默认初始值(初始化)
操作符 = == + - * / % < > >= <= instanceof
变量 instanceof 引用类型
<< >> >>> | & || && ^ ~
三目运算符
流程控制语句
switch(byte int short char string 枚举)//注意枚举类型也可以