认识JAVA语言(二)扩充

知识点1: 一维数组

        一维数组是Java中最基础的数据结构。它可以存储一组固定数量的同类型元素,并且这些元素在内存中是连续存放的。

声明

        声明一个数组非常简单。你只需要指定数据类型与数组名称并用方括号包裹起来。声明仅仅创建了一个数组变量,而不是数组本身。

例如:

int[] numbers;
创建:

        实际的数组是用new关键字创建的,后面跟着数据类型与方括号内指定数组的大小。

例如:

numbers = new int[10]; // 创建一个可以存储10个整数的数组
使用:

         访问数组元素通过下标索引,下标从0开始。

例如:

numbers[0] = 100; // 将第一个元素设置为100
int x = numbers[0]; // 读取第一个元素的值

        要获取数组的长度,可以使用.length属性:

int length = numbers.length;
内存分配:

         当我们在Java中创建数组时,JVM(Java虚拟机)在堆内存中为其分配空间。数组被视为对象,数组的变量其实是指向堆内存中数组对象的引用。

class ArrayExample {public static void main(String[] args) {int[] myArray = new int[5];  // 声明并创建数组for (int i = 0; i < myArray.length; i++) {  // 使用数组myArray[i] = i * 2;  // 初始化数组元素}for (int i = 0; i < myArray.length; i++) {  // 读取数组元素System.out.println("Element at index " + i + ": " + myArray[i]);}}
}
概念说明
声明使用数据类型和数组名,加上方括号声明数组
创建使用new关键字,指定数据类型和数组大小
使用通过下标访问和修改元素。
长度使用.length属性获取数组大小
内存堆内存中分配,视为对象

知识点2: 多维数组

        多维数组,常见的是二维数组,它类似于一个表格,包含行和列。

声明:

        多维数组的声明通过添加额外的方括号来实现。

例如:

int[][] matrix;
创建:

         创建多维数组也使用new关键字,然后为每个维度提供大小。

例如:

matrix = new int[3][4]; // 创建一个3行4列的二维数组
使用:

         使用多个下标访问或修改多维数组的元素。

例如:

matrix[0][0] = 1; // 设置第一行第一列的元素为1
内存分配:

         在多维数组中,实际上是数组的数组。每个数组元素本身是一个数组引用。

class MultiArrayExample {public static void main(String[] args) {int[][] multiArray = new int[3][3]; // 创建3x3数组for (int i = 0; i < multiArray.length; i++) {for (int j = 0; j < multiArray[i].length; j++) {multiArray[i][j] = i + j; // 初始化数组元素}}for (int i = 0; i < multiArray.length; i++) {for (int j = 0; j < multiArray[i].length; j++) {System.out.print(multiArray[i][j] + " "); // 打印数组元素}System.out.println();}}
}
概念说明
声明使用多个方括号声明
创建使用new关键字创建,指定每个维度大小
使用使用下标访问和修改元素
内存主数组中存储引用,每行是独立数组

知识点3: 不规则数组

        不规则数组,又称为交错数组,是指在多维数组中并不要求每一行的列数相同。

声明:

        声明一个不规则数组与声明多维数组类似,但并不在声明时指定列数。

int[][] irregularArray;
创建:

         不规则数组的创建是分行进行的。每行可以根据需要独立地创建与初始化。

例如:

irregularArray = new int[3][];  // 创建一个具有3行的数组,但是不指定列数
irregularArray[0] = new int[3]; // 第一行有3个元素
irregularArray[1] = new int[5]; // 第二行有5个元素
irregularArray[2] = new int[2]; // 第三行有2个元素
使用:

         访问或修改不规则数组的元素通过与多维数组相同的方式,即通过行和列的下标。

例如:

irregularArray[1][3] = 10; // 设置第二行第四个元素为10
class IrregularArrayExample {public static void main(String[] args) {int[][] irregularArray = new int[3][]; // 声明不规则数组irregularArray[0] = new int[]{1, 2, 3}; // 直接初始化irregularArray[1] = new int[]{4, 5, 6, 7, 8};irregularArray[2] = new int[]{9, 10};for (int i = 0; i < irregularArray.length; i++) {for (int j = 0; j < irregularArray[i].length; j++) {System.out.print(irregularArray[i][j] + " ");}System.out.println();}}
}
概念说明
声明与多维数组类似,列数不固定
创建行与行之间的长度可以不同
使用使用行列下标访问和修改元素
特点行内元素长度不一致,更灵活

知识点4: 面向对象程序设计 (OOP)

        面向对象程序设计,是一种程序设计范型,将问题拆分为一系列相互作用的对象。

:

        类是创建对象的模板,包含属性(状态)和方法(用于操作状态的函数)。

对象的创建:

        Java中,对象是通过使用new关键字以及类的构造方法创建的。

对象的使用:

        对象的属性和方法可通过点操作符.进行访问和调用。

构造方法:

        构造方法是特别的方法,用于在创建对象时初始化其状态。

内存分配:

         对象在堆内存上进行分配,并且对象的清理工作是由Java的垃圾收集器自动管理的,无需手动释放内存。

class Car {// 属性int speed;// 构造方法Car(int initialSpeed) {speed = initialSpeed; // 初始化速度属性}// 方法void accelerate(int increment) {speed += increment;}
}public class OOPExample {public static void main(String[] args) {Car myCar = new Car(0);  // 使用new关键字创建对象myCar.accelerate(10);  // 调用方法来改变对象状态System.out.println("Current speed: " + myCar.speed);}
}
概念说明
定义对象的属性和方法的模板
对象类的实例,通过new关键字创建
构造方法初始化对象的方法
内存分配对象存储在堆内存中,由垃圾回收管理

知识点5: 变量

局部变量:

         在方法内部定义,只在方法调用期间存在。

实例变量:

        对每个类实例都独有的变量,存储在堆上的对象中。        

类变量:

        使用static修饰符声明,属于类本身,所有实例共享该变量。

class VariableExample {static int classVariable = 0;  // 类变量int instanceVariable;  // 实例变量void method() {int localVariable = 5;  // 局部变量System.out.println("Local: " + localVariable);}public static void main(String[] args) {VariableExample example = new VariableExample();example.instanceVariable = 10;example.method();System.out.println("Instance: " + example.instanceVariable);System.out.println("Class: " + VariableExample.classVariable);}
}
变量类型说明
局部变量方法内部定义,生命周期短
实例变量对象创建时分配,跟随对象生命周期
类变量使用static定义,所有实例共享

知识点6: 方法

实例方法:

        可以访问类的实例变量和实例方法。若在实例方法中引用当前对象,可以使用this关键词。

类方法:

        用static修饰符声明的方法,不依赖于对象实例。

传递参数:

        方法调用时可以传递参数,参数作为局部变量在方法内部使用。

方法重载:

        在同一类中,可以有多个同名方法,只要它们的参数列表不同。

返回值:

         方法执行后可以返回一个值,使用return关键字。

class MethodExample {static void classMethod() {System.out.println("Class Method");}void instanceMethod(int number) {System.out.println("Instance Method, number: " + number);}int add(int a, int b) {return a + b;  // 返回值}// 方法重载,相同方法名不同参数double add(double a, double b) {return a + b;}public static void main(String[] args) {MethodExample example = new MethodExample();example.instanceMethod(10);MethodExample.classMethod();int result = example.add(5, 7); // 使用int版的adddouble resultDouble = example.add(5.0, 7.0); // 使用double版的addSystem.out.println("Addition result for integers: " + result);System.out.println("Addition result for doubles: " + resultDouble);}
}
方法类型说明
实例方法操作实例变量和方法
类方法不依赖对象实例,可直接调用
传参方法调用时传递,局部变量使用
方法重载参数不同,方法同名
返回值方法执行完返回结果

各种代码块

匿名代码块: 定义在类中,不属于任何方法,每次创建类实例时都会执行。
class BlockExample {// 静态代码块static {System.out.println("Static Block - This executes when class is loaded");}// 匿名代码块{System.out.println("Anonymous Block - This executes every time an object is created");}public static void main(String[] args) {new BlockExample();new BlockExample();}
}

        这段代码会首先执行静态代码块一次,随后每次创建BlockExample对象时都会执行匿名代码块。

代码块类型说明
匿名代码块对象创建时执行,用于初始化
静态代码块类被加载时执行一次,用于静态初始化

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

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

相关文章

[C++/Linux] 网络I/O处理

引言&#xff1a;网络数据能够正常到达用户并且被接收是进行网络传输的根本目的&#xff0c;网络传输的数据发送和接收有多种方案&#xff0c;本文章就对通过向量接收和发送等数据传输方式&#xff0c;并且对多种I/O模型进详细分析介绍。 目录 一.I/O函数 1.1 recv和send rec…

RabbitMQ消息模型之Fanout消息模型

Fanout消息模型 * 广播模型&#xff1a;* 一个交换机绑定多个队列* 每个队列都有一个消费者* 每个消费者消费自己队列中的消息&#xff0c;每个队列的信息是一样的生产者 package com.example.demo02.mq.fanout;import com.example.demo02.mq.util.ConnectionUtils; impor…

神策sdk埋点

一&#xff0c;提出数据需求 首先要把数据需求提出来&#xff0c;先落地成一个标准的文档。数据需求是由业务或者产品去做&#xff0c;然后设计数据采集方案是基于我们的数据需求&#xff0c;首先要满足数据需求&#xff0c;其次在数据在设计完成之后要进行评审。/基于需求设计…

【docker】linux删除大于特定时间的备份文件

目录 shell 删除脚本命令解析 环境&#xff1a;linux容器&#xff1a;docker 前提&#xff1a; 继上次讲述如何备份线上数据库之后&#xff0c;我们来看如何删除多余的dump备份文件 参考&#xff1a;linux写shell脚本备份线上数据库&#xff08;备份为dump文件&#xff09; …

JavaScript之Object.defineProperty详解

Object.defineProperty 是 JavaScript 中用于定义或修改对象属性的方法之一。它允许我们精确地控制对象属性的特性&#xff0c;包括可枚举性、可写性、可配置性等。 1. 基本语法 Object.defineProperty(object, propertyName, descriptor); object&#xff1a;要在其上定义属性…

【PyQt5】环境配置

PyQt5 环境配置 一、前言1.1 PyQt5介绍1.2 PyCharm集成Pyqt5 二、pyqt5安装三、PyQt5-tools工具包安装四、常用工具环境配置4.1、环境变量配置4。2、验证是否安装成功 五、pycharm中设置Qt工具&#xff08;Qt Designer、PyUIC、PyRcc&#xff09;5.1、配置Qt Designer5.2、配置…

gitee上传出现git did not exit cleanly (exit code 1)的错误

在最后push的时候出现下面的结果&#xff1a; 出现这个错误的原因有好多种&#xff0c;目前介绍博主遇到的两种&#xff1a; 在第一次进行push操作的时候&#xff0c;需要输入用户名和密码&#xff0c;如果输入错误&#xff0c;则最后可能会出现上述报错 解决方法&#xff1a;…

centos7安装 on-my-zsh

如下&#x1f447; yum install -y zsh chsh -s /bin/zsh yum install -y git sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 重启即可生效啦~

Python爬虫怎么挣钱?6个Python爬虫赚钱方式,搞搞副业不是问题

1.最典型的就是找爬虫外包活儿 网络爬虫最通常的的挣钱方式通过外包网站&#xff0c;做中小规模的爬虫项目&#xff0c;向甲方提供数据抓取&#xff0c;数据结构化&#xff0c;数据清洗等服务。新入行的程序员大多都会先尝试这个方向&#xff0c;直接靠技术手段挣钱&#xff0…

Oladance、南卡、Cleer开放式耳机好不好用?深度测评剖析实力王!

​近期&#xff0c;不少朋友都在询问如何挑选适合自己的开放式耳机。面对市场上众多品牌的开放式耳机&#xff0c;它们在音质、舒适度和性能上都有所差异&#xff0c;挑选一款合适的耳机对于音乐爱好者来说尤为重要。购买到品质不达标的耳机可能会影响音乐体验&#xff0c;甚至…

Linux nfs 环境搭建

1.开发背景 nfs 即网络文件共享&#xff0c;主要通过 tcp、udp 等网络通讯的方式实现不同机器间的文件共享 2.开发需求 搭建 ubuntu 下的服务端&#xff0c;嵌入式开发板共享 ubuntu 的某个文件夹 3.开发环境 ubuntu20.04 嵌入式开发板 4.实现步骤 4.1 搭建 ubuntu 服务器…

sonar搭建(linux系统)

前景 静态代码扫描是CI/CD中重要的一环&#xff0c;可以在代码提交到代码仓库之后&#xff0c;在CI/CD流程中加入代码扫描步骤&#xff0c;从而及时地对代码进行质量的检查。这可以有效地降低后期维护成本&#xff0c;优化产品质量&#xff0c;提高产品交付速度。同时&#xf…

浅尝一下ECS(Entity Component System)(学习笔记)

参考文章&#xff1a;浅谈Unity ECS&#xff08;一&#xff09;Uniy ECS基础概念介绍&#xff1a;面向未来的ECS - 知乎 (zhihu.com) 视频链接&#xff1a;【青幻译制】GDC讲座系列之三 守望先锋的游戏架构和网络代码_哔哩哔哩_bilibili 云风的 BLOG: 浅谈《守望先锋》中的 E…

XSS攻击与MySQL注入漏洞攻击手法

一、XSS攻击 概念&#xff1a;XSS攻击也被称为 “跨站脚本攻击”&#xff0c;通过将恶意得Script代码注入到Web页面中&#xff0c;当 用户 浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击 用户的目的。 攻击对象&#…

保证线程安全的10个小技巧分享

对于从事后端开发的同学来说&#xff0c;线程安全问题是我们每天都需要考虑的问题。 线程安全问题通俗的讲&#xff1a;主要是在多线程的环境下&#xff0c;不同线程同时读和写公共资源&#xff08;临界资源&#xff09;&#xff0c;导致的数据异常问题。 比如&#xff1a;变…

计算两个日期之间相差的天数的四种方法

计算两个日期之间相差的天数的四种方法 第一种&#xff1a;时间戳的方式&#xff0c;计算两个日期的时间戳的差&#xff0c;再除当天的毫秒数即可得到相差的天数。 public static void main(String[] args) {DateFormat dft new SimpleDateFormat("yyyy-MM-dd");t…

家居网购项目(一)

文章目录 1.前置知识1.项目开发阶段2.Java经典三层架构3.项目具体分层&#xff08;包方案&#xff09;4.MVC 2.开发环境搭建1.新建普通javaweb项目&#xff0c;导入jar包2.创建项目结构3.搭建前端页面 3.会员注册前端js校验1.需求分析2.代码login.html 3.结果4.调试阶段1.验证信…

LeetCode 题目:两个总和

LeetCode 题目&#xff1a;两个总和 描述&#xff1a; 编写一个函数&#xff0c;输入为一个整数数组nums和一个目标整数target&#xff0c;要求找到数组中两个数的和等于target&#xff0c;并返回这两个数的索引。 函数定义&#xff1a; def two_sum(nums: List[int], targe…

Java多线程开发——基础篇

目录 1.基本概念 2.创建线程方式 2.1直接建立线程 2.2实现Runnable接口 3.3实现Callable接口 3.4 了解Future接口 Future模式主要角色及其作用 3.5实例化FutureTask类 3.实现线程安全 3.1定义 3.2不安全原因 3.3解决方案 3.4volatile与synchronized区别 4.极端情…

Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结

一、前言 记录时间 [2024-4-7] 前置文章&#xff1a; Docker学习笔记&#xff08;一&#xff09;&#xff1a;入门篇&#xff0c;Docker概述、基本组成等&#xff0c;对Docker有一个初步的认识 Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#…