珠海市企业网站建设/关键词查询网站的工具
【Java 类】002-类、属性、方法、代码块
文章目录
- 【Java 类】002-类、属性、方法、代码块
- 一、类
- 1、类与对象
- 2、类的作用
- 3、创建与使用类
- 类结构
- 创建类
- 调用类
- 运行结果
- 4、Java 类的执行过程
- 5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等
- 二、属性
- 1、概述
- 2、类型
- 3、定义属性
- 4、修改与访问属性
- 5、成员变量和局部变量的区别
- 6、静态属性
- 三、方法
- 1、概述
- 2、方法的内容
- 3、定义方法
- 4、调用方法
- 5、静态方法、方法重载、方法重写
- 四、代码块
- 1、概述
- 2、代码块顺序
一、类
1、类与对象
在面向对象编程中,类(Class)是一种用户定义的数据类型,用于描述对象的属性和方法。它是面向对象编程的基本概念之一,可以看做是一种模板或蓝图,用于创建对象。
类定义了对象的属性和方法,属性表示对象的特征或状态,方法表示对象的行为或功能。在 Java 中,类是一种引用类型,它定义了一组属性和方法,并且可以通过关键字 new
创建多个对象。
2、类的作用
Java 类是面向对象编程的基本单位,它的作用包括:
- 封装数据和行为:类可以将数据和行为封装在一起,形成一个独立的模块。封装可以隐藏对象的实现细节,提高代码的可维护性和安全性。
- 继承:类可以通过继承现有类的属性和方法来扩展自己的功能。继承可以减少代码的重复,提高代码的可复用性和可维护性。
- 多态:类可以通过多态来实现同一种行为具有不同的表现形式。多态可以提高代码的灵活性和扩展性。
- 对象的创建和销毁:类是创建对象的模板,通过类可以创建多个对象。同时,类也可以定义对象的销毁方式,通过垃圾回收机制自动回收不再使用的对象。
- 数据类型扩展:Java 提供了基本数据类型,但是有时候需要使用自定义的数据类型,类可以用来定义自定义数据类型,扩展 Java数据 类型的能力。
3、创建与使用类
类结构
public class ClassName {// 类的成员变量// 类的构造方法// 类的成员方法// ...
}
创建类
package main;public class Person {// 成员变量private String name;private int age;// 在有带参的构造方法时,一个无参的构造方法是必不可少的public Person() {}// 构造方法public Person(String name, int age) {this.name = name;this.age = age;}// 成员方法public void sayHello() {System.out.println("Hello, my name is " + name + ", I'm " + age + " years old.");}
}
调用类
package main;/*** @author zibo* @date 2023/3/5 12:35* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {// 调用带参构造,创建对象Person person = new Person("zibo", 26);// 通过对象调用方法person.sayHello();}
}
运行结果
Hello, my name is zibo, I'm 26 years old.
4、Java 类的执行过程
Java 类的执行过程主要包括以下几个阶段:
- 加载(Loading):通过类加载器(ClassLoader)将类的字节码文件(.class 文件)加载到 JVM 内存中,生成一个对应的 Class 对象。
- 验证(Verification):对字节码文件进行校验,以确保符合 JVM 规范,例如是否有不合法的指令或常量池中的常量引用不存在等。
- 准备(Preparation):为类的静态变量分配内存空间,并设置默认值(0、false、null 等)。
- 解析(Resolution):将类中的符号引用转化为直接引用,例如将方法调用转化为方法实际地址的映射。
- 初始化(Initialization):对类进行初始化,包括静态变量的显式初始化和静态代码块的执行等。在初始化过程中,如果发现该类有父类,则先执行父类的初始化。
- 使用(Usage):正式使用该类,例如创建对象、调用方法等。
需要注意的是,类的加载和初始化只会执行一次,即使创建多个对象也不会重新加载和初始化。而验证、准备和解析则可能会重复执行,例如在运行时通过反射机制获取某个类的信息时就会触发验证、准备和解析过程。在类加载过程中,还会根据一定的策略将类分为不同的类加载器(ClassLoader),以方便对不同类之间的依赖关系进行管理。
5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等
请查看本专栏内其他相关内容。
二、属性
1、概述
类的属性也被称为类的成员变量或字段,它们用于存储对象的状态信息。
2、类型
类的属性可以是以下类型之一:
- 基本数据类型:例如 int、double、boolean 等。
- 引用类型:例如字符串、数组、自定义类等。
- 特殊类型:例如枚举类型等。
3、定义属性
package main;/*** @author zibo* @date 2023/3/7 14:53* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Person {/*** 名字*/public String name;
}
4、修改与访问属性
package main;/*** @author zibo* @date 2023/3/5 12:55* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {// 1. 创建一个Person对象Person person = new Person();// 2. 修改 Person 对象的 name 属性person.name = "zibo";// 3. 打印 Person 对象的 name 属性System.out.println(person.name);}
}
5、成员变量和局部变量的区别
- 定义位置不同:成员变量定义在类中,而局部变量定义在方法或语句块中。
- 生命周期不同:成员变量的生命周期和对象相同,即当对象创建时,成员变量也会被创建,在对象销毁时,成员变量也会被销毁;而局部变量的生命周期只存在于方法或语句块的执行过程中,执行完后就会被销毁。
- 初始化方式不同:成员变量可以在定义时初始化,也可以在构造方法中初始化;而局部变量必须在定义时初始化,否则无法使用。
- 访问方式不同:成员变量可以通过对象访问,也可以通过类名访问(静态变量);而局部变量只能在所在的方法或语句块中使用,无法从外部访问。
- 作用域不同:成员变量的作用域是整个类,而局部变量的作用域仅限于所在的方法或语句块。
6、静态属性
请查看本专栏内其他相关内容。
三、方法
1、概述
类的方法定义了可以对对象执行的操作。方法可以看作是类的行为或功能的具体实现。
2、方法的内容
Java 类的方法可以包括以下内容:
- 方法名:方法的名称,用于在程序中调用方法。
- 参数列表:方法接受的输入参数,可以是零个或多个。
- 返回类型:方法的返回值类型,可以是任何 Java 数据类型,包括基本数据类型、对象类型和数组类型。
- 访问修饰符:控制方法在哪些位置可以被访问,包括 public、protected、private 和默认。
- 方法体:方法的具体实现代码。
3、定义方法
public class Calculator {// 将两个数字相加并返回结果public int add(int num1, int num2) {return num1 + num2;}
}
4、调用方法
System.out.println(new Calculator().add(100, 100)); // 200
5、静态方法、方法重载、方法重写
请查看本专栏内其他相关内容。
四、代码块
1、概述
Java 类中的代码块是指在类中使用大括号 {}
括起来的一段代码,它们可以是静态的或非静态的,并且可以分为多个不同类型。
- 静态代码块(Static Blocks):用
static { }
来定义,只在类加载时执行一次,且只能访问静态成员变量和方法。 - 实例初始化块(Instance Initialization Blocks):用
{ }
来定义,每次创建新实例时都会执行,且在构造函数之前执行。 - 构造代码块(Constructor Blocks):用
{ }
来定义,与构造函数一起构成了对象的构造过程,每次创建新实例时都会执行,且在构造函数之前执行。
使用代码块的好处是可以将多个方法中共同的部分提取出来,统一进行处理,从而提高代码的重用性和可维护性。比如在静态代码块中可以对静态成员变量进行初始化,或者对数据库连接进行初始化;在实例初始化块中可以对非静态成员变量进行初始化,或者执行一些必要的预处理操作;在构造代码块中可以对所有构造函数中共同的初始化操作进行封装,以避免重复代码。
2、代码块顺序
类被加载时(调用静态变量或静态方法)执行静态代码块;
第一次创建对象时:执行静态代码块——执行普通代码块——执行构造函数;
第二次及之后再创建对象时:执行普通代码块——执行构造函数。
相关文章:

【Java 类】002-类、属性、方法、代码块
【Java 类】002-类、属性、方法、代码块 文章目录【Java 类】002-类、属性、方法、代码块一、类1、类与对象2、类的作用3、创建与使用类类结构创建类调用类运行结果4、Java 类的执行过程5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等二、属性1、概述2、类型3…...

Ubuntu Linux 编译安装的基本步骤
文章目录1 基本步骤若报错: No such file or directory2 解压 tar.bz2文件参考:1 基本步骤 解压: tar -zxvf file.tar.gz 进入解压后的文件夹: cd file 源码编译安装 ./configure # ./configmakesudo make install 若报错&…...

day59反刍笔记
1.本地环境安装vue后,没有vue.js文件,只有vue.cjs.js文件, 引用后也无法正常使用,看npm install vue后的文件夹中没有vue.js文件_找不到vue.js_一枝风的博客-CSDN博客 老哥的博客后得到启发,将原本的命令由࿱…...

【阅读笔记】你不知道的Javascript--强制类型转换4
目录强制类型转换基本概念JSONboolean强转归纳其他知识点被诟病的安全使用隐式强转法则抽象关系比较语法表达式变动强制类型转换 基本概念 类型转换发生在静态类型语言的编译阶段; 强制类型转换则发生在动态类型语言的运行时(runtime) JSON…...

华为OD机试真题Python实现【有效子字符串】真题+解题思路+代码(20222023)
有效子字符串 题目 输入两个字符串S和L,都只包含小写字母, S长度 <= 100,L长度 <= 500000, 判断S是否是L的有效子字符串, 判定规则:S中的每个字符在L中都能找到(可以不连续) 且S在L中字符的前后顺序与S中顺序要保持一致 例如: S="ace"是L="abcd…...

上门按摩预约APP源码-东郊到家源码(开发,PHP,平台搭建)
一、什么是上门按摩预约APP源码? 上门按摩预约APP源码是一款家政服务类型的APP,可以帮忙用户在家就能享受按摩的服务。APP源码分两端,一端是用户端,另外一端是技师端。采用的技术,前端是安卓IOS,后端是PHP&…...

STL讲解——模拟实现vector
STL讲解——模拟实现vector vector深度剖析 在STL源码中,发现vector定义的并不是 start、size、capacity,而是start、finish、end_of_storage. 这样就可以得到size()和capacity()。 sizefinish-start capacityend_of_storage-start 扩容可能是本地扩容也…...

各种经典排序算法介绍及实现源码
一,冒泡排序(Bubble Sort) 排序算法是程序员必须了解和熟悉的一类算法,排序算法有很多种,基础的如:冒泡、插入、选择、快速、归并、计数、基数和桶排序等。 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果不…...

历史大讲堂:这是真·图形化 苹果系统历史回顾(上)
众所周知,米国有个非常牛掰的公司叫苹果,想必大家对这个logo不陌生吧。 目前已发布的苹果产品有iPhone、iPad、iPod等等,简直花样繁多,而且各种功能很好用,我的手机就是一部苹果iPhone X。 等一下,似乎扯远…...

今天女神节,用python画个贺卡送给母亲吧
今天女神节,你给女神妈妈准备了什么祝福呢?如果还没有,那么画个贺卡送给她吧,在你眼里,她是一个什么样的人呢? 是"可爱",“温柔”,“美丽”,“漂亮”…...

【编程基础之Python】11、Python中的表达式
【编程基础之Python】11、Python中的表达式Python中的表达式表达式与运算符算术表达式赋值表达式比较表达式逻辑表达式位运算表达式总结Python中的表达式 在Python中,表达式是由操作数、运算符和函数调用等组成的语法结构,可以进行各种数学运算、逻辑判…...

华为OD机试真题Python实现【乱序整数序列两数之和绝对值最小】真题+解题思路+代码(20222023)
乱序整数序列两数之和绝对值最小 题目 给定一个随机的整数数组(可能存在正整数和负整数)nums, 请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值 并返回这两个数(按从小到大返回)以及绝对值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两…...

字符串转换整数 (atoi)(python)
链接: https://leetcode.cn/problems/string-to-integer-atoi 题目描述: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法…...

洛谷 P1115 最大子段和
题目链接:P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度 n。 第二行有 n 个整数ÿ…...

【Linux】-- 权限和Shell运行原理
目录 Shell的运行原理 用户切换 su - / su sudo 权限 chmod chown chgrp 八进制方法修改文件属性 目录权限 粘滞位 umask 自定义默认权限 Shell的运行原理 广义上,Linux发行版 Linux内核 外壳程序 Linux 从广义上来理解它是一个操作系统 而从狭义上…...

C++各类设计模式及实现详解
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书࿰…...

【Linux】进程理解与学习(Ⅰ)
环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统进程概念什么是进程?进程是什么?我们打开任务管理器可以看到有…...

认识代码之前,请先认识你自己 |《编程人生》
这是我的湛庐课程《给技术人的职场突围课》 (链接) 的一部分。 这篇文章也是 IT 女神征文活动 的一部分。 《编程人生》是一本优秀程序员的采访集,里面记录了15位世界级编程大师的故事。 我在 发刊词 里面说过,在这个书单课里&am…...

react学习笔记-5:react路由
react旧版本路由 旧版本的路由是按照组件的方式来写的 编写router/index.tsx文件 import App from "../App" import Home from "../views/Home" import About from "../views/About" import { BrowserRouter,Routes,Route } from "react…...

[Python图像处理] 使用高通滤波器实现同态滤波
使用高通滤波器实现同态滤波同态滤波基础实现同态滤波相关链接同态滤波基础 同态滤波是一种去除图像中乘性噪声的技术,常用于校正图像中的不均匀照明。根据图像形成的光照反射模型,图像 f(x,y)f(x,y)f(x,y) 可以由以下两个分量表征: 入射到…...

PyTorch深度学习:60分钟入门
PyTorch深度学习:60分钟入门 本教程的目的: 更高层级地理解PyTorch的Tensor库以及神经网络。训练一个小的神经网络来对图像进行分类。 本教程以您拥有一定的numpy基础的前提下展开 Note: 务必确认您已经安装了 torch 和 torchvision 两个包。 这是一个基于Pytho…...

C语言指针常见问题汇总
我们在学C语言时,指针是我们最头疼的问题之一,针对C语言指针,博主根据自己的实际学到的知识以及开发经验,总结了以下使用C语言指针时常见问题。 1、指针做函数参数 学习函数的时候,讲了函数的参数都是值拷贝…...

Coremail邮件系统全新上线存档邮箱功能
邮箱积累邮件太多,搜索起来又慢又麻烦! 我的重要邮件忘记下载丢失了!14天自动删除太难了! 有没有可能重要邮件自动存档,解救一下“遗忘星”人? 在我们日常工作中,邮件是最经常使用的办公工具之一…...

Python绘图
1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import numpy as np import matplotlib as mpl import matplotlib.pyplot as pltnp.random.seed(1000) y np.random.standard_normal(10) print "y %s"% y x range(len(y)) print "x%s&q…...

【独家】华为OD机试 - 第K个最小码值的字母(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试…...

整数反转(python)
题目链接: https://leetcode.cn/problems/reverse-integer/ 题目描述: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231,231−1][−2^{31}, 2^{31} − 1][−231,231…...

【数据结构】二叉树与堆
文章目录1.树概念及结构1.1树的相关概念1.2树的结构2.二叉树概念及结构2.1相关概念2.2特殊的二叉树2.3二叉树的性质2.4二叉树的存储结构3.二叉树的顺序结构及实现3.1二叉树的顺序结构3.2堆的概念3.3堆的实现Heap.hHeap.c3.4堆的应用3.4.1 堆排序3.4.2 TOP-KOJ题最小K个数4.二叉…...

Git图解-常用命令操作-可视化
目录 一、前言 二、初始化仓库 2.1 设置用户名与邮箱 2.2 初始化仓库 三、添加文件 四、查看文件状态 五、查看提交日志 六、查看差异 七、版本回退 八、删除文件 九、分支管理 9.1 创建分支 9.2 切换分支 9.3 查看分支 9.4 合并分支 十、文件冲突 十一、转视…...

C语言-基础了解-20-typedef
typedef 一、typedef C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE: typedef unsigned char BYTE; 在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写&…...

Ubuntu系统升级16.04升级18.04
一、需求说明 作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版,目前官网最新版本是22.04。Ubuntu16.04是2016年4月发行的版本,于2019年4月停止更新维护。很多软件支…...