目录
1.关键字
instanceof
- instanceof运算符是Java独有的双目运算符,其左面是操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false。
super
- 子类一旦隐藏了继承的成员变量和方法,那么子类创建的对象就不再拥有该变量和方法,该变量和方法将归关键字super所拥有。
- 由于子类不继承父类的构造方法,因此子类在其构造方法中需使用super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句。
final
- 修饰类:final类不能被继承,即不能有子类,不能成为父类
- 修饰方法:修饰的方法不允许被子类重写(不可修改)
- 修饰常量:如果成员变量或局部变量被修饰为final,那就是常量。
abstract
- abstract类:(1)abstract类中可以有abstract方法,也可以没有(非abstract类不可以有abstract方法)(2)abstract不能被new(3)abstract子类必须重写abstract 方法(4)abstract类声明对象,尽管不能使用new运算符创建该对象,但该对象可以成为其子类对象的上转型对象,那么该对象就可以调用子类重写的方法
- abstract方法:abstract方法只允许声明,不允许实现。而且不允许使用final和abstract同时修饰一个方法或类。也不允许使用static修饰abstract方法,即abstract方法必须是实例方法。
2.数据类型
数据类型分为两大类:基本数据类型、引用数据类型。
基本数据类型又分为:逻辑、整数、字符、浮点类型。
引用数据类型又分为:类、接口、数组。
3.类型转换运算
当把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及数据转换。
各数据类型按精度从低到高的排列:
byte short char int long float double
就会出现两种情况:低精度->高精度、高精度->低精度
低->高:
当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
int y=3;
double x=y;
高->低:
当把级别高的变量的值赋给级别低的变量时,必须使用类型转换运算。
例如:int x=(int) 3.49; x的值将等于3。
4.数组
- 创建数组需要经过声明数组和为数组分配变量两个步骤
- 构成二维数组的一位数组不必有相同的长度
- 对于二维数组“数组名.length”的值是它含有的一维数组的个数
- 创建数组后,系统会给数组的每一个元素一个默认的值,float型是0.0
- 两个相同类型的数组如果具有相同的引用,他们就有完全相同的元素
5.运算符
这里可能要注意一点的是:逻辑运算符&&和||也称作为短路逻辑运算符。如何来理解“短路”二字?
例如:p1=false;p2=true; 当进行p1&&p2运算时,计算到p1为false时,就直接给出结果时false了,不会去计算p2到底是true还是false了。当进行p2||p1运算时,因为p2为true,所以直接给出结果true,不会计算p1的值。(p1,p2可以看作是表达式)
计算混合运算的精度:
在一个表达式中,如果最高精度是双精度/单精度/long/int 时,此时表达式就是按双精度/单精度/long/int 进行运算。
若在一个表达式中,最高精度低于int型整数,则按int 精度进行运算。
按位与运算:
运算法则是:如果两个数据对应都是1,则是1。否则是0。(转二进制的对应数)
按位或运算:
运算法则是:如果两个数据对应都是0,则是0。否则是1。
按位非运算:
运算法则:对应位是0则是1,否则0
按位异或运算
运算法则:如果两个数据对应位相同,则是0,否则是1。
如果c=a^b,那么a=c^b。也就是说,^的你运算符仍然是^,即a^b^b等于a。
6.语句
几点我自己需要注意的:
1.if语句的括号里面只能是Boolean类型。不能是int类型。一直认为是可以的,可能是受C++的影响?
2.switch语句中表达式的值可以是byte、short、int、char型,但不可以是long型数据。
3.JDK1.5对for语句的功能给予补充、增强。
for(声明循环变量:数组的名字){
}
注意声明二字,变量必须在括号里面声明,不能使用在括号外声明的变量
4.java没有foreach。