欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Java基础学习笔记】5、类、对象和方法

程序员文章站 2022-04-19 15:20:07
面向过程:注重事情的每一步。面向对象:只关注对象,以及对象的功能。文章目录一、类(1)什么是类?(2)类里面有什么?Ⅰ.成员变量Ⅱ.局部变量Ⅲ.构造方法this关键字Ⅳ.内部类二、对象(1)什么是对象?(2)对象的创建三、方法(1)什么是方法?(2)方法的优点(3)一、类(1)什么是类? 类是一系列具有相同特点的事物和行为的抽象集合。狮子、金鱼、天鹅之间有很多不同,但是由于它们都是动物,所以可归为动物这一类。类是抽象的,生活中可以实际接触到的都是类实例化之后的对象。(2)类里面有什么?Ⅰ.成...

面向过程:注重事情的每一步。
面向对象:只关注对象,以及对象的功能。


一、类

(1)什么是类?

 类是一系列具有相同特点的事物和行为的抽象集合。狮子、金鱼、天鹅之间有很多不同,但是由于它们都是动物,所以可归为动物这一类。类是抽象的,生活中可以实际接触到的都是类实例化之后的对象。

(2)类里面有什么?

Ⅰ.成员变量

 声明在类中, 不需要初始化(有默认值)。
 成员变量就好比类的特点,狮子、金鱼、天鹅作为动物都有其体重、寿命等等,这些特点就是动物类的成员变量。
常用数据类型的默认初始值:
boolean类型:false
char类型:null
byte类型:(byte)0
short类型:(short)0
int类型:0
long类型:0L
float类型:0.0f
double类型:0.0d

Ⅱ.局部变量

 声明在方法中, 必须初始化(赋予初值)。
 局部变量的作用域仅在方法或代码块内,当方法被调用后或代码块被加载后,局部变量便开始被创建使用,方法调用结束或代码块结束,局部变量便被销毁。假如方法调用是一场考试,局部变量就好比监考老师分发的草稿纸,在考试期间(方法调用)进行使用,考试结束(方法调用结束)后便被收回(销毁)。
代码示例:

public static void main(String[] args) {
        func();
    }
    public static void func() {
        int a=10;//a为局部变量
        System.out.println("调用了方法,使用局部变量,值为:"+a);
    }
    //代码写在同一个类中

结果如下:
【Java基础学习笔记】5、类、对象和方法
同样的代码,如果在主方法中尝试输出变量a,就会发生错误。
代码示例:

public static void main(String[] args) {
        func();
        System.out.println(a);
    }
    public static void func() {
        int a=10;
        System.out.println("调用了方法,使用局部变量,值为:"+a);
    }
    //代码写在同一个类中

结果如下:【Java基础学习笔记】5、类、对象和方法
这是因为a为局部变量,其生命周期无法延伸至方法外。

Ⅲ.构造方法

 在声明一个类之后,在将其实例化时,有时需要给其成员变量赋初值,而在创建之后再挨个赋值会比较麻烦,这时可以使用类的构造器,也叫构造方法。它的作用就是给类的成员变量初始化,当我们调用构造方法时,可以根据需要输入对应的值,来初始化其成员变量。
 特点: 方法名和类名一致, 没有返回值类型。
public 类名 (参数类型1 参数1,参数类型2,参数2…){
     赋值过程
}
 构造器可以不写, 也可以写多个。当没有写构造器的时候, 编译器会自动给我们提供一个无参构造器。一旦写了一个构造器, 无参构造器就不会自动提供了。多个构造器, 也叫构造器重载。
 建议:构造方法最好无参构造器。
代码示例:

public class javaexample {
    public static void main(String[] args) {
        animal lion=new animal(5,80);
        //调用构造方法,为age和weight赋初值
        lion.print();
        //调用print方法,打印相关信息
    }
}
class animal{
    int age;
    int weight;
    public animal(){}//无参构造器
    public animal(int age,int weight){//有参构造器
        this.age=age;//给成员变量赋初始值
        this.weight=weight;
    }
    public void print(){
        System.out.println("年龄:"+age+",体重:"+weight);
    }
}

结果如下:
【Java基础学习笔记】5、类、对象和方法

this关键字

 上面的代码中用到了this关键字,this,即本、此,在哪个类中使用就是该当前类。在构造方法中,括号中的age和weight只是形参,是调用构造方法时产生的局部变量,在赋初值时,为了区分加上this,this后面的变量才是成员变量。而当成员变量和局部变量不同名时可以不加this。
 当使用 this(参数选填) 时,即自己调用自己的构造器,必须放在构造方法的第一行,this不可省略,注意不要使构造器的调用产生闭环(A调用B的同时B调用A)。

Ⅳ.内部类

 即类中定义一个类。如:汽车类(外部类)–>引擎类(内部类)。(留坑待填)

二、对象

(1)什么是对象?

 对象,就是男女朋友间的一种称 就是抽象概念的类具体化后的实体,类示例化之后是对象,一系列对象的抽象集合是类。对象具有以下特性:
1、对象具有属性和行为。
2、对象具有变化的状态。
3、对象具有唯一性。
4、对象都是某个类的实例。
5、一切皆为对象,真实世界中的所有事物都可以视为对象。

(2)对象的创建

类名 对象名 = new 类名(参数选填);

Person xiaoming = new Person();//创建了一个叫小明的人
Cat Kate = new Cat("黄色");//创建了一只黄色的叫Kate的猫
Car QQ = new Car(50);//创建了一辆时速50km的奇瑞QQ

三、方法

(1)什么是方法?

 之前写了很多方法,数组的处理有Arrays.copyOf()方法、Arrays.sort()方法等,输出数据时用到了System.out.println()方法,类的初始化用到了构造方法。而方法就语句的集合,将这些语句集合在一起执行某项功能。方法是解决一类问题的步骤的有序组合,包含于(静态方法)或对象(非静态方法)中,在程序中被创建,在其他地方被引用。

(2)方法的优点

1、 使程序变得更简短而清晰。
 由于一系列语句被组合成方法,会使得程序更加整洁,增加可读性。
2、提高了代码的重用性,提高程序开发的效率。
 如果在程序的多个地方需要相同的代码块,便可将其整合为方法使用,简洁方便。
3、有利于程序维护。
 如果方法中有错误,直接在方法的代码块中进行修改即可,不需要更改程序调用方法处的代码。

(3)方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
 …
 方法体
 …
 return 返回值;
}
修饰符:可选,告诉编译器如何调用该方法,同时定义这个方法的访问类型。
返回值类型:定义了方法的返回值类型,必须相对于。void的返回值为空,但是也是有返回值类型的。
方法名:方法实际的名字,方法名和参数列表共同构成了方法签名。
参数类型:当方法被调用时,传递值给参数。这个值被称为实参或变量。
参数列表:是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
如:

public static int age(int birthday){...}//一个参数
static float game(float principal, int year){...}//多个参数
public void fishing(){...}//没有参数

方法体:方法体包含具体的语句,定义该方法的功能。
代码示例:

public static void main(String[] args) {
        int a=5,b=10;
        System.out.println(plus(a,b));//调用方法并输出
    }
    public static int plus(int a,int b){
        return a+b;//返回a+b的值,返回值类型与定义的相同
    }

结果如下:
【Java基础学习笔记】5、类、对象和方法

(4)方法的调用

 当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到方法结束时交还控制权给程序。
 方法的调用有两种情况。当方法的返回一个值的时候,方法的调用通常也被看作是一个值。如:

int max=Math.max(a,b);//调用Math.max方法返回a和b中较大的数
int max=10;//直接赋值
//这两句语句中,Math.max(a,b)和10都被当作一个值赋给了max变量

当方法的返回值类型是void时,方法被当作一条语句执行。
如:

public static void main(String[] args) {
        int[] num={22,3,45,64,57};
        int[] newnum=Arrays.sort(num);
    }

会出现以下错误:
【Java基础学习笔记】5、类、对象和方法
这是因为,Array.sort()方法返回值为空,返回值为空肯定不能被赋值。然而当输出数组时:

public static void main(String[] args) {
        int[] num={22,3,45,64,57};
        Arrays.sort(num);
        System.out.println(Arrays.toString(num));
    }

【Java基础学习笔记】5、类、对象和方法
会发现原数组的顺序已经被排好了,说明方法的确被调用了。void方法可以被看作是一条处理数据的语句,加工数据的代码块。

(5)方法的重载

 方法名相同、参数列表不同的方法,称为方法的重载。编译器会根据不同的参数列表决定调用不同的方法。
 方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
 重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。
代码示例:

public static void main(String[] args) {
        int a=6,b=9;
        double c=1.6,d=3.1;
        System.out.println("调用第一个:"+plus(a,b)+'\n'+"调用第二个:"+plus(c,d));
    }
    public static int plus(int a,int b){
        return a+b;
    }
    public static double plus(double a,double b){
        return a+b+1000;//结果加1000来区分两个方法
    }

结果如下:
【Java基础学习笔记】5、类、对象和方法

本文地址:https://blog.csdn.net/qq_53743140/article/details/114264051