1、数据类型分类
int [] arry = new int [4];
System.out.println(arry[5]);
//数组越界异常 :ArrayIndexOutOfBoundsException
2、包装类
简单类型 | byte | char | short | int | long | float | double | boolean |
---|---|---|---|---|---|---|---|---|
包装类 | Byte | Character | Short | Integer | Long | Float | Double | Boolean |
- 简单类型直接存储堆栈,对应的引用类型封装了许多方法,可实现额外的处理功能。
包装类的转换
通过装包和拆包操作可以实现简单数据类型和引用数据类型之间的转换。
装包:将简单类型包装成对应的包装类
(1)调用方法:valueOf()
(2)如果-128<=X<=127,直接缓存;如果大于这个范围,直接new Integer 来创建 Integer对象。
拆包:将一个包装类的实例对象转换成一个简单类型。
方法: intvalue doublevalue
Integer a = 10;//装包
int i = a;//拆包
double d = a.doubleValue();//10.0
Integer c = Integer.valueOf("123")//123
//对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true
//如果两个变量的值不在此区间,则比较结果为false
Integer i1 = 100;
Integer i2 = 100;
System.out.println(i1 == i2);//true
System.out.println(i1.equals(i2));//true
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
//Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true
//包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true
//两个通过new生成的Integer变量永远不相等(new生成的是两个对象,其内存地址不同)。
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
3、JDK JRE JVM关系
JDK(Java Development Kit)Java开发工具包,主要包含了JRE、JVM等。
JRE(Java Runtime Environment)Java运行时环境,包括JVM以及Java基础API。
JVM(Java virtual Machine)Java虚拟机,是Java程序跨平台的关键。
4、变量和常量
变量分为实例变量、静态变量和局部变量。
int a; //实例变量——堆
static int b; //静态变量:不属于对象 ,只属于类本身 ——方法区
void fun() {
int c = 10; //局部变量 ——虚拟机栈
System.out.println(c); //局部变量使用必须初始化,输出为10
System.out.println(a); //输出为0
System.out.println(b); //输出为0
}
//变量名可以由字母、数字、下划线(-)和美元符号($)组成
//变量名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写
int a = 10;
int $a = 10;//不能用$字开头
int a3 = 10;//不能用数字开头
int a_b = 10;
//常量名所有字母都大写,单词之间用下划线连接
final int B; //B叫做常量:第一次赋值之后,不能改变他的值
B = 10;
System.out.println(B);
final int MONEY = 100000;
//常量:在编译的时候统一进行处理
//变量:在运行的时候才能知道他的值
5、运算符
- 增量运算符(++)
- ++a运算结果是操作数加1后的值
- a++运算结果是操作数加1前的值
- 按位与(&)
11&13 0000 1001 - 按位或(|)
11|13 0000 1111 - 按位异或(^)
11^13 0000 0110 - 按位取反(~)
11 ——0000 1011
~11——1111 0100 - 左移(<<)
11<<1——0001 0110——22——112
11<<2——0010 1100——44——114 - 右移(>>)
11>>1——0000 0101——5——11/2
11>>2——0000 0010——2——11/4- 左移乘法
- 右移除法(符号位是啥补啥)
- 无符号右移只补0
- -1>>>1——0111 1111
- 短路与(&&)
- 短路或(||)
// %为取模运算符
System.out.println(-10%3);//-1
System.out.println(-10%-3);//-1
System.out.println(10%-3);//1
System.out.println(10%3);//1
// /——除运算符
float f1 = 5/2;//2.0
float f2 = (float)(5.0/2);//2.5
float f3 = (float)5/2;//2.5
float f4 = 5/(float)2;//2.5
int a = 1;
++a;
System.out.println(a);//2
int b = ++a;
System.out.println(a);//3
int a = 1;
a++;
System.out.println(a);//2
int b = a++;
System.out.println(b);//2
a = a++;
System.out.println(a);//3