java08基础(值传递和引用传递 类和对象)
目录
一. 值传递和引用传递
1. 值传递
2. 引用传递
二. 面向对象思想
三. 类和对象
1. 类
2. 对象
2.1 使用
2.2 成员变量和局部变量区别
2.3 操作成员方法
2.4 this关键字(初识)
2.5 构造方法 (见java09)
一. 值传递和引用传递
1. 值传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数.
public static void main(String[] args) {int num1 = 10;int num2 = 20;swap(num1, num2);System.out.println("num1:" + num1 + "num2:" + num2);}// 值传递public static void swap(int a, int b) {System.out.println("进入swap的a:" + a + "b:" + b);a = a ^ b;b = a ^ b;a = a ^ b;System.out.println("结束的时候swap的a" + a + "b:" + b);}
2. 引用传递
引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
示例1:
public static void main(String[] args) {// 测试引用传递int[] ns = { 1, 2, 3, 4 };System.out.println("main开始前" + Arrays.toString(ns));swap(ns);System.out.println("main结束" + Arrays.toString(ns));}public static void swap(int[] ns1) {System.out.println("数组里的内容" + ns1);System.out.println("数组里的值" + Arrays.toString(ns1));if (ns1.length >= 2) {ns1[0] = ns1[0] ^ ns1[ns1.length - 1];ns1[ns1.length - 1] = ns1[0] ^ ns1[ns1.length - 1];ns1[0] = ns1[0] ^ ns1[ns1.length - 1];}System.out.println("操作后的数组内容" + Arrays.toString(ns1));}
示例2:
public static void main(String[] args) {int[] ns1 = { 1, 2, 3, 4 };int[] ns2 = { 22, 33 };swap(ns1, ns2);System.out.println(Arrays.toString(ns1));System.out.println(Arrays.toString(ns2));}public static void swap(int[] ns1, int[] ns2) {int[] temp = ns1;ns1 = ns2;ns2 = temp;System.out.println(Arrays.toString(ns1));System.out.println(Arrays.toString(ns2));}
二. 面向对象思想
●什么是面向过程,什么是面向对象
●面向过程:亲力亲为
●面向对象:找人帮忙
三. 类和对象
●类:是对某一类事物的统称,比如举例人
●对象:是这一类事物中具体的个体。
类的基本组成部分:
属性:对类的静态描述(成员变量)
行为:这个类能干什么(方法)
类和对象的关系
●类是抽象的
●对象是具体的
总结:类是对象的抽象,对象是类的具体。
1. 类
语法规则:
修饰符 class 类名{field;成员属性/全局变量method;方法 }//修饰符:public//class: 修饰类的关键字//类名:标识符,大驼峰命名法成员属性:修饰符 数据类型 变量名;修饰符 ---public公共的,privated私有的数据类型---任意数据类型均可变量名---见名知意
2. 对象
对象的创建:
●导包:import 包名.类名(同包下的类不用导包,java.lang包下的类不用导包)
●位置:放在类的上面,package的下面。
语法:
import 包名.类名[注]:
●要使用的类和当前的类在同一个包下面,可以省略导包。
●使用java.lang包下的类,可以省略导包string,System
类名 对象名 = new 类名()●对象名:标识符,小驼峰 和变量名命名一致
2.1 使用
操作成员变量:
调用属性:赋值:对象名.属性名 = 值取值:数据类型 变量名 = 对象名.属性名●数据类型和成员变量名一致即可
●成员变量有默认值,基本数据类型和默认值一样。public class Person {// 属性public String name;public int age; }Person p1 = new Person();p1.name = "zkt";p1.age = 20;
●操作成员变量的时候,有可能会出现非法赋值;
●可以不让外部直接访问成员变量,将成员变量私有化(private)
提供getXXX()获取成员变量,方法有返回值
提供setXXX(数据类型 参数)给成员变量赋值,有参数
//有返回值,取值public int getAge() {return age;}//有参数,赋值//局部变量和全局变量发生重名的时候,优先使用局部变量//成员变量前面加this关键字--强调当前的变量是成员变量public void setAge(int age) {if (age < 0 || age > 140) {System.out.println("输入年龄有误");} else {this.age = age;}
2.2 成员变量和局部变量区别
区别 成员变量 局部变量 类中位置不同 类内,方法外 方法中 初始化值不同 有默认初始化值,同数组一样 没有默认初始化值,使用之前必须完成赋值 内存位置不同 堆内存 栈内存 生命周期不同 在堆的内部,随着对象的产生而产生,随着对象被垃圾回收机制回收而消亡
随着方法的产生而创建,栈内,方法出栈,局部变量消亡。生命周期较短
作用域 类 成员方法中
2.3 操作成员方法
调用成员方法:对象名.方法名(参数)---无返回的值方法调用数据类型 变量名 = 对象名.方法名(参数)---有返回的值方法调用public class Person {// 属性public String name;//操作成员变量的时候,有可能会出现非法赋值;//可以不让外部直接访问成员变量,将成员变量私有化(private)//提供getXXX()获取成员变量,方法有返回值//提供setXXX(数据类型 参数)给成员变量赋值,有参数private int age;// 方法public void study(String name) {System.out.println(name + "喜欢学习");}public String eat(String sth) {return name + "中午要吃" + sth;}//有返回值,取值public int getAge() {return age;}//有参数,赋值//局部变量和全局变量发生重名的时候,优先使用局部变量//成员变量前面加this关键字--强调当前的变量是成员变量public void setAge(int age) {if (age < 0 || age > 140) {System.out.println("输入年龄有误");} else {this.age = age;}} }public class Demo02 {public static void main(String[] args) {Person p1 = new Person();p1.name = "zkt";System.out.println(p1.name);p1.study();String str1 = p1.eat("红烧肉");System.out.println(str1);} }
2.4 this关键字(初识)
当局部变量和成员变量重名时,Java一般选择就近原则,优先使用局部变量。非要使用成员变量,就需要使用this关键字进行区分。
class Student {int num = 10;public void show(){int num = 20;System.out.println(num); // 20 局部变量System.out.println(this.num); // 10 成员变量} }this含义: 当前对象的引用,谁调用谁就是this
用法:
this.字段 this.方法名() this() -- 调用构造函数 放在代码第一行
2.5 构造方法 (见java09)
相关文章:
java08基础(值传递和引用传递 类和对象)
目录 一. 值传递和引用传递 1. 值传递 2. 引用传递 二. 面向对象思想 三. 类和对象 1. 类 2. 对象 2.1 使用 2.2 成员变量和局部变量区别 2.3 操作成员方法 2.4 this关键字(初识) 2.5 构造方法 (见java09) 一. 值传递和引用传递 1. 值传递 值传递是指在调用函数时将…...
高级数据结构与算法习题(9)
一、判断题 1、Let S be the set of activities in Activity Selection Problem. Then the earliest finish activity am must be included in all the maximum-size subset of mutually compatible activities of S. T F 解析:F。设S是活动选择问题中的一…...
Linux的vim下制作进度条
目录 前言: 回车和换行有区别吗? 回车和换行的区别展示(这个我在Linux下演示) 为什么会消失呢? 回车和换行的区别 为什么\r和\n产生的效果不同? 打印进度条: (1)打印字符串 …...
C++学习笔记2
T1 奇怪的教室 题目背景 LSU 的老师有个奇怪的教室,同学们会从左到右坐成一个横排,并且同一个位置可以坐多个同学。这天,入学考试的成绩下来了。同学们想根据入学考试的成绩,找出班里学霸扎堆的区域“学霸区”。 题目描述 共有…...
细数:智能物流装备界的并购案~
导语 大家好,我是智能仓储物流技术研习社的社长,老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 近年来,随着智能仓储物流行业的快速发展,全球范围内的并购活动日益频繁,各大企…...
微信小程序播放编码为 video/mp4;codecs=vp8 opus 的视频没有声音
最近在做浏览器录屏功能,主要是录屏加上麦克风生成mp4视频,最终生成的是编码为 video/mp4;codecsvp8 opus 的视频,音频编码因为是 opus 是无法在小程序正常播放的,这样就导致了视频没有声音。后来就在服务端做了一层转换ÿ…...
Linux 指令lsblk 作用,以及查看cpu使用情况和磁盘IO iostat指令详解
lsblk 指令 在Linux系统中,lsblk(列表块设备)命令是一个非常实用的工具,用于显示所有可用的块设备信息,如硬盘、USB驱动器、SD卡以及它们的分区。这个命令以易于理解的树状结构展示这些信息,清晰地表明了设…...
Mybatis之Sqlsession、Connection和Transaction三者间的关系
前言 最近在看Mybatis的源码,搜到这篇文章Sqlsession、Connection和Transaction原理与三者间的关系,debug之后发现有不少疑惑,于是按照原文整理了一下,记录下debug中的一些困惑点。 对于我们开发来讲,不管跟任何关系…...
WRT1900ACS搭建openwrt服务器小记
参考链接 wrt1900acs openwrt wrt1900acs openwrt 刷机 wrt1900acs原生固件刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-factory.img wrt1900acs openwrt更新刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin 通过WEB UI来…...
Spring AOP(3)
目录 Spring AOP原理 代理模式 代理模式中的主要角色 静态代理 动态代理 总结:面试题 什么是AOP? Spring AOP实现的方式有哪些? Spring AOP实现原理 Spring使用的是哪种代理方式? JDK和CGLIB动态代理的区别? Spring AOP原理 代理模式 代理模式, 也叫委托模式. …...
推荐5个免费的国内平替版GPT
提起AI,大家第一个想到的就是GPT。 虽然它确实很厉害,但奈何于我们水土不服,使用门槛有些高。 不过随着GPT的爆火,现在AI智能工具已经遍布到各行各业了,随着时间的推移,国内的AI工具也已经“百花盛放”了…...
弹性云服务器是什么,为何如此受欢迎
云计算作为当下炙手可热的技术领域,已然成为现代企业不可或缺的核心能力。云服务器作为云计算的基石之一,在这个数字化时代发挥着至关重要的作用。而弹性云服务器,作为云服务器的一种演进形式,更是备受瞩目。 弹性云服务器&#…...
Docker部署RabbitMQ与简单使用
官网地址: Messaging that just works — RabbitMQ 我的Docker博客:Docker-CSDN博客 1.结构 其中包含几个概念: **publisher**:生产者,也就是发送消息的一方 **consumer**:消费者,也就是消费消息的一方 …...
2024年黄石市建设优质工程评价认定申报条件、流程及材料合集
2024年黄石市建设优质工程评价认定申报条件、流程及材料合集如下,黄石市的企业单位可以了解一下,有疑问名字找我哦。 第一章总则 第一条为贯彻落实《中华人民共和国建筑法》、《安全生产法》、《建设工程质量管理条例》、《建设工程安全生产管理条例》…...
偏微分方程算法之混合边界条件下的差分法
目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 我们在前几节中介绍了Poisson方程的边值问题,接下来对椭圆型偏微分方程的混合边值问题进行探讨,研究对象为: 其中,为矩形区域,为上的连续函数…...
apollo资料整理
Application X: Application X Apollo: Apollo 自动驾驶开放平台 Cyber RT API tutorial — Cyber RT Documents documentation Cyber RT API tutorial — Cyber RT Documents documentation GitHub - daohu527/dig-into-apollo: Apollo notes (Apollo学习笔记) - Apollo l…...
森林消防新利器:高扬程水泵的革新与应用/恒峰智慧科技
随着全球气候变化的加剧,森林火灾的频发已成为威胁生态安全的重要问题。在森林消防工作中,高效、快速的水源供给设备显得尤为重要。近年来,高扬程水泵的广泛应用,为森林消防工作带来了新的希望与突破。 一、高扬程水泵的技术优势 …...
Microsoft Universal Print 与 SAP 集成教程
引言 从 SAP 环境打印是许多客户的要求。例如数据列表打印、批量打印或标签打印。此类生产和批量打印方案通常使用专用硬件、驱动程序和打印解决方案来解决。 Microsoft Universal Print 是一种基于云的打印解决方案,它允许组织以集中化的方式管理打印机和打印机驱…...
VBA在Excel中字母、数字的相互转化
VBA在Excel中字母、数字的相互转化 字母转数字的方法 数字转字母的方法 众所周知,Excel表中的行以数字展示,列用字母展示,如下图: 编程时,很多时候需要将列的字母转变为数字使用,如cells(num1,num2).value等,不知大家是怎么将字母转化为数字的,Excel是否有其他方式…...
【C语言】——联合体与枚举
【C语言】——联合体与枚举 一、联合体1.1、联合体类型的声明1.2、联合体的特点1.3、相同成员的结构体和联合体对比1.4、联合体的大小计算1.5、联合体的应用举例 二、枚举2.1、枚举类型的声明2.2、枚举类型的优点 一、联合体 1.1、联合体类型的声明 联合体也叫做共用体 与…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...




