韩顺平0基础学Java——第11天

p234-249

又一个月了,时间过得好快啊,希望支棱起来

可变参数

public int sum(int ... nums){

}

这个nums是数组

细节:

1可变参数可以为0个,或任意个

2可变参数的实参可以为数组

3可变参数的本质就是数组

4可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后

5一个形参列表中只能有一个可变参数

练习:

第一次见return可以这样写的。

作用域

1.。Java中,主要的便利就是属性(成员变量)和局部变量、

2.。我们说的局部变量一般是指在成员方法中定义的变量

3.java中的作用于分类

        全局变量:即属性,作用域为整个类体

        局部变量:也就是除了属性之外,作用域为定义它的代码块中

4.全局变量可以不赋值直接用,因为有默认值,局部变量必须赋值后,才能使用(,)

所以说调用的时候,属性可以直接用,但是方法之间是独立的栈,所以不行。

作用域细节

1属性和局部变量可以重名,调用时遵循就近原则

2在同一个作用域中,不能重名

3.属性(字段)的生命周期更长,和对象一同生灭,局部变量伴随它 的代码块的执行而创建,伴随代码块的结束而销毁,即在一次方法调用的过程中。

4作用域范围不同:全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)

5.局部变量只能在本类中对应的方法调用

6修饰符不一样:全局变量可以有修饰符,但是局部不行。修饰符:public、protected、privated等等

构造方法/构造器constructor

在前文创造人类的对象的时,是先把一个对象创造好后,再给它的年龄和姓名属性赋值,如果现在要求在创建人类的对象时,就直接指定这个对象的年龄和姓名?

作用:对新对象的初始化

基本语法:

【修饰符】 方法名 (形参列表){

方法体

}

注:构造器的修饰符可以默认,没有返回值,方法名和类名必须一样,参数列表和成员方法一样的规则,构造器的调用由系统完成。

class Person{

        int age;

        String name;

        public Person(String pName,int pAge){

                System.out.println("构造器被调用,完成初始化~");

                name = pName;

                age = pAge;        

}//构造器没有返回值,void都不写,构造器的名称和类名一致。

}

然后如何使用呢?

直接通过构造器指定名字。

Person p1 = new Person("madake",88);

注意事项:一个类可以定义多个构造器

这种情况可以选择初始化年龄+名字,或者只初始化名字了~

构造器是完成对象的初始化,不是创建对象!!构造器不能像成员方法那样调用。

如果没有定义构造器,系统会自动给类生成一个默认无参构造器,使用javap反编译。

当我们新建对象时的那个小括号,其实就是在调用那个默认的无参构造器!

Person p1 = new Person();

一旦定义了自己的构造器,默认的构造器就被覆盖了,就不能再使用默认无参构造器了。除非显式的定义一下,如Dog(){}

这相当于方法重载了?

练习

对象创建的流程分析

 

流程分析:0244_韩顺平Java_对象创建流程详解_哔哩哔哩_bilibili

1.在方法区加载Person类,只会加载一次。

2.在堆里分配空间(地址),并赋默认值。即age=0,name=null

3.显式初始化:给age变成90,name不动

4.执行构造器初始化,再进行属性的赋值→把age变成20,把name指向常量池的“小倩”

5.再把p指向堆里的空间

实际上,真正的对象在堆里面,p只是对象的引用(名字)

关键字:this

如果构造器的形参,能够直接写成属性名,就更好了。比如:

实际上,传进来的name和age变成null和0了。根据变量的作用域原则,就近,构造器的name就是局部变量了,而不是属性(字段)了。ai的解释:

this:java虚拟机会给每个对象分配this,代表当前对象。(py的self?)

老王:我的眼睛。

小美:我的眼睛。

虽然都是我的,但是指向的是两个不同的眼睛。

this的本质

this关键字的理解:指向了自己。

每一个对象都是有this的

this指向当前对象在内存中的地址。当一个对象被创建时,Java运行时环境会为这个对象分配内存,并使用this来引用这个内存地址。

使用hashCode方法可以找到对象的(虚拟)地址。比如:System.out.println(dog1.hashCode);

简单的说,哪个对象调用,this就属于哪个对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MicroLED:苹果对知识产权的影响

Yole的洞察揭示,MicroLED IP在经历了七年的爆炸式增长后,已然屹立于行业之巅。苹果公司,作为微LED领域的先行者,早在2014年便敏锐地捕捉到Luxvue这家初创公司的潜力,将其纳入麾下,引发了业界的广泛关注。然…

基线管理概述

一、基线概念 ①安全基线 ②安全基线与英文排版的基线类似,是一条参考标准线。 ③安全基线表达了最基本需要满足的安全要求。 ④安全基线表达了安全的木桶原理木桶原理:一只木桶盛水的多少,并不取决于桶壁上最高的那块 木块,而恰恰取决于…

如何让大模型更聪明?提升AI智能的关键策略

如何让大模型更聪明?提升AI智能的关键策略 🤖 如何让大模型更聪明?提升AI智能的关键策略摘要引言方向一:算法创新🚀1.1 自监督学习的崛起1.2 强化学习的应用 方向二:数据质量与多样性📊2.1 数据…

大学校园广播“录编播”与IP广播系统技术方案

一、项目概述 1、校园IP网络广播系统概述 大学校园广播系统是学校整个弱电系统中的子系统,它是每个学校不可缺少的基础设施之一,在传递校园文化、传播校园新闻资讯方面发挥着重要的作用。近几年来,虽然视频技术和网络技术在飞速发展&#xf…

VS2022配合Qt与boost.asio实现一个TCP异步通信系统远程操作mysql数据库

上一篇博客我们通过boost.asio搭建了一个简单的异步服务器,但是那是基于命令行的,所有用起来还是相当枯燥的,这次我们配合Qt实现一个简陋的前端页面来控制后端mysql数据库中的表,实现添加密钥的功能(本次博客使用的boost版本是1.8…

AI智能体|手把手教你使用扣子Coze图像流的文生图功能

大家好,我是无界生长。 AI智能体|手把手教你使用扣子Coze图像流的文生图功能本文详细介绍了Coze平台的\x26quot;图像流\x26quot;功能中的\x26quot;文生图\x26quot;节点,包括创建图像流、编排文生图节点、节点参数配置,并通过案例…

Three.js 研究:3、创建一个高科技圆环

打开Alpha混合 修改环形颜色,更改发光的颜色,更改发光的强度为2 更改世界环境灯光

PyTorch学习笔记:新冠肺炎X光分类

前言 目的是要了解pytorch如何完成模型训练 https://github.com/TingsongYu/PyTorch-Tutorial-2nd参考的学习笔记 数据准备 由于本案例目的是pytorch流程学习,为了简化学习过程,数据仅选择了4张图片,分为2类,正常与新冠&#xf…

解决鼠标滚动时element-ui下拉框错位的问题

问题描述:elementUi的el-select下拉选择框,打开之后,直到失去焦点才会自动关闭。 在有滚动条的弹窗中使用时就会出现打开下拉框,滚动弹窗,el-select下拉框会超出弹窗范围的问题. 解决方案: 1、先在util文件夹下创建个hideSelect.js文件,代码…

《德米安:彷徨少年时》

文前 我之所愿无非是尝试依本性而生活, 却缘何如此之难? 强盗 疏于独立思考和自我评判的人只能顺应现成的世俗法则,让生活变轻松。其他人则有自己的戒条:正派人惯常做的事于他可能是禁忌,而他自认合理的或许遭他人唾…

GM Bali,OKLink受邀参与Polygon AggIsland大会

5月16日-17日,OKLink 受到生态合作伙伴 Polygon 的特别邀请,来到巴厘岛参与以 AggIsland 为主题的大会活动并发表演讲,详细介绍 OKLink 为 Polygon 所带来的包括多个浏览器和数据解析等方面的成果,并与 Polygon 一起,对…

深入解析BGP:互联网路由协议的全貌与应用

BGP(Border Gateway Protocol)是互联网上用于在自治系统(AS)之间交换路由信息的协议。它负责决定数据包的最佳路径以及路由的选择。以下是BGP的一些关键特点和工作原理的详细内容: BGP的特点: 1.路径矢量型…

stm32-PWM输出比较配置

配置流程 1.RCC开启时钟 2.时钟源选择和配置时基单元 这一部分上一篇有写,可以参考一下上一篇的内容,此处不多赘述了。 原文链接:https://blog.csdn.net/m0_74246768/article/details/139048136 3.配置输出比较单…

Ubuntu server 24 源码安装Quagga 支持动态路由协议ospf bgp

1 下载:GitHub - Quagga/quagga: Quagga Tracking repository - Master is at http://git.savannah.gnu.org/cgit/quagga.git 2 安装 #安装依赖包 sudo apt install gcc make libreadline-dev pkg-config #解压 tar zxvf quagga-1.2.4.tar.gz cd quagga-1.2.4/sudo ./co…

Spring Boot 项目统一异常处理

在 Spring Boot 项目开发中,异常处理是一个非常重要的环节。良好的异常处理不仅能提高应用的健壮性,还能提升用户体验。本文将介绍如何在 Spring Boot 项目中实现统一异常处理。 统一异常处理有以下几个优点: 提高代码可维护性:…

Linux系统之GoAccess实时Web日志分析工具的基本使用

Linux系统之GoAccess实时Web日志分析工具的基本使用 一、GoAccess介绍1.1 GoAccess简介1.2 GoAccess功能1.3 Web日志格式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统镜像源3.4 更新软件列表…

夏老师小课堂(7) 免费撸Harmony0S应用开发者高级认证

点击上方 “机械电气电机杂谈 ” → 点击右上角“...” → 点选“设为星标 ★”,为加上机械电气电机杂谈星标,以后找夏老师就方便啦!你的星标就是我更新动力,星标越多,更新越快,干货越多! 关注…

24年湖南教资认定即将开始,别被照片卡审!

24年湖南教资认定即将开始,别被照片卡审!

springboot vue 开源 会员收银系统 (4) 门店模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (3) 会员管理的开发 实现了简单的会员添加 下面我们将从会员模块进行延伸 门店模块的开发 首先我们先分析一下常见门店的管理模式 常见的管理形式为总公司 - 区域管理(若干个门店&#xff…

简单操作一单利润500+,最新快手缺货赔付玩法,【找店教程+详细教程】

在如今快速变化的时代,寻找充满创新的收入来源已经成为了一种趋势。这不仅是为了实现财务的自由,更是为了在生活中拥有更多的选择权。一项革新的实践——利用手机进行快手缺货赔付单号的操作,已经成为许多人稳定“下车”的一个新途径。 据了…