JAVA基础知识笔记
1、类只能用Public修饰,不能使用protected、private修饰。也可以不加修饰符,称做友好类。
2、类的实体元素包含成员变量和方法的定义,成员变量分为实例变量和类变量(static修饰的变量),方法分为实例方法和类方法(static修饰的方法)。
3、类里面定义的变量称为成员变量,方法里面定义的变量以及方法的参数定义的变量称为局部变量。
4、类方法(static修饰的方法)只能操作成员变量的类变量,而实例方法既可以操作成员变量的实例变量,又可以操作成员变量的类变量。
5、方法的定义: public void 方法名(){ } 方法必须含有返回类型void/string/int等等(构造方法除外)
6、每个类都有构造方法,构造方法的方法名与类名相同,并且没有类型(返回类型),如果类中没有自己声明构造方法,类会创建自己默认的构造方法,如果类中创建了构造方法,则系统不再创建默认构造方法。
7、使用类名进行声明对象:class name; 使用new 关键字和类的构造方法为对象分配内存空间。 name=new class();
8、package 关键字,声明包 package 包名; import 关键字,import name; 导入包中的类,name命名使用标识符,或者多个标识符使用 . 连接。
9、方法和变量可以使用public(公共的)、protected(受保护的)、private(私有的)修饰符修饰,也可以不加修饰符,称作友好方法、友好变量。
10、权限:public>protected>友好的>private。
11、public 类型的类(公共类),不同的包里面的类可以调用。
private类型的方法和变量,在定义的对象中不能调用操作。
protected类型的方法和变量与友好的(不加类型)方法和同一个包里面可以互相调用,但是不同的包之间的两个类,不能互相调用。
public类型的方法和变量,可以互相调用。(此处看不出protected类型与友好类型的区别,后面在继承方面可以发现区别)
类内部 本包 子类 外部包 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × ×
12、重载:一个方法可以通过(参数的个数或(和)数据类型的不同)来实现函数重载。方法的类型(返回类型和参数名称不参与比较),例如两个方法的名称相同,即使类型不同,也要保证参数的个数或(和)数据类型不同。 包含多个参数的话,参数的数据类型不同,改变参数顺序也可以实现重载。
重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。
13、继承(extends)语法是: class 子类名 extends 父类名{ }
如果一个类的声明中没有使用extends关键字,这个类被系统默认为是Object的直接子类,Object是java.lang包中类。
14、子类与父类在同一个包中,子类继承了父类中不是private类型的成员变量和方法。
子类与父类不在同一个包中,子类继承了父类中public、protected类型的成员变量和方法,不能继承友好变量和友好方法。
15、成员变量的隐藏和方法的重写。子类继承父类的成员变量和方法,如果子类自己定义的成员变量和父类的成员变量同名时,子类就隐藏了父类的成员变量。如果子类自己定义的方法和父类的方法同名,同时参数个数和数据类型、返回类型完全相同,就是将方法重写。通过方法的重写可以隐藏继承的方法。子类重写父类方法时,不可以降低方法的访问权限。例如父类方法是protected类型,重写方法不能是友好类型方法,可以是public类型方法。
16、final关键字,final可以修饰类、成员变量、方法、方法参数。
final修饰类,则该类不可以被继承。
final修饰方法,则该方法不可以被重写。
final修饰成员变量,则该变量就是常量,必须赋给初值,而且不能再发生变化。
17、上转型对象。子类创建对象的引用可以放到父类的对象中,就得到了该对象的一个上转型对象。
18、多态。父类的某个方法被子类重写后,可以产生自己的功能行为。多态是在继承的基础上体现的,没有继承就谈不得多态。
19、super关键字。子类覆盖了父类的成员方法,或者重写了父类的方法,可以在子类中,使用super调用父类的方法和成员对象。--需完善
20、abstract关键字。用abstract关键字修饰的类是抽象类,抽象类可以拥有抽象方法,抽象类里面的抽象方法只能声明,不能实现。抽象类不能被new对象,只能通过子类继承调用,子类里面需要覆盖抽象父类的抽象方法。抽象类只能是Public、protected类型,也只能这样才能被继承调用。抽象类里面的成员变量是静态常量,不能被改变。
抽象类的抽象方法一定不能有实现(也就是不能有大括号),子类必须要override覆写抽象方法,从而让继承类的行为有一定规范;抽象类的方法不一定都是抽象方法,但抽象方法所在的类必须是抽象类;抽象类不能实例化,抽象类的继承类被实例化后可以直接调用抽象类的方法(抽象方法除外,抽象方法被继承类 override),不希望实例化而直接调用方法就可以用抽象类;
21、interface关键字。定义接口interface name。接口里面的方法只能声明,不能实现。接口不能使用new对象,只能通过被“实现”,“实现”子类必须实现接口声明的方法,一个类可以实现多个接口。使用implement实现接口。
22、内部类。类的内部声明类,子类可以使用外面类的成员变量和方法,外面类可以实例化内部类的对象。
23、匿名类。使用类声明对象时,可以重写父类里面的方法。class name=new class(){};
24、逻辑运算符。
& &&
无论长路与还是短路与
两边的运算单元都是布尔值
都为真时,才为真
任意为假,就为假
区别
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了
| ||
无论长路或还是短路或
两边的运算单元都是布尔值
都为假时,才为假
任意为真,就为真
区别
长路或 两侧都会被运算
短路或 只要第一个是true的,第二个就不进行运算了
!
取反!
真变为假
假变为真
^
异或^
不同,返回真
相同,返回假
三元操作符 表达式?值1:值2 如果表达式为真 返回值1如果表达式为假 返回值2
int k = i < j ? 99 : 88;
// 相当于
if (i < j) {
k = 99;
} else {
k = 88;
}