zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java学习笔记_3 @面向对象

JAVA笔记学习 面向对象
2023-09-11 14:20:47 时间

1 类和对象

面向过程和面向对象的思想对比

  • 面向过程编程(Procedure Oriented Programming):是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的
  • 面向对象编程(Object Oriented Programming):是一种以对象为中心的编程思想,通过指挥对象实现具体的功能;

1.1 类

  • 定义:类是对现实生活中一类具有共同属性行为的事物的抽象;
  • 类是对事物,也就是对象的一种描述,可以将类理解为一种设计图,根据设计图,可以创建处具体存在的事物;
  • 根据类区创建对象

1.1.1 类的组成

  • 属性:该事物的各种特性;
  • 行为:该事物存在的功能(能够做的事情);

1.1.2 类的定义

示例代码:

public class 类名{
	//成员变量
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;
	...
	//成员方法
	方法1;
	...
}

1.2 对象

  • 定义:是能够看的到摸得着的真实存在的实体;

1.2.1 创建对象

  • 格式
    类名 对象名 = new 类名();

示例代码

Student stu = new Student();

1.2.2 对象的使用

使用成员变量

  • 格式
    对象名.变量名

使用成员方法

  • 格式
    对象名.方法名();

示例程序

stu.name = "张三"; //使用成员变量   
stu.study();      //使用成员方法

1.3 封装

1.3.1 Private关键字

  • Private:私有的,这是一个权限修饰符,可以用来修饰成员变量、方法;
  • 特点:只能在本类中进行访问;

针对Private修饰的成员变量,如果要被其它类使用,提供相应的操作

  • 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰;
  • 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰;

疑问:成员变量使用Private修饰后,又通过方法区获取和修改变量值,是不是多此一举呢?
解答:这样的好处是,可以在方法种通过一些if语句等程序,来达到限制获取或修改变量的值得作用。

1.3.2 this关键字

  • this:代表所在类的对象引用。方法被那个对象调用,this就代表哪个对象;
  • 作用:可以调用本类的成员(变量、方法),解决局部变量和成员变量的重名问题;

1.3.3 封装

  • 面向对象的三大特征之一(封装、集成、多态);
  • 隐藏实现细节,仅对外暴露公共访问方式;
  • 封装常见的体现:
    1、私有成员变量,提供setXXX和getXXX方法;
    2、将代码抽取到方法种,这是对代码的一种封装;
    3、将属性抽取到类当中,这是对数据的一种封装;
  • 封装的好处
    1、提高代码的安全性;
    2、提高了代码的复用性;

1.4 构造方法

1.4.1 概述

  • 构建。创造对象的时候所调用的方法;
  • 格式:
    1、方法名和类名相同,大小写也要一致;
    2、没有返回值类型,连void也没有;
    3、没有具体的返回值(不能由return带回结果数据);
    4、不允许手动调用;
public class Student(){
	//构造方法	
	public Student(){
		;		
	}
}

1.4.2 注意事项

  • 构造方法的创建
    1、如果没有定义构造方法,系统将给出一个默认的无参构造方法;
    2、如果定理构造方法,系统将不在提供默认的构造方法;
  • 构造方法的重载
    1、如果定义了带参的构造方法,还要使用无参的构造方法,就必须在写一个无参数的构造方法;
  • 推荐使用方式
    1、无论是否使用,都手动书写无参数构造方法,和带参数构造方法;

2 API

2.1 API概述

  • API (Application Programming lnterface):应用程序编程接口应用编程接口;
  • Java API:指的就是JDK中提供的各种功能的Java类。这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用;

2.2 API文档使用步骤

  • 1、查找类;
  • 2、查看类在哪个包下,根据包名,使用时需要导包;
  • 3、查看这个类的描述;
  • 4、查看类的构造方法,根据构造方法才能创建对象;
  • 5、查看成员方法;

3 String类

3.1 String类软件包

  • 软件包:java.lang
  • 该包不需要导入

3.2 构造函数

3.2.1 无参构造

String ss= new String();
ss="123456";
System.out.println(ss);

3.2.2 有参构造

String ss1 = new String("45656456");//直接填写字符串
System.out.println(ss1);

3.3 常用方法

3.3.1获取字符串长度

  • length()方法
String ss = new String();
ss = "123456";
int length1 = ss.length();
System.out.println(length1);     //输出:6

3.3.2 比较两个字符串内容

  • equals()方法
String ss = new String();
ss = "123456";
String ss1 = new String("45656456");
boolean equals1 = ss.equals(ss1);//比较两个字符串内容,返回值为boolean数据类型
System.out.println(equals1);//因为连个字符串内容不一样,输出:false

3.3.3 将字符串拆分为字符数组

  • toCharArray()方法
String ss1 = new String("45656456");
char[] chars = ss1.toCharArray();//将字符串拆分为字符数组
for (int i = 0; i <ss1.length() ; i++) {
System.out.println(chars[i]);//挨个输出字符
}

3.3.3 返回指定索引处的字符

  • charAt()方法
String ss = new String();
ss = "0123456";
char cc= ss.charAt(4);//获取指定索引处的字符
System.out.println(cc);//输出:4

3.3.4 字符串截取

  • substring()方法
String ss1 = new String("123456789");
String ss2 = ss1.substring(2);//从索引2开始,一直截取到字符串末尾
System.out.println(ss2);//输出:3456789
String ss1 = new String("123456789");
String ss3=ss1.substring(2,5);//从索引2开始,截取到索引5,包含头不包含尾
System.out.println(ss3);//输出:345

3.3.5 字符串替换

  • replace()方法
String ss1 = new String("你就是个sb。");
String ssx = ss1.replace("sb", "**");//替换敏感词汇,将鼠sb替换为**
System.out.println(ssx);//输出:你就是个**。

3.3.6 字符串切割

  • split()方法
    根据传入的字符串作为规则进行切割,将切割后的字符串存入字符串数组中,并将字符串数组返回。
String ss =new String("张三,25");
String[] sAry = ss.split(",");//根据‘,’这个规格切割字符串
System.out.println(sAry[0]);
System.out.println(sAry[1]);
/**输出
张三
25
*/

4 StringBuilder类

4.1 StringBuilder概述

  • StringBuilder是一个可变的字符串类,我们可以把它看做一个容器;
  • 作用:提高字符串的操作效率;

4.2 构造方法

4.2.1 空参构造方法

//创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println(sb);//输出就是个空白行

4.2.1 带参构造方法

//根据字符串内容创建可变字符串对象
StringBuilder sb1=new StringBuilder("abcdefg");
System.out.println(sb1);//输出abcdefg

4.3 常用的成员方法

4.3.1 添加数据

  • append();方法
  • append()方法可以添加任意类型,添加的数据都会被转换为字符串类型;
//创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
sb.append("整数类型:");
int ii=15;
sb.append(ii);
sb.append("字符类型:");
char cha='a';
sb.append(cha);
System.out.println(sb);//输出:整数类型:15字符类型:a

4.3.2 返回反向字符串序列

  • reverse();方法
sb.append("整数类型:");
int ii=15;
sb.append(ii);
sb.append("字符类型:");
char cha='a';
sb.append(cha);
System.out.println(sb);//输出:整数类型:15字符类型:a
sb.reverse();
System.out.println(sb);//输出:a:型类符字51:型类数整

4.3.3 获取字符串长度

  • length();方法
int length = sb.length();
System.out.println(length);

4.3.4 转换为String类型

  • toString();方法
String s = sb.toString();
System.out.println(s);

5 ArrayList集合

5.1 集合概述

  • 集合的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
  • 集合和数组的区别:
    相同点:都是存储数据容量的容器;
    不同点:数组的容量是固定的,集合的容量是可变的;
  • 如果存储的数据长度经常发生改变,推荐使用集合;

5.2 构造函数

5.2.1 空参构造

 ArrayList<String> list = new ArrayList<>();//<String>尖括号里面的是对集合数据类型的限定。

5.3 常用方法

5.3.1 添加数据

  • add()方法
list.add("123");
list.add("456");
list.add("789");//在集合末尾添加数据
list.add(1,"abc");//在指定位置插入数据,之前的数据会被后移一个索引

5.3.2 删除元素

  • remove ()方法
String remove = list.remove(1);//删除指定索引处的元素,返回索引元素
boolean remove1 = list.remove("456");//删除指定元素,返回是否成功

5.3.3 获取指定索引处的元素

  • get()方法
String ss=list.get(2);//获取指定索引处的元素

5.3.3 修改指定索引处的元素

  • set()方法
String set = list.set(1, "000");//将指定索引处的元素替换为000

5.3.3 修改指定索引处的元素

  • size()方法
int size = list.size();//返回集合中元素的个数