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

news2024/9/25 17:19:06

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就属于哪个对象。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

群晖NAS安装web服务器和搭建PHP环境

文章目录 安装Web Station 和 PHP配置PHP配置新站点(虚拟主机):配置nginx 安装MariaDB修改数据库配置配置远程连接远程连接 最近折腾了一台群晖NAS,并搭建了一套web服务器,关于其中的一些设置,和传统的Linu…

Linux应急响应思路和技巧:进程分析篇

前言 本文总结自网宿安全演武实验室安全应急响应团队日常工作实践,主要介绍在Linux服务器环境出现明确或疑似的被入侵表现之后,安全人员如何在服务器系统中确认入侵结果,执行入侵后的溯源取证、入口定位、行为还原、后门定位等工作&#xff…

大数据框架总结(全)

☔️ 大数据框架总结(全) 关注“大数据领航员”,在公众号号中回复关键字【大数据面试资料】,即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 (1)客户端通过…

TypeScript 语言在不改变算法复杂度前提下,细节上性能优化,运行时性能提升效果明显吗?

有经验的专家写的代码,和无经验的新手写的代码,在运行时性能上大概会有多少差异? 个人感觉,常规业务逻辑代码通常可以差 1 倍;如果算上框架的影响,可以差 2~4 倍。 仅考虑业务代码的话,新手容易…

Python3 使用 pymssql 连接 SQL Server 报错:DB-Lib error message 20002, severity 9

一、版本说明 python版本: 3.12.1 pymssql版本: 2.3.0 # pymssql.version_info() SQL Server版本:SQL Server 2008 OS版本: rocky linux 9.4二、报错信息 Traceback (most recent call last):File "src/pymssql/_…

四大运营商大流量卡测评,手机卡,物联网卡,纯流量卡

买大流量卡,看4个方面 优惠时间。有的只是12个月,24个月有优惠【可以先用一年,然后注销】通用流量。而不是定向流量全国通话分钟数。而不是亲情通话分钟数销户方式。是否支持随时销户,异地销户,线上销户,额…

【云原生】kubernetes中的认证、权限设置---RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【云擎未来,智信天下】移动云服务器Docker部署+远程连接Redis

文章目录 引言: 移动云:云擎未来,智信天下一、什么是Redis?二、Redis 与其他 key-value 存储有什么不同?Redis 架构 三、环境准备四、部署流程使用Redis Desktop Manager远程连接操作数据库总结与未来展望云擎未来&…

Matlab进阶绘图第57期—带填充纹理的横向柱状图

带填充纹理的横向柱状图是通过在原始横向柱状图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不足而导致的对象识别困难问题。 由于Matlab中未提供纹理填充选项,因此需要大家自行设法解决。 本文使用Kesh Ikuma制作的hatchfill2工具&#…

Nginx | 正向代理与Proxy插件整合

写在前面 🍁个人主页:微枫Micromaple 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是我们俗称的内网,局域网外的互…

docker安装etcd

1.查找etcd镜像 docker search etcdNAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。 OFFICIAL: 是否 docker 官方发布 2.拖取镜像并生成对应容器 docker run --name etcd -d -p 2379:2379 -p 2380:2380 …

zstd库数据压缩与解压缩

在 Visual Studio 2019 中使用 C 的 zstd 库进行数据压缩与解压缩 在今天的博客中,我们将探讨如何在 Visual Studio 2019 中使用 zstd 库进行高效的数据压缩和解压缩。zstd(也称为 Zstandard 或 zstd)是由 Facebook 开发的开源压缩库&#x…

每日一题24:数据操作之第N高的薪水

一、每日一题 表: Employee ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- 在 SQL 中,id 是该表的主键。 该表的每一行都包含有关员工工资的信息。查询 Employee 表中第 …

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月27日,星期一

每天一分钟,知晓天下事! 2024年5月27日 星期一 农历四月二十 1、 气象台:今天,广西、广东、福建等十余省份部分地区有大到暴雨,局地有雷暴大风等强对流天气。 2、 我国已有24省份已出台省级控烟相关法规,…

易备数据备份软件:从 .VMDK 文件中对虚拟机进行文件级别的恢复

VMDK 是 VMware 创建的开放式的文件格式,主要用于云计算和虚拟化服务。从基本上讲,.vmdk 文件是虚拟磁盘,其中包含 VMware 虚拟机的所有信息。 可以使用多种应用(Winzip、7zip 等,当然也可以使用易备数据备份软件&…

2024年中国电机工程学会杯数学建模思路 - 案例:感知机原理剖析及实现

# 前言 2024电工杯(中国电机工程学会杯)数学建模思路解析 最新思路更新(看最新发布的文章即可): https://blog.csdn.net/dc_sinor?typebloghttps://blog.csdn.net/dc_sinor/article/details/128779911) 一、感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法…

杰理蓝牙WiFi芯片AC7916A—云信通讯

杰理蓝牙WiFi芯片AC7916A是一种高性能、低功耗的解决方案芯片,具有卓越的传输速度、连接稳定性和覆盖范围。其提供的多种芯片型号,可以满足不同场景的需求,例如,BLE Mesh Mesh网络、智能穿戴、身体监测、智能家居和灯光控制等。 …

辽宁省实验OJ 235. Sting(manacher+trie)

题目 登录 - Lnsyzx Online Judge 思路来源 辽宁省实验oj官方题解 题解 manacher,对回文这一半的串建个trie树, manacher初始对半径取min的时候,先倍增当前回文串定位到树上这个深度的位置 然后不断往外扩展时在trie树上扩展&#xff0c…

电脑太卡怎么办?这些技巧你必须知道

电脑卡顿是许多电脑用户都会遇到的问题,它可能导致工作效率低下,甚至影响到日常生活。可是电脑太卡怎么办呢?其实电脑卡顿问题通常是可以解决的,只要我们采取正确的方法。本文将介绍三种解决电脑卡顿问题的方法,帮助您…