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、联合体类型的声明 联合体也叫做共用体 与…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

九天毕昇深度学习平台 | 如何安装库?
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…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...