Java学习笔记_3 @面向对象
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();//返回集合中元素的个数
相关文章
- java.util.Properties类 学习笔记
- Java学习之java高级特性
- 【JAVA】Eclipse快捷键大全及自定义快捷键设置(笔记,有转载!)
- 【面试】Java面试常见问题汇总(不含答案)、面试指导学习笔记
- 2022 年 Java 面试总结,200 多页真题笔记和详解(含核心考点及 6 家大厂)
- 【师兄笔记】Java入门
- 【师兄笔记】Java记录生活
- Java并发编程学习笔记 深入理解volatile关键字的作用
- Java 笔记20180123
- [学习笔记]Java作用域变量申明和C、C++的差异性
- Java学习-084-java.sql.SQLException: Zero date value prohibited 问题解决
- Java/Js下使用正则表达式匹配嵌套Html标签
- Java基础知识笔记 - 语法
- 【Java】Java学习笔记-基础语法
- 【Java】Java学习笔记-变量和数据类型
- Java程序猿的JavaScript学习笔记(1——理念)
- JAVA并发编程学习笔记之CAS操作
- Java笔记5:单例模式
- 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....