一、数组
二、运算符
三、包
四、继承
五、访问权限
六、final与static
一、数组
要使用Java的数组,必须经过声明数组和分配内存这两个步骤,如:
int[] a; //声明一个数组的引用
a = new int[10]; //为数组分配内存空间,并且将数组的引用指向堆中的对象
也可以将这两个步骤在一个语句中实现,如:
int[] b = new int[10];
二维数组的使用,如:
int[][] c = new int [2][3];
不定长二维数组的使用,如:
int[][] d = new int [2][];
d[0] = new int[5];
d[1] = new int[6];
数组的默认初始化:
int :0
引用变量 :null
boolean : false
char : null
二、运算符
1.一元运算符: '.' , '+' , '-' , '++' , '--' ,'!'
2.二元运算符,算术运算符:'+' , '-' , '*' , '/' , '%'
注:%,-5%2 表达式结果的正负与被除数符号一致,与除数符号无关
算术运算符的操作数最小的类型为int型,如果类型小于int型(如byte,short),则会暂时提升为int类型。
3.强制类型转换,如:
int i = 5;
byte b = 0;
b = (byte)i;
将大类型的强制转化为小类型的数,若有越界,则会截取大数的后八位
将float类型转化为int类型,直接将小数部分去掉。
算术运算中的强制类型转换例子:
byte b1,b2;
b1 = b1 + b2;//错误,由于算术运算中操作数的最小类型是int,如果低就提升,等号右边的数据被提升为int类型,不能直接赋值给byte类型
b1 += b2;//正确,此时包含了自动强制类型转换
5.位运算符
注:当移位的长度超过数据长度,则自动将移位长度%数据长度,如:5>>33 等价于 5>>1(33%32=1)
6.关系运算
(1)‘&’,‘^’,‘|’(与,异或,或)其优先级:与>异或>或,接受整数类型的数据(位运算)和布尔类型的数据。
(2)‘&&’,‘||’(短路与,短路或)只接受布尔类型的数据。
(3)instanceof ,例:a instanceof b 表示对象a是类b的一个实例,当然,也接受b的子类的实例。
▲&,|与&&,||的区别
( 1 )对于与操作来说,如果第一个条件为假,则后面条件不管是真是假,最终的结果都是假。
(2)对于或操作来说,如果第一个条件为真,则后面条件不管是真是假,最终的结果都是真。那么也就是说对于与和或来说, 第一个条件就是一个关键性的条件, 所以在Java中设置了短路与和短路或, 所以对于短路与和与、 短路或和或就有以下两点区别:(1)对于与来说,要求所有的条件都判断,而如果使用短路与,第一个条件又为false, 则后面的条件将不再判断。(2)对于或来说,要求所有的条件都判断,而如果使用短路或,第一个条件又为true; 则后面的条件将不再判断。
7.选择运算符 ?: ——唯一的三元运算符
a?b:c ;若a为true,表达式结果为b,若a为false,表达式结果为c。其中,b和c有类型转换关系。如:
a?4:3.14; 若a为true,表达式结果为4.0,自动转换为和后边类型一致的double类型。
三、包
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间,解决命名冲突问题。
package语句位于源文件中的第一行,import语句位于package后(解决包名冗余问题)。
包的层次结构对应文件夹的层次结构。
四、继承
Object类是一切类直接或间接继承的类。
子类继承父类所有特征,继承采用extends关键字。
Java中没有公有,私有,保护继承之分,全部都是公有继承。
五、访问权限
(1)public
(2)private
(3)protected:通过继承来访问,子类可以访问从父类继承来的属性,不能通过父类来访问父类的保护成员数据
(4)什么都不写 :同包权限
六、final与static关键字
(1)final修饰数据,则表示其不能再被修改;final修饰函数,则表示该函数不能再被覆盖;final修饰类,则表示该类不能再有派生类,即不能被继承;
(2)static修饰类的数据成员或成员函数,则该数据成员或成员函数依附于该类,而不是类对象。可以通过类来访问,不需要通过类的实例来访问。
注:修饰符没有顺序之分。
程序的入口函数(定义在某个类中),一般这样声明:public static void main(){}
在一个类中声明全局常量:public final static int i = 5;