目录
一、对象和类
Java中的对象
•Java语言中的对象是对现实世界中对象的模拟,现实中的对象存在于现实生活中,Java语言中的对象存在于计算机内存中。
•Java语言中的对象又称为实例。
Java中将现实对象中的信息称为属性(也叫全局变量)。
Java中的“类”
•Java语言把一组对象中相同属性和方法抽象到一个Java源文件就形成了类。
如何定义类
定义一个类的步骤:1、定义类名;2、定义类的属性;3、定义类的方法
对象的创建和使用
类与对象
•类是创建对象的模板,确定对象将会拥有的属性和方法。
•类是对象的抽象化;对象是类的具体化。
•类是一种数据类型,是对象的数据类型(不同于int等基本类型:类具有方法)
面向对象与面向过程
•面向对象是一种编程思想,这种编程思想凸显对象在编程过程中的重要作用。什么是面向对象呢?简单的说就是让对象成为类与类之间的“通信”的桥梁,通过对象使类之间形成有机的整体。
•面向对象编程语言以对象为中心,以消息为驱动,即程序=对象+消息;
注:消息指方法的调用:Java使用向方法传递参数的方式实现向方法发送信息;并通过返回值从方法中获取信息。
•面向过程编程语言则以过程为中心,以算法为驱动,即程序=算法+数据;
二、方法与重载
方法用于定义类的某种行为(或功能),其语法结构如下:
访问控制符 [修饰符] 返回值类型 方法名( [参数] ) {
//方法体
}
• 控制符——方法中的访问控制符用于限制方法在其他类中的使用范围。
访问控制符分为四种:public、protected、友好的和private。
•修饰符——static修饰符用于限制方法的调用方式:
1、static修饰的方法可以直接使用类名调用也可以使用类创建的对象调用;
2、非static修饰的方法只能使用类创建的对象调用。
其它常用方法修饰符有final和synchronized
•返回值类型——如果方法没有返回值,需要用void表示;
方法返回基本数据类型的数据,则返回值类型必须是返回数据所属的数据类型或者精度更高的数据类型(针对于数值类型的数据);
方法返回引用数据类型的数据,则返回值类型必须是返回数据所属的数据类型或者其父类;
方法如果有返回值,则必须借助return关键字将数据返回。
•方法名——遵循标识符命名规则;首字母必须小写,如果由多个单词组成,从第二个单词开始首字母必须大写;方法名一般由一个动词或者动名词构成。
•参数——方法可以有多个参数,各个参数之间用逗号(,)间隔;
方法的参数在整个方法内有效;
方法参数前面的数据类型用于限制调用方法时所传具体数据的数据类型。
动态参数——1、动态参数实质为数组;
2、动态参数必须位于参数列表的最后;
3、一个方法只能有一个动态参数。
如下动态参数实例:
方法递归
public class Test{
/**
* 求n的阶乘
*/
static long factorial(int n) {
if(n == 1) {//判断条件,一旦满足就不再递归,逐层返回
return 1;
}else{
return n*factorial(n - 1);
}
}
public static void main(String[] args) {
System.out.println(factorial(5));
}
}
注意:
1、在递归调用中,主调方法同时也是被调方法;
2、递归的关键是有结束递归的时机。
方法重载
同一个类中有多个方法名相同但参数列表不同的方法,这种现象称为方法重载(overload)。
其中参数列表不同包括以下情形:1、参数的个数不同; 2、参数的对应类型不同。
•注意:
1、参数列表不同并不包含参数名不同,也就是说如果方法名相同,方法中参数个数和类型相同,只是参数名不同,这样也不能称之为方法重载。
2、方法中其它构成部分不参与比较:访问控制符、修饰符、返回值类型。
•一个类中有多个同名方法(构造方法或普通方法),在调用这些方法时,到底调用哪个方法取决于调用方法时传入的参数的数据类型和个数。
public class Teacher {
//参数类型的顺序不同,也能构成方法重载。
public static void print(int age, String name) {
System.out.println(age + "," + name);
}
public static void print(String name, int age) {
System.out.println(name + "," + age);
}
public static void main(String[] args) {
print(33, “王小红”);// 依次传入int类型和String类型数据,所以调用第一个方法
print("王小红", 33);//依次传入String类型和int类型数据,所以调用第二个方法
}
}
三、代码块
•Java中代码块分为静态代码块和非静态代码块
静态代码块只在类加载时执行一次;
非静态代码块每次创建对象时都会执行。
如下面实例:
public class Test{
static{
System.out.println("static静态代码块。");
}
{
System.out.println("非静态代码块");
}//不能在方法外部直接写程序逻辑代码,因此即使是非静态代码块也要用{}括起来。(即代码块)
public static void main(String[] args){
new Test();
new Test();
}
}
//输出结果为:
//static静态代码块。
//非静态代码块
//非静态代码块