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、联合体类型的声明 联合体也叫做共用体 与…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...




