1、构造方法与普通方法的区别:
格式:public/private(修饰符)跟类名同名(无参,有参都可以){<语句块>} (这是一般格式)
特殊:public void 类名(无参,有参){}
类名 对象=NEW 类名();
对象.类名/方法名();
public int 类名(无参,有参){return ?;}
普通方法:
格式:public/private(修饰符)void/类型 方法名(无参,有参){《语句块》}
备注:普通方法和构造方法一共12种,放在Test2和Test3里面
2、方法输出总结:
(1)如果是void无返回值,必须在方法里面有system输出语句,然后在main方法里面,直接调用方法就可以,不用再用输出语句。
(2)如果是“类型”有返回值,必须在main方法里面有system输出语句,否则无法输出;方法里面必须有return关键字。
(3)不管是有或无返回值的方法,在方法里面都可以有system输出语句;(如果碰到有返回值的,system输出语句必须放在return的前面)。
(4)如果是无参构造方法有system输出语句,在main方法里面把类名new一个对象来,就可以输出了;比如:
Test t=new Test();
(Test是类名,t是这个类的对象,此时就可以输出无参构造方法里面的system输出语句)。
(5)如果是带有形参的构造方法,在方法里面不需要给return关键字,在main方法里面把类名new一个对象来,但必须跟上面的方法有同样形参个数,此时才可以输出;比如:
Test(int a,int b){
system.out.println(a+b);
}
Test t=new Test(2,3);
3、this关键字小小结:
作用:指向当前成员变量;
例子:
private int a;
Test(int a){
this.a=a;
}
此时的a是形参int a的变量,this.a的指向是成员变 量:private int a这个a里面的值;
4、get()和set()方法:(不要自己写,让它自动生成)
必须要有成员变量;
右键——source——找到get()和set()——点击确认;
如何运用这两个方法:
必须在main方法里面,先set()给它值,后从get()取值;
例子:
private int a,b;
set(),get();....
public static void main(String[] args){
Test t=new Test();
t.setA(100);
system.out.println(t.getA());
}
5、toString()方法:
作用:重写;
右键——source——找到toString()——点击确认;
如何用:
必须先有成员变量;
要有set()方法;
在main方法,直接调用toString();
例子:
private int a,b;
set();....
public static void main(String[] args){
Test t=new Test();
t.setA(10);
t.setB(20);
system.out.println(t.toString());
}
6、foreach(做为理解)
语法:for(变量类型 变量名:目标数组){《语句块》}
int[] a={1,5,8,2,6};
for(int b:a){
System.out.println(b);
}
优缺点:优点:遍历方便;缺点:没有下标,不能排序;
7、十种方法:
语法:修饰符(public/public static)+有/无返回值+方法名 (有/无形参){}
方法调用的规则:
1、如果是静态方法与静态方法之间的调用,直接在main方法里面调用,不需要new出来;
2、如果是非静态方法与静态方法之间的调用,必须在main方法里面new一个对象来,然后用对象.方法名;
3、如果是无返回值方法的调用,直接在main方法里面调用方法,不需要输出语句(System.out.println();)
4、如果是有返回值方法的调用,必须在main方法里面加上输出语句(System.out.println(对象.方法名);),才能够输出return后面的数据;
5、如果方法中带有形参,在调用时也必须带同样数量的形参且类型必须一样;
6、构造方法:方法名与类名一样,不需要有/无返回值的修饰,但可以用权限来修饰;
7、构造方法的调用:直接在main方法里面new出来即可。
1、内存分析:
栈内存和堆内存:栈内存,是临时存放空间,程序执行完就 消失;堆内存,永久存放空间(new 出来的对象),即使程序执 行完也不会因此而消失;
注意事项:内存分析里面,最怕就是不同对象,它的分配内存空间是不一样。
2、equals与==的区别:
equals:针对对象与引用类型(包装类型),其它八大基本类型不能用equals;
==:针对八大基本类型,其它不行;
格式:a.equals(b);
3、八大包装类型:
Integer,Byte,Short,Long,Character,Double,Float,Boolean
4、重载方法:
定义:方法名一样,形参类型或数量不同;
注意事项:有/无返回值的修饰,都不能改变它是同一个方法
5、权限:
private:类里面;
default/package:类或包里面;
protected:类、包或子类里面;
public :任何地方;
6、this,static关键字:
this三大特征:
指向当前类;可以用this调用本类的构造方法;
指向当前类的属性;
static:非静态的方法或变量不能调用静态的方法或变量;反之,可以;
7、继承:
特点:JAVA单继承;
关键字:class 子类 extends 父类/基类;
功能:子类继承父类里面所有成员变量和方法;
super的用法:
1、super.父类里面的方法;放在子类方法里面的任何地方;
2、super(a,b),父类里面带有参数的构造方法,此时在子类的构造方法里面必须放在首行;
重写方法:
定义:方法名和参数相同,
注意事项:如果父类有构造方法,那么父类的构造方法不会被代替掉而且是第一个输出的;如果子类重写了 父类里面的普通方法,此时父类里的普通方法不会被输出(被子类替代);
8、package/import
格式:package一定是放在程序首行;紧接着就是import,
三种写引包的格式:
com.自己想;
org.自己想;
文件路径;
1、面向对象的概念与思想:
面向对象看重结果与思维,“领导”,懂得分工协作!
2、前九种方法:
静态与非静态方法的调用;静态与静态方法的调用;
有/ 无返回值(无返回值:void,有返回值:返回类型,然后必须在方法体内加return);
3、重载与重写方法:
重载:在同一类,方法名一样,有无返回值类型不影响判断它是同一个方法,形参的个数或类型不同;
重写:以继承为前提,方法名和(形参个数和类型)必须一致;
4、构造方法:
方法名与类名一致,前面不允许添加修饰符(void/其他类型),对象被创建时,调用构造方法;
5、关键字:this,equals;
this:指向当前类;指向当前类的属性;可以使用this调用本类的构造方法;
equals:一般情况针对对象或引用类型,八大基本类型用“==”来判断;
格式:a.equals(b);(a,b表示同一类型,除八大基本类型除外);
6、权限:
public,protected,default/package,private;
7、继承:
extends : A extends B{};
特点:子类拥有父类所有属性及方法;重写;子类可以扩展其他属性或方法,要比父类强大;
super:super.父类的方法;super();(有关构造方法的调用)
8、多态:
三大条件:继承,重写,向上转型;
注意事项:在多态里面,除了重写方法(能调用到子类的重写方法,其他方法是调不到的);
特点:可扩展性强,方便方法的调用,能把父类的方法更彻底的运用;
9、对象转型:
向上转型:父类的引用指向子类;
向下转型:子类的引用指向父类;
例子:(A是父类,B是子类)
A a=new B();向上转型
B b=(B)a;向下转型
优缺点:向上转型是为多态服务,取不到子类的其他方法;
向下转型都可以调用到父,子类的方法,对象容易造成混乱(建议不使用);
10、抽象类:abstract;
位置:public后面,class前面;public abstract class..
抽象方法:public abstract void f();
注意事项:抽象类可以有变量,实例化的方法,未实例化的方法,抽象方法不能用static来修饰;
运行:抽象类必须被继承才能实例化方法;
要点:抽象类不一定有抽象方法,但有抽象方法的一定是象类;
11、关键字:Object(JAVA基类),toString();(格式,作用)
重写:@Override最好不要删除;
12、接口:
interface替代class;implements实现接口;
意义:弥补了JAVA里面只有单继承的不足;可以同时实现多个接口,并要实例化接口里面的方法;
注意事项:接口可以当作父类来看,存在多态(向上转型);
接口本身不能被new出来;
13、枚举:
enum替代class;
注意事项:构造方法的输出,枚举里面有几个常量方法(枚举对象),构造方法就要调用几次;如果重复创建枚举对象,构造方法不会重复再输出;