方法+数组+对象+THis关键字+构造方法

方法+数组

方法

作用:代码复用

定义方法的完整格式:

修饰符 返回值类型 方法名(形参类型 变量名,形参类型 变量名){…}

小提示:

什么是形参:定义方式表示需要接收的参数,它是形式上的,一个声明;

什么是实参:调用方法时,传递的实际的数据。

两个方法之间相关的问题:两个方法时两个独立的代码块,都是独立的作用域,各自方法内的变量只能在各自的方法内部使用,也就是说:一个方法不能访问另一个方法内部的变量。

在一个方法中,要想讲数据传递给另一个方法,只能使用:形参/返回值的方式。

一个方法可以有定义多个形参,多个形参的“形参类型”可以相同也可以不同,但形参名不能相同,无论是什么类型。如果方法定义的返回值是void,表示此方法不返回值,那么方法中不能写return 值;语句,但可以写return;语句表示结束方法的执行,立即返回。如果方法的返回值时非void,表示比方法回返回一个词类型的值,那么此方法中,必须return 值;,此时写rerturn;语句不可以。return 值/变量/表达式;但必须要和声明的“返回值类型”一致即可。方法内return 值;只能返回一个值,不能返回多个值。方法如果定义了形参,调用的时候必须传递实参。

在一个类中可以定义多个同名的方法,但“形参列表不能完全相同(数量、类型、顺序),这种形式叫:方法重载,跟:返回值类型无关,跟”形参名“无关。对于功能相同/相近的方法,不用定义很多个方法。调用方便,调用方法时的匹配过程:先精确匹配类型,如果匹配失败,回向更宽类型寻找。

数组

容器:里面可以装大量的数据,使我们可以发那个方便的操作这些数据。

数组的定义:

一、静态初始化

数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[3];

二、数据类型[] 数组名 = new 数据类型[]{值1,值2,…,值n}; int[] arr = new int[]{1,2,3,4,5};

三、动态初始化

数据类型[] 数组名 = {值1,值2,…,值n}; int[] arr = {1,2,3,4,5};

一个引用类型时null值,表示不引用任何“堆”空间,如果要访问堆空间,或者通过引用任何的属性和方法,将会导致引起空指针异常。

对象+THis关键字+构造方法

面向对象

面向对象的思想:将纷杂的数据进行分类。

类就是概念上的一个定义,类似于“模板/图纸”。

对象时通过类产生的,并且以类为模版产生的,类中定义了什么,对象中就有什么,不多也不少。一个类可以创建多个对象。先定义类,再通过类创建对象。

类的定义:

class 类名{

​ 1 变量名–成员变量

​ 2 方法–成员方法

​ 3 构造方法–创建对象时被自动调用的方法 }

对象的使用:创建对象的格式: 类名 对象名 = new 类名();

1 ”类名“必须和定义的类名一致,大小写要一致;2 ”对象名“就是”变量名“,属于自定义标识符; 3 ”对象名“的作用:要方法问对象中的”属性/方法“必须通过”对象名“访问。对象名.属性名/对象名.方法名();

注意:1 第一次new一个对象,先在”方法区”中创建它的class对象,里面存储这个类中所有方法的“字节码”,然后再在”堆”中创建对象空间,对象空间中只有成员属性。2 第二次new同一个对象,不在方法区中创建方法空间,只在“堆”中创建对象空间,包含成员属性信息。【结论】对于多个对象,每个对象都拥有自己的成员属性,但方法空间只有一个,被此类的所有对象共享。

成员变量和局部变量的区别:

成员变量:定义在类体中,其他方法外的变量。 局部变量:定义在方法内的变量。

在内存中创建的时间:

成员变量:new类对象时,作用在描述一类事物的公共属性;局部变量:当所在的方法被执行,入栈的时候才会被分配空间,作用上只是提供一个变量供方法使用。

在内存中位置:

成员变量:随着对象存储在“堆”中。 局部变量(基本类型):随着方法入栈,会存在“栈”中。

初始化方式不同:

成员变量:new对象后,在堆空间中,会被自动初始化。整数:0;小数:0.0;字符:\u0000;布尔:false;String和其他引用类型:null局部变量:必须手动初始化,才能被访问。

生命周期不同:

成员变量:随着对象成为垃圾,当垃圾回收器清理对象空间时才会将成员变量全部清理掉。 局部变量:随着定义局部变量的代码块(方法、for、if)结束,局部变量会被清理。

封装

面向对象编程语言的三大特征:封装、继承、多态。

封装:如果将类中的成员属性直接对外公布,允许外部直接堆属性赋值,这样被操作的类是无法控制这个值的,如果这个值不符合业务逻辑,这个被操作的类无法阻止这个赋值。这时我们就需要“封装”。

步骤:1 将成员属性私有化–不能被其他类访问。 2 针对这个属性对外提供共有的get和set方法,可以为这个属性获取值/设置值。 3 private是访问修饰符,可以修饰成员属性、成员方法、构造方法,被修饰的成员只能被本类北部访问,不能被其他类访问。

在现实开发中,一般实体类的所有成员属性(成员方法)都要封装起来。

实体类就是用于描述一类事物的就称为实体类。

工具类(Arrays数组的工具类)

封装的好处:1 提高数据的安全性 2 操作简单 3 隐藏了实现

this关键字

作用:访问本类其他“成员变量”、”成员方法“、”构造方法“的。正常情况可以不用。this关键子代表了所属函数的调用者对象。

1 如果存在同名成员变量和局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键子访问成员变量的数据。 2 在一个构造函数中可以调用另一个构造函数初始化对象,此时this关键字必须位于构造函数的第一个语句,并在构造函数中不能相互调用。 3 当局部变量覆盖成员变量,要访问被覆盖的成员变量时,必须使用 this.成员变量 去访问。

注意:1 存在同名的成员变量和局部变量时,在方法的内部访问的是局部变量(Java采取的是“就近原则”的机制访问的)。 2 如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么Java编译器会在该变量的前面添加this关键字。

构造方法

“构造”:创建对象—new一个对象

“构造方法“:指创建对象时会被自动调用的一个方法。

Student stu = new Student();//()就是调用构造方法。

Java要求任何类必须要有构造方法,如果不写编译器会自动添加一个,无参,什么都不做的构造方法。但如果程序员定义了构造方法,编译器就不添加任何构造方法了。

访问权限修饰符(通常public) 类名([形参类表]){…}

注意:构造方法不能定义返回值类型,也就意味着:构造方法不能返回值。构造方法的“方法名”就是“类名”,必须跟类名一致,包括大小写。

作用:初始化成员变量。

构造方法可以被重载。

一个标准的javaBean及类成员

JaveBean:一种类的总称,类似于Student类,Phone类,用于存储数据的,有成员属性用于记录数据的,这种类被统称为JavaBean。

JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循“一定编程原则”的Java类都可以被称作JavaBean。

JavaBean是一个遵循特定写法的Java类,是一种Java语言编写的可重用组件,它的方法命名,构造及行为必须符合特定的约定: 1、这个类必须具有一个公共的(public)无参构造函数;2、所有属性私有化(private);3、私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范。 4、这个类应是可序列化的。(比如可以实现Serializable 接口,用于实现bean的持久性)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值