【Java基础学习笔记】5、类、对象和方法
面向过程:注重事情的每一步。
面向对象:只关注对象,以及对象的功能。
文章目录
一、类
(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);
}
//代码写在同一个类中
结果如下:
同样的代码,如果在主方法中尝试输出变量a,就会发生错误。
代码示例:
public static void main(String[] args) {
func();
System.out.println(a);
}
public static void func() {
int a=10;
System.out.println("调用了方法,使用局部变量,值为:"+a);
}
//代码写在同一个类中
结果如下:
这是因为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);
}
}
结果如下:
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的值,返回值类型与定义的相同
}
结果如下:
(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);
}
会出现以下错误:
这是因为,Array.sort()方法返回值为空,返回值为空肯定不能被赋值。然而当输出数组时:
public static void main(String[] args) {
int[] num={22,3,45,64,57};
Arrays.sort(num);
System.out.println(Arrays.toString(num));
}
会发现原数组的顺序已经被排好了,说明方法的确被调用了。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来区分两个方法
}
结果如下:
本文地址:https://blog.csdn.net/qq_53743140/article/details/114264051
上一篇: Jquery 获取对象的几种方式介绍
推荐阅读
-
Java学习笔记(5)--- Number类和Math 类,String类的应用,Java数组入门
-
Java 学习笔记 二维数组和对象数组
-
java 学习笔记(入门篇)_程序流程控制结构和方法
-
Java面向对象基础之多态性,抽象类和接口
-
java学习笔记(基础篇)—关键字static和final
-
一步一步学习PHP(5) 类和对象
-
Ruby简洁学习笔记(一):字符串、数字、类和对象
-
python学习笔记:第19天 类的约束、异常、MD5和logging
-
荐 浅谈Java中类和对象的初始化、实例化以及方法重载的底层机制
-
【java基础】面试常见问题:类和对象,封装继承多态,final关键字,static关键字,类加载过程,双亲委派模型