当前位置: 首页 > news >正文

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下制作进度条

目录 前言&#xff1a; 回车和换行有区别吗&#xff1f; 回车和换行的区别展示&#xff08;这个我在Linux下演示&#xff09; 为什么会消失呢? 回车和换行的区别 为什么\r和\n产生的效果不同&#xff1f; 打印进度条&#xff1a; &#xff08;1&#xff09;打印字符串 …...

C++学习笔记2

T1 奇怪的教室 题目背景 LSU 的老师有个奇怪的教室&#xff0c;同学们会从左到右坐成一个横排&#xff0c;并且同一个位置可以坐多个同学。这天&#xff0c;入学考试的成绩下来了。同学们想根据入学考试的成绩&#xff0c;找出班里学霸扎堆的区域“学霸区”。 题目描述 共有…...

细数:智能物流装备界的并购案~

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 近年来&#xff0c;随着智能仓储物流行业的快速发展&#xff0c;全球范围内的并购活动日益频繁&#xff0c;各大企…...

微信小程序播放编码为 video/mp4;codecs=vp8 opus 的视频没有声音

最近在做浏览器录屏功能&#xff0c;主要是录屏加上麦克风生成mp4视频&#xff0c;最终生成的是编码为 video/mp4;codecsvp8 opus 的视频&#xff0c;音频编码因为是 opus 是无法在小程序正常播放的&#xff0c;这样就导致了视频没有声音。后来就在服务端做了一层转换&#xff…...

Linux 指令lsblk 作用,以及查看cpu使用情况和磁盘IO iostat指令详解

lsblk 指令 在Linux系统中&#xff0c;lsblk&#xff08;列表块设备&#xff09;命令是一个非常实用的工具&#xff0c;用于显示所有可用的块设备信息&#xff0c;如硬盘、USB驱动器、SD卡以及它们的分区。这个命令以易于理解的树状结构展示这些信息&#xff0c;清晰地表明了设…...

Mybatis之Sqlsession、Connection和Transaction三者间的关系

前言 最近在看Mybatis的源码&#xff0c;搜到这篇文章Sqlsession、Connection和Transaction原理与三者间的关系&#xff0c;debug之后发现有不少疑惑&#xff0c;于是按照原文整理了一下&#xff0c;记录下debug中的一些困惑点。 对于我们开发来讲&#xff0c;不管跟任何关系…...

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&#xff0c;大家第一个想到的就是GPT。 虽然它确实很厉害&#xff0c;但奈何于我们水土不服&#xff0c;使用门槛有些高。 不过随着GPT的爆火&#xff0c;现在AI智能工具已经遍布到各行各业了&#xff0c;随着时间的推移&#xff0c;国内的AI工具也已经“百花盛放”了…...

弹性云服务器是什么,为何如此受欢迎

云计算作为当下炙手可热的技术领域&#xff0c;已然成为现代企业不可或缺的核心能力。云服务器作为云计算的基石之一&#xff0c;在这个数字化时代发挥着至关重要的作用。而弹性云服务器&#xff0c;作为云服务器的一种演进形式&#xff0c;更是备受瞩目。 弹性云服务器&#…...

Docker部署RabbitMQ与简单使用

官网地址&#xff1a; Messaging that just works — RabbitMQ 我的Docker博客:Docker-CSDN博客 1.结构 其中包含几个概念&#xff1a; **publisher**&#xff1a;生产者&#xff0c;也就是发送消息的一方 **consumer**&#xff1a;消费者&#xff0c;也就是消费消息的一方 …...

2024年黄石市建设优质工程评价认定申报条件、流程及材料合集

2024年黄石市建设优质工程评价认定申报条件、流程及材料合集如下&#xff0c;黄石市的企业单位可以了解一下&#xff0c;有疑问名字找我哦。 第一章总则 第一条为贯彻落实《中华人民共和国建筑法》、《安全生产法》、《建设工程质量管理条例》、《建设工程安全生产管理条例》…...

偏微分方程算法之混合边界条件下的差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 我们在前几节中介绍了Poisson方程的边值问题&#xff0c;接下来对椭圆型偏微分方程的混合边值问题进行探讨&#xff0c;研究对象为&#xff1a; 其中&#xff0c;为矩形区域&#xff0c;为上的连续函数…...

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…...

森林消防新利器:高扬程水泵的革新与应用/恒峰智慧科技

随着全球气候变化的加剧&#xff0c;森林火灾的频发已成为威胁生态安全的重要问题。在森林消防工作中&#xff0c;高效、快速的水源供给设备显得尤为重要。近年来&#xff0c;高扬程水泵的广泛应用&#xff0c;为森林消防工作带来了新的希望与突破。 一、高扬程水泵的技术优势 …...

Microsoft Universal Print 与 SAP 集成教程

引言 从 SAP 环境打印是许多客户的要求。例如数据列表打印、批量打印或标签打印。此类生产和批量打印方案通常使用专用硬件、驱动程序和打印解决方案来解决。 Microsoft Universal Print 是一种基于云的打印解决方案&#xff0c;它允许组织以集中化的方式管理打印机和打印机驱…...

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、联合体类型的声明 联合体也叫做共用体   与…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...