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

【Java基础】学习笔记2 - 数组运算符与main方法

目录

      • 多态数组
      • ==运算符
      • hashCode
      • finalize 方法
    • 第三阶段
      • 类变量
      • 类方法
      • main 方法
      • 代码块
      • 单例模式
        • 饥饿式
        • 懒汉式

多态数组

顾名思义,就是在一个数组内体现多态

public class PolyArrDemo {public static void main(String[] args) {// 定义多态数组Fruit[] fruits = new Fruit[3];fruits[0] = new Fruit();fruits[1] = new Orange();fruits[2] = new Pear();for (Fruit fruit : fruits) {// 根据动态绑定原理,输出不同的值fruit.say();}}
}class Fruit {public void say() {System.out.println("this is fruit");}
}class Pear extends Fruit {@Overridepublic void say() {System.out.println("pear");}
}class Orange extends Fruit {@Overridepublic void say() {System.out.println("orange");}
}

如果你想要特定的调用每个子类中的新定义的方法

可以先使用 instanceOf 判断当前对象是不是子类的一个实例,如果是,再执行调用

所以上文的 for 循环体内可以加个判断,写成下面的样子(我为 Orange 添加了新方法 eatOrange,这里不给出,大家自己实现即可)

for (Fruit fruit : fruits) {if (fruit instanceof Orange) ((Orange) fruit).eatOrange();fruit.say();
}

==运算符

==有两种作用

  • 进行数值比较,判断两个数是否一致
  • 进行地址比较

下面的赋值方法为引用赋值,故之间地址比较均为 true

A a = new A();
A b = a;
System.out.println(a==b); // true

hashCode

hashCode 用于返回一个对象的哈希值,用于提升哈希表效率

两个引用指向同一对象,哈希值必定一致;
哈希值一致不一定表示引用指向同一对象;

哈希值不完全等于地址值


finalize 方法

对象被垃圾回收时,自动调用的方法;
可以重写该方法,让对象再被释放资源前做一些什么;

采用引用计数法,当 JVM 发现某个对象的引用次数为 0 时,就会执行垃圾回收程序来释放该对象资源

GC 机制由系统决定,当然也可以使用 System.gc() 主动触发回收


第三阶段

类变量

类变量实际上就是普通变量加上一个 static
也称为静态变量

该变量会被该类的所有实例所共享;

class A{public static int count = 0;
}

直接使用 类名.类变量名 来执行访问

没有加上 static 的就是所谓的实例变量

类被加载时,类变量就初始化完毕了,就是说你无需实例化对象就可以直接从类调用该类变量

类变量的生命周期是:类初始化开始到其销毁为止


类方法

类方法也就是静态方法

普通方法加上一个 static 即可,具体调用方法和作用可以直接参考类变量

类方法可以通过类名调用,也可以通过对象名调用;
类方法随类的初始化而加载,结构信息存储于方法区;
类方法无 this 参数,而普通方法有 this 参数;


静态方法只能访问静态的成员(即静态属性和静态方法);普通方法则无限制


main 方法

由于 main 方法自己就是一个静态方法,故也只能调用同类内的静态成员

对于普通成员,则需要实例化自身再执行调用

package chapter2;public class MainDemo {public static void main(String[] args) {// 静态方法可以直接调用MainDemo.func1();// 非静态方法必须实例化自身才可以调用MainDemo mainDemo = new MainDemo();mainDemo.func2();}public static void func1(){System.out.println("static function");}public void func2(){System.out.println("normal function");}
}

众所周知,main 方法接收一个 args 字符串数组,用于命令行添加可变长参数

所以当我们使用命令行执行 java 程序是,可以传入任意长度的参数:
java [类名称] asd asd asd


代码块

代码块有两种:static 代码块和普通代码块

static 代码块可看做对类的初始化,它随着类的加载而执行,且仅执行一次;
普通代码块是当每个对象被创建就执行一次;

类被加载的时刻:

  1. 创建对象实例
  2. 创建子类对象实例,父类会被加载
  3. 使用类内静态成员

普通代码块只有在对象实例化才会被调用,故我们直接使用类内静态成员而不实例化对象,是不会触发普通代码块的!


创建一个类时,对应的调用顺序:

  1. 静态代码块(如果有多个,则按顺序调用)
  2. 普通代码块(如果有多个则按顺序调用)
  3. 构造函数

创建一个子类是,对应的调用顺序

  1. 父类静态代码块和静态属性
  2. 子类静态代码块和静态属性
  3. 父类普通代码块与普通属性初始化
  4. 父类构造函数
  5. 子类普通代码块与普通属性初始化
  6. 子类构造函数

单例模式

饥饿式

class Single1 {private Single1() {}private static final Single1 instance = new Single1();public static Single1 getInstance() {return instance;}
}

懒汉式

class Single2 {private Single2() {}private static Single2 instance;public static Single2 getInstance() {if (instance == null) {instance = new Single2();}return instance;}
}

相关文章:

【Java基础】学习笔记2 - 数组运算符与main方法

目录 多态数组运算符hashCodefinalize 方法 第三阶段类变量类方法main 方法代码块单例模式饥饿式懒汉式 多态数组 顾名思义,就是在一个数组内体现多态 public class PolyArrDemo {public static void main(String[] args) {// 定义多态数组Fruit[] fruits new Fr…...

stable diffusion实践操作-复制-清空-保存提示词

系列文章目录 stable diffusion实践操作 stable diffusion实践操作-webUI教程 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、右上生成图标附近按钮介绍1. 箭头介绍(复现别人的…...

【Spring 事务和事务传播机制】

目录 1 事务概述 1.1 为什么需要事务 1.2 事务的特性 1.3 Spring 中事务的实现 2 Spring 声明式事务 2.1 Transactional 2.2 Transactional 的作用范围 2.3 Transactional 的各种参数 2.3.1 ioslation 2.4 事务发生了异常,也不回滚的情况 异常被捕获时 3 事务的传…...

【爬虫】实验项目二:模拟登录和数据持久化

目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求: 改进要求A: 改进要求B: 四、实验过程 基本要求: 源码如下: 改进要求A: 源码如下: 改进要求B: 源码如下&…...

图文版:以太网二层接口类型(含配套习题)

常见的以太网二层接口类型包括以下三种: 一、Access接口 access链路类型端口,一种交换机的主干道模式,2台交换机的2个端口之间是否能够建立干道连接,取决于这2个端口模式的组合。 Access端口在收到以太网帧后打开VLAN标签&#…...

生信豆芽菜-机器学习筛选特征基因

网址:http://www.sxdyc.com/mlscreenfeature 一、使用方法 1、准备数据 第一个文件:特征表达数据 第二个文件:分组信息,第一列为样本名,第二列为患者分组 第三个文件:分析基因名 2、选择机器学习的方…...

v-html富文本里面的图片设置宽高不起作用的原因

把scoped去掉...

pdf文档怎么压缩小一点?文件方法在这里

在日常工作和生活中,我们经常会遇到需要上传或者发送pdf文档的情况。但是,有时候pdf文档的大小超出了限制,需要我们对其进行压缩。那么,如何将pdf文档压缩得更小一点呢?下面,我将介绍三种方法,让…...

CMD关闭占用端口

1. netstat -ano | findstr :xxxx 2. taskkill /pid xxxx 3. 强制关闭taskkill/F /pid xxxx...

复制粘贴是怎么实现的

在上面的代码中,command 和 select 是自定义的函数。它们的作用如下: 实现复制粘贴的思路: 创建一个 textarea 标签将 textarea 移出可视区域给这个 textarea 赋值将这个 textarea 标签添加到页面中调用 textarea 的 select 方法调用 docum…...

mybatisplus多租户原理略解

概述 当前mybatisPlus版本 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version> </dependency>jdk版本&#xff1a;17 springboot版本&#xff1a;…...

Spring整合RabbitMQ-配制文件方式-1-消息生产者

Spring-amqp是对AMQP的一些概念的一些抽象&#xff0c;Spring-rabbit是对RabbitMQ操作的封装实现。 主要有几个核心类RabbitAdmin、RabbitTemplate、SimpleMessageListenerContainer等 RabbitAdmin类完成对Exchange、Queue、Binding的操作&#xff0c;在容器中管理 了RabbitA…...

Python Opencv实践 - 凸包检测(ConvexHull)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_contour img.copy() #得到灰度图做Canny边缘检测 img_gray cv.cvtColor(img_contour, cv.COLOR_BGR2GRAY) edges…...

IP网络广播系统有哪些优点

IP网络广播系统有哪些优点 IP网络广播系统有哪些优点&#xff1f; IP网络广播系统是基于 TCP/IP 协议的公共广播系统&#xff0c;采用 IP 局域网或 广域网作为数据传输平台&#xff0c;扩展了公共广播系统的应用范围。随着局域网络和 网络的发展 , 使网络广播的普及变为可能 …...

【LeetCode】83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素&#xff08;简单&#xff09; 方法&#xff1a;一次遍历 思路 由于给定的链表是排好序的&#xff0c;因此重复的元素在链表中出现的位置是连续的&#xff0c;因此我们只需要对链表进行一次遍历&#xff0c;就可以删除重复的元素。 从指针 cur 指…...

【大数据】Flink 详解(七):源码篇 Ⅱ

本系列包含&#xff1a; 【大数据】Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇【大数据】Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ【大数据】Flink 详解&#xff08;三&#xff09;&#xff1a;核心篇 Ⅱ【大数据】Flink 详解&#xff08;四…...

stable diffusion实践操作-SD原理

系列文章目录 本文专门开一节写SD原理相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 文章目录 系列文章目录前言一、原理说明1.1、出图原理1.1.1 AI画画不是和人一样&#xff0c;从0开始&#xff0c;而是一个去噪点的过程&am…...

C++ Primer Plus第十三章编程练习答案

1&#xff0c;以下面的类声明为基础: // base class class Cd{ // represents a CD disk private: char performers[50] ; char label[20]; int selections;// number of selections double playtime; // playing time in minutes public: Cd(char * sl,char * s2,int n,double…...

Elasticsearch:wildcard - 通配符搜索

Elasticsearch 是一个分布式、免费和开放的搜索和分析引擎&#xff0c;适用于所有类型的数据&#xff0c;例如文本、数字、地理空间、结构化和非结构化数据。 它基于 Apache Lucene 构建&#xff0c;Apache Lucene 是一个全文搜索引擎&#xff0c;可用于各种编程语言。 由于其速…...

配置类安全问题学习小结

目录 一、前言 二、漏洞类型 目录 一、前言 二、漏洞类型 2.1 Strict Transport Security Not Enforced 2.2 SSL Certificate Cannot Be Trusted 2.3 SSL Anonymous Cipher Suites Supported 2.4 "Referrer Policy”Security 头值不安全 2.5 “Content-Security-…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...