【01】Java基础 面向对象 继承
📔 千寻简笔记介绍
千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes
,包含笔记源文件.md
,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star
~
更新:支持在线阅读文章,根据发布日期分类。
文章目录
简介
作者在学校的时候,在b站跟着遇见狂神说
学了一遍Java的内容,也是在视频中跟着Up主一起去写笔记形成的习惯,延续到工作中受益良多,现在把之前的笔记二次整理放出来给大家,大部分的笔记都是跟着Up主抄的,建议大家跟着视频一起去学习。
篇幅比较小,是跟着课程去写的,有错误的地方还评论指正,谢谢大家的观看。
本文关键词
Java中的数据类型
、基本数据类型
、引用数据类型String中的方法
、输入流和输出流
、this的作用以及本质
、匿名对象
、继承(概念、语法、作用、特点)
1 Java中的数据类型
基本数据类型
Java中的基本数据类型分为四类,总共有八种基本数据类型。
- 整数类型(整型):
byte
:8位有符号整数,取值范围为-128到127。short
:16位有符号整数,取值范围为-32,768到32,767。int
:32位有符号整数,取值范围为-2,147,483,648到2,147,483,647。long
:64位有符号整数,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
- 浮点类型:
float
:32位浮点数,取值范围为1.4E-45到3.4028235E+38,可表示小数位数约为6-7位。double
:64位浮点数,取值范围为4.9E-324到1.7976931348623157E+308,可表示小数位数约为15位。
- 字符类型:
char
:16位Unicode字符,可以存储任何Unicode字符。
- 布尔类型:
boolean
:表示真(true)或假(false)的布尔值。
引用数据类型
除了基本数据类型,Java还有引用数据类型。引用数据类型是由程序员自定义的类或Java提供的类,可以用来表示更复杂的数据结构。
一些常见的引用数据类型包括:
- 类(Class):类是Java中最基本的引用数据类型,用于创建对象。类是通过属性和方法的集合来描述对象的特征和行为。
- 数组(Array):数组是一种用来存储多个相同类型的元素的容器。数组可以是一维、二维或多维的,并且可以存储基本数据类型或引用数据类型。
- 接口(Interface):接口定义了一组方法的规范,实现该接口的类必须实现这些方法。接口提供了一种实现多态性的方式。
- 枚举(Enum):枚举是一种特殊的引用数据类型,用于定义一组固定的常量。枚举类型可以有多个枚举值,每个枚举值都可以对应一个名称和值。
- 字符串(String):字符串是由字符组成的不可变序列。在Java中,字符串是引用数据类型,但是使用起来比较特殊,可以像基本数据类型一样进行操作。
此外,还可以使用Java提供的许多其他引用数据类型,如集合(Collection)、列表(List)、映射(Map)等,这些类型用来处理更复杂的数据结构和算法。
2 引用数据类型String
中的方法
判断方法
boolean equals(String str)
:比较两个字符串的内容是否相等。boolean equalsIgnoreCase(String str)
:比较两个字符串的内容是否相等,忽略大小写。boolean startsWith(String subStr)
:判断某个字符串是否以指定的子串开头。boolean endsWith(String subStr)
:判断某个字符串是否以指定的子串结尾。
获取方法
int length()
:获取字符串中字符的个数。char charAt(int index)
:获取字符串中指定索引位置的字符。String substring(int startIndex)
:从指定下标开始截取字符串,一直截取到末尾。String substring(int startIndex, int endIndex)
:从指定下标开始截取字符串,截取到指定下标结束(包括开头不包括结尾)。int indexOf(String subStr)
:获取子串第一次出现的下标。
转换方法
String toLowerCase()
:将字符串转换为小写字母形式。String toUpperCase()
:将字符串转换为大写字母形式。char[] toCharArray()
:将字符串转换为字符数组。
其他方法
String trim()
:去除字符串两端的空格。String[] split(String str)
:根据指定的字符串进行分割,返回字符串数组。
3 输入流和输出流
在Java程序中,可以使用输入流(InputStream)
和输出流(OutputStream)
来进行数据的读取和写入。而文件输入流和文件输出流则是特定类型的输入流和输出流,用于将数据从Java程序读取到文件中或从文件中写入到Java程序中。
文件输出流的常用类是FileWriter
,它是文件的字符输出流,用于将数据以字符形式写入文件中。以下是FileWriter
的常用方法:
void write(int ch)
:将一个字符写入文件(可以写字符的ASCII码值)。void write(char[] chs)
:将一个字符数组写入文件。void write(String s)
:将一个字符串写入文件。void write(char[] chs, int startIndex, int len)
:将字符数组的一部分写入文件。void write(String s, int startIndex, int len)
:将字符串的一部分写入文件。
文件输入流的常用类是FileReader
,它是文件的字符输入流,用于从文件中以字符形式读取数据。以下是FileReader
的常用方法:
int read()
:读取一个字符。int read(char[] chs)
:读取一定数量的字符到字符数组中,并返回实际读取的字符个数。
关于文件路径
,有两种常见的表示方式:
相对路径
:相对于当前项目的路径。例如,文件名为"test.txt",表示在当前项目的根目录下的"test.txt"文件。绝对路径
:以盘符开头,表示完整的文件路径。例如,"C:\test.txt"表示在C盘根目录下的"test.txt"文件。
最后,在Java中,当使用new关键字创建一个对象时,该对象会被分配到堆(heap)内存中,而用于引用该对象的变量则保存在栈(stack)内存中。
4 this
的作用以及本质
this
作用
在Java中,关键字this
表示当前对象的引用,它的作用是指代当前正在执行方法的对象。使用this
关键字可以实现以下功能:
- 区分成员变量和方法参数以及局部变量:当方法的参数或局部变量与成员变量同名时,可以使用
this
关键字来引用成员变量,以便区分它们。 - 在构造方法中调用其他构造方法:一个类可以有多个构造方法,在其中一个构造方法中可以使用
this
来调用同类中的其他构造方法,以避免重复代码。 - 可以将
this
作为方法的返回值:在某些情况下,我们可能需要将当前对象作为方法的返回值返回,此时可以使用return this;
语句。
this
本质
this
关键字本质上是一个特殊的引用,它指向当前对象的实例。当创建一个类的对象时,每个对象都有自己的一份成员变量。方法内部对成员变量的访问通常通过this
来实现。在调用方法时,编译器会隐式地传递一个指向当前对象的this
引用,使得我们可以使用this
来访问当前对象的成员变量和方法。
总之,this
关键字用于指代当前对象,通过它可以访问当前对象的成员变量和方法。它的作用是消除歧义,区分不同作用域下同名的变量,并且可以方便地在方法内部操作当前对象。
小结
this
用于区分局部变量和成员变量的同名的情况,this
代表一个对象,具体是哪一个对象,那么由方法的调用者决定。
5 匿名对象:
匿名对象是指在创建对象时,不使用变量来引用该对象,而是直接使用new
关键字创建一个对象。它的语法形式是new 类名()
,其中类名
表示所创建对象的类型。
匿名对象具有以下特点:
- 只能使用一次:匿名对象在创建后,只能在创建时使用,无法再次被引用或调用。因此,它的作用范围仅限于当前语句或表达式。
- 无法被其他代码引用:由于没有变量引用匿名对象,所以无法在其他地方对其进行操作或调用。匿名对象一旦使用完毕,会被垃圾回收器自动回收释放内存。
匿名对象通常用于简单的场景,当我们只需要创建一个对象,而不需要对其进行多次操作或引用时,可以使用匿名对象。例如,在调用某个方法时,如果该方法只需要使用一次创建的对象,那么可以使用匿名对象来传递参数。
需要注意的是,由于匿名对象没有变量引用,所以无法访问该对象的成员变量或调用其方法,除非将其作为参数传递给其他方法。因此,匿名对象的使用场景相对有限,主要是针对一次性的简单操作。
6 继承
概念
继承描述了两个类之间的关系,其中一个类(子类)基于另一个类(父类)进行创建。子类继承父类的属性和方法,可以在此基础上添加新的属性和方法,或者重写父类的方法。
语法
在Java中,使用extends
关键字来实现继承关系。通过public class 子类 extends 父类
的方式,子类可以继承父类的属性和方法,并且可以进行扩展或重写。
继承的作用
- 继承使得子类自动拥有父类的可继承的成员变量和成员方法。这样可以提高代码的重用性,子类不需要重新定义父类已有的方法和属性,而是可以直接使用。
- 继承中子父类成员变量和成员方法的特点: 如果子类和父类中存在同名的成员变量或成员方法,通过子类对象调用时,会优先调用子类自己的成员变量或成员方法。如果子类中没有相应的成员变量或成员方法,则会访问父类中的。
Java中继承的特点
- Java只支持单继承,一个子类只能有一个直接父类。
- Java支持多层继承,子类可以继承父类,而父类本身也可以是另一个类的子类。
- 子类自动继承父类的可继承的成员变量和成员方法,不包括私有(private)修饰的成员。