类和对象、无参方法、有参方法、字符串

类和对象、无参方法、有参方法、字符串

类和对象

对象

Java是一种面向对象的编程语言(Object Oriented Programming Language ,OOPL),因此我们要学会用面向对象的思想考虑问题和编写程序。

对象的属性和方法

在面向对象的编程思想中,把对象的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素。

对象:用来描述客观事物的一个实体,由一组属性和方法构成。

封装

封装(Encapsulation)是把一个事物包装起来,并尽可能隐藏内部细节。例如:一辆汽车在组装前是一堆零散的部件,如发动机、方向盘等,仅靠这些部件是不能发动车的。当把这些部件组装完成后,它才具有发动的功能。可以看出这辆汽车是一个对象,而零部件就是该对象的属性,发动、加速、刹车等行为就是该对象所具有的方法。如图:

从上例我们可以看出,对象的属性和方法是相辅相成,不可分割的,它们共同组成了实体对象。因此,对象具有封装性。

类的属性:对象所拥有的静态特征在类中表示时称为类的属性。

类的方法:对象执行的操作称为类的方法。

public class 类名{
    //属性	数据区
    String name;	//姓名
    int age;		//年龄
    /**
    *显示方法	方法区
    */
    public void show(){
        System.out.println("姓名:" + name + "\n年龄:" + age);
    }
}

一个类为它的全部对象给出了一个统一的定义,而它的每个对象则是符合这种定义的一个实体。因此类和对象的关系就是抽象和具体的关系。类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实列。如图:

定义类是抽取同类实体的共性自定义的一种数据类型。

在面向对象程序设计中,类是程序的基本单元,所有程序都是以类为组织单元的。

Java的类模板

public class <类名>{	//定义类名
    //定义属性部分
    属性1的类型 属性1;
    属性2的类型 属性2;
   	......
    属性n的类型 属性n;
    //定义方法部分
    方法1;
    方法2;
    ......
    方法n;
}

通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法,语法:

访问修饰符 返回值类型 方法名(){
    //方法体
}

创建和使用对象

类的作用就是创建对象。由类生成对象,称为类的实例化过程。一个实例也就是一个对象,一个类可以生成多个对象,语法:

类名 对象名 = new 类名();

在Java中,要引用对象的属性和方法,需要使用"."操作符,语法:

对象名.属性		//引用对象的属性
对象名.方法名()	//引用对象的方法

在定义类时,如果没有给属性赋初始值,Java会给它一个默认值,如

类 型默 认 值
int0
double0.0
char‘\u0000’
booleanfalse
Stringnull

面向对象的优点

于人类的思维习惯一致:面向对象的思维方式从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程。

信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和行为封装在类中,这保证了对它们的修改不会影响到其他对象,有利于维护。

提高了程序的可重用性:一个类可以创建多个对象实例,增加了重用性。

类的无参方法

类的方法是一个功能模块,其作用是"做一件事情"。

类的方法包括:方法的名称,方法的返回值类型,方法的主体。语法:

public 返回值类型 方法名(){
    //方法的主体
}

注意:方法执行后可能会返回一个结果,该结果的类型称为返回值类型。使用 return 语句返回值。语法:

return 表达式;

这里的 return 语句是跳转语句的一种,它有两个作用:跳出方法给出结果

在写方法时需要注意以下几点:

1.方法的返回值类型为 void ,方法中不能有 return 语句。

2.方法不能返回多个值。

3.方法直接不能相互嵌套定义。

4.不能再方法外部直接写程序逻辑代码。

方法的调用:

类名 对象名 = new 类名();
对象名.方法名();

调用方法的两种形式:

在同一个类中的方法,直接使用方法名()调用该方法。

不同类的方法,首先创建对象,在使用"对象名.方法名()"来调用

关于 static 关键字

被 static 修饰的成员是属于类的,不单属于这个类的某个对象了,所以在同一个类中被 static 修饰的成员不能被其他非 static 的成员直接调用,需要通过创建对象的方式来调用,而被 static 修饰的成员在同一个类中可以直接用方法名()直接调用,如图:
在这里插入图片描述
在这里插入图片描述

变量的作用域

成员变量和局部变量

一个类,在类中可以定义变量和方法,在类的方法中,同样也可以定义变量,所以我们把在类中定义的变量称为类的成员变量,在方法中定义的变量称为局部变量,例如:

public class 类名{
    //成员变量
    int a;
    long b;
    double c;
    String d;
    public void 方法名(){
        //局部变量
        int age = 0;
        double sum = 0.0;
        String name = null;
    }
}

注意

1.作用域不同,局部变量的作用域仅限于定义它的方法,在该方法外无法访问,而成员变量的作用域在整个类的内部都是可见的,所有成员方法都能使用。

2.初始值不同,成员变量定义时没有给它赋初始值,Java会给它一个默认值,基本数据类型为0,引用数据类型为null。而Java不会给局部变量赋初始值,因此局部变量必须定义赋值后再使用。

3.变量同名,在同一个方法中,不能出现同名的局部变量,在不同的方法中,可以有同名的局部变量。但是局部变量可以和成员变量同名,在使用时,局部变量具有优先级。

JavaDoc文档

在前面我们已经用到过两种写注释的方法:单行注释和多行注释

//单行注释
/*
*多行注释
*/

今天我们又要介绍一类注释,称为 JavaDoc 注释,如图:

/**
*JavaDoc 文档
*@author		作者名
*@parameeter	参数及其意义
*@return		返回值
*......
*/

简单来说,JavaDoc 文档就是介绍该类、类的方法和成员变量的文档,我们可以看到 JavaDoc 注释每个注释包含一些 描述性的文本及若干个JavaDoc标签,JavaDoc标签一般以“@”为前缀。

有参方法

在一些方法中的某种功能的实现依赖于我们给它的初始信息,这时候在定义方法时就需要在括号中加入参数列表,语法:

<访问修饰符> 返回值类型 <方法名>(<参数列表>){
	//方法的主体
}

<参数列表>是传给方法的参数列表,列表中各参数间以逗号分隔。

调用带参方法与调用无参方法的语法相同,但是在调用带参方法时必须传入实际的参数的值,语法:

对象名.方法名(参数1,参数2,...,参数n);

我们在定义方法和调用方法时,把参数分别称为形式参数和实际参数,简称形参和实参。

形参:是在定义方法时对参数的称呼,目的是定义方法需要传入的参数个数和类型。

实参:是在调用方法时传递给方法处理的实际的值。

调用方法时的注意事项:

1.先实例化对象,再调用方法。

2.实参的数量、顺序都要与形参一致,类型是兼容的。

对象数组

在这里插入图片描述

注意:对象数组作为参数,定义方法时并没有指定数组大小,而再调用方法时确定要传递的数组的大小。

Student[] students = new Student[30]

上方代码表示声明了大小为30的学生对象数组,即数组 students 可以储存30个学生对象,通过数组名[下标]来访问数组内每一个对象。

public void addStudent(Student stu){
	//...
}

注意:上面的方法带有一个 Student 类型的参数,调用时将传递一个学生对象。

关于包的主要作用:

1.包允许将类的组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。

2.防止命名冲突:Java中只有在不同包中的类才能重名。

3.包允许在更广的范围内保护类、数据和方法,可以在包内定义类。

我们要声明一个包,只要包含 package 命令作为一个Java原文件的第一条语句就可以了,例如:

package 包名;
public class 类名{
    
}

注意:包的声明必须是Java源文件中的第一条非注释性语句,而且一个源文件只能由一个包声明语句。

我们要导入一个包,使用 import 命令导入一个包,例如:

import java.util.Scanner;

上面的代码是导入系统提供的 util 的包的 Scanner 类,如果要使用到包下的某些类(多于一个),可以使用 包名.* 。

import java.util.*;

字符串

其实我们之前一直都在使用字符串,就是用 String 作为数据类型的变量并赋值,例如:

String name = "张三";
String name1 = new String();	//创建一个空的字符串

字符串的长度

我们可以使用 String 类的 length() 方法来获取字符串的长度 ,例:

字符串1.length();

length()方法返回字符串1的长度是 int 类型的。

字符串的比较

我们之前也使用过字符串之间的比较,例:

字符串1.equals(字符串2);

我们在字符串之间的比较不是用 “==” 进行比较了,而是用 equals()方法进行两个字符串之间的比较,这个方法返回的是一个 boolean 类型的值,如果相同,返回 true ; 否则返回 false。

在使用 equals()方法时对于字符的大小写,也在检查范围之内,但有时我们会碰到忽略大小写验证,这个时候我们就可以使用另一种方法——equalslgnoreCase()方法,忽略大小写比较两个字符串。

字符串1.equalslgnoreCase(字符串2);

除了这中方法外,我们还可以在比较前将字符串中的英文字母全部转换为大写或小写。

toLowerCase():转换字符串中的英文字母为小写。

toUpperCase():转换字符串中的英文字母为大写。

String a = "JAVA";
String b = "java";
a.toLowerCase();
b.toUpperCase();

如图:
在这里插入图片描述

字符串的连接

我们前面是使用"+"运算符用于字符串之间的连接,在这又介绍了一个 concat() 方法将一个字符串连接到另一个字符串的后面,语法:

字符串1.concat(字符串2);

字符串的提取和查询

其实字符串是一个字符序列,也是一个字符数组,每个字符都有自己的位置,因此它的位置从 0 开始到(字符串长度-1)结束,因此 String 类也提供了一些常用的 提取和查询方法,如:

1.indexOf()方法

该方法是在字符串内搜索某个指定的字符或字符串,它返回出现第一个匹配的位置。

在这里插入图片描述

2.lastIndexOf()方法

该方法也是在字符串内搜索某个指定的字符或字符串,但是它是搜索最后一个出现的字符(或字符串)的位置。

在这里插入图片描述

3.substring(int index)方法和 substring(int beginindex,int endindex)方法

substring(int index)方法用于提取从位置索引开始的字符串部分,调用时括号中写的是要提取的字符串的开始位置,方法的返回值就是要提取的字符串。

substring(int beginindex,int endindex)方法用于提取位置 beginindex 和位置 endindex-1 之间的字符部分。

在这里插入图片描述

4.trim()方法

该方法可以忽略字符串前后的空格,在接收用户输入的字符串时,一般会调用 trim() 方法过滤掉字符串前后的多余空格。

在这里插入图片描述

字符串的拆分

字符串的拆分在实际应用中也会经常用到,语法:

字符串1.split(String separator,int limit);

注意:1.separator 可选项,标识拆分字符串时使用一个或多个字符。如果不选择该项,则返回包含该字符串所有单个字符的元素数组。

2.limit 可选项,该值用来限制返回数组中的元素个数。

如图:
在这里插入图片描述

StringBuffer类

StringBuffer 是 String 类的增强类,它是比 String 类更高效的储存字符串的引用数据类型。

声明 StringBuffer 并初始化

StringBuffer a = new StringBuffer("字符串");

下面为大家介绍几个比较常用的StringBuffer类提供的方法:

字符串1.toString();

1.将StringBuffer类型的字符串1转换为String类型的对象并返回。

字符串1.append(字符串2);

2.将字符串2连接到字符串1后并返回。

字符串1.insert(位置,参数);

3.将参数插入字符串1的指定位置(int 类型)后并返回。参数可以是包括 String 的任何类型。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象,如图:

在这里插入图片描述
关于这次的介绍就到这了,谢谢观看!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值