java 指针 数组的使用

Java数组模拟队列以及头指针尾指针的使用(尚硅谷数据结构自学笔记) 先说一下自己对头指针和尾指针的理解 有头指针和尾指针,刚开始两个值相同,代表着队列为空或者为满的。 当添加一个数据时,尾指针向后移动,当取出数据时头指针向后移动,试想一下,每加入一个数据尾指针+1,然后和头指针就有一些距离,当取数据的时候,头指针开始+1移动,然后取一次加一次,当加到和存数据的尾部指针相同的时候,就相当于存了多少取出了多少个,就代表此时的队列为空值,或者队列为满的。 大家可以自己根据下面的代码,用数字模拟一下,或者画一个图一个数一个数的模拟一下,理清思维,会发现新大陆的,后面的循环队列 阅读详情

采摘处:http://blog.youkuaiyun.com/damenggege123/article/details/6224446


1,一直都在学java是没有指针的,让我纠结的是java指针确实是存在的,java数组就是真正的指针。

以为C语言老师说过C语言里数组就是指针,但是我感觉这句话用在C语言里不是很严谨,而用在java里是很恰当的。C语言里的数组是常指针。

 

  1. package com.tarena.day05;  
  2.   
  3. import java.util.Arrays;  
  4.   
  5. public class Point {  
  6.   
  7.     /** 
  8.      *java 指针演示 
  9.      */  
  10.     static final int arr4[] = { 8, 3, 5, 1, 4, 2, 7 };  
  11.     public static void main(String[] args) {  
  12.         //1, 静态初始化与动态初始化的原理是一样的  
  13.         int[] arr = { 8, 3, 5, 1, 4, 2, 7 };// 静态初始化  
  14.         int[] arr2 = new int[] { 8, 3, 5, 1, 4, 2, 7 };// 动态初始化  
  15.         // 因为创建数组的原理是一样的,都是在堆空间里申请内存并赋值,所以使用也没有去别  
  16.         arr[0] = 0;//arr = [0, 3, 5, 1, 4, 2, 7]  
  17.         arr2[0] = 0;//arr2 = [0, 3, 5, 1, 4, 2, 7]  
  18.           
  19.         //2,java数组名就是指针  
  20.         //论据1 使用指针修改原来数组的值  
  21.         int[] arr3 = arr;// arr3 就是java的指针了 相当于 C语言的 int *arr3 = arr;指针arr3指向arr的地址  
  22.         arr3[1] = 0;//使用arr3指针修改arr的1号地址的值,  
  23.         System.out.println(Arrays.toString(arr));// 这时arr = [0, 0, 5, 1, 4, 2, 7]  
  24.         //论据2 使用指针指向新数组的值  
  25.         arr = a();// arr = [2, 1] arr的地址指向了方法a中的变量a在堆空间申请的地址。arr3仍然指向arr的原地址  
  26.         System.out.println(Arrays.toString(arr));// [2, 1]  
  27.         System.out.println(Arrays.toString(arr3));// [0, 3, 0, 1, 4, 2, 7]  
  28.         //论据3 引用传址  
  29.         swap(arr,0,1);  
  30.         System.out.println(Arrays.toString(arr));// [1, 2]  
  31.         /* 
  32.          * 因此java数组做参数是引用传址而不是值拷贝,所以说java的数组是指针 
  33.          */  
  34.           
  35.         //论据4 java数组不是数组  
  36.         /* 
  37.          * c中的数组指向的地址是不能改变的,而c中的指针是可以改变的,然而java的数组恰恰可以改变指向的地址 
  38.          * 所以可以说明java数组就是c指针。 
  39.          * 某位老师说过c数组就是指针其实这样说并不严谨,严格说c数组是常指针,因为c数组的地址是不能改变的。 
  40.          */  
  41.           
  42.         //论据5 java数组可以有常指针但没有常量  
  43.         /* 
  44.          * 虽然arr4是常指针,但是arr4据有指针的性质,所以arr4里的值是可以改变的。 
  45.          */  
  46.         arr4[0] = 0;//编译通过 数组的值不是常量  
  47. //      arr4 = arr;//此处编译不通过 指针arr4是常指针不可以指向新地址。  
  48.         /* 
  49.          * 以上说明java的数组就是指针,所以数组按照指针用是完全可以的。包括,引用传址,修改堆空间的值,指向新地址等。 
  50.          */  
  51.     }  
  52.     public static void swap(int a[],int i,int j)  
  53.     {  
  54.         int t = a[i];  
  55.         a[i] = a[j];  
  56.         a[j] = t;  
  57.     }  
  58.     public static int[] a() {  
  59.         int[] a = { 2, 1 };  
  60.         return a;  
  61.     }  
  62.   
  63. } 


瑞芯微RK3588系统重装实战:从Windows到Linux的完整烧录指南 本文提供了一份详尽的瑞芯微RK3588开发板系统重装实战指南,涵盖从Windows到Linux双平台的完整烧录流程。针对RK3588芯片特性,详细解析了驱动安装、工具使用、固件烧录步骤及常见问题排错,旨在帮助开发者高效、安全地完成系统切换与部署,快速投入AI推理与边缘计算等应用开发。 阅读详情

相关推荐

硬件单板类机考复习提纲

6、 功率晶体管低导通损耗时处于的状态(饱和状态、放大状态、截止状态)(放大器的采样频率特性)总结:元器件特性(电阻、电容、二极管、三极管、晶体、晶振、MOS、磁珠等)信号质量问题产生根因(单调性、边沿过缓、毛刺、回沟、抖动等)3、 几种电容容量范围大小(超级电容、钽电容、陶瓷电容、铝电容)66、背板连接器接触设计的接触顺序(先导向、再地针、最后信号针)28、逻辑电平接口的特性(CMOS、TTL、ECL、PECL)76、差分电平(lvpecl、RS-422/485、cml)

2303_79562407的博客 1万+

小研究 - Java 指针分析综述(一)

小研究 - Java 指针分析综述(一)

2675

使用ITK-SNAP软件进行医学图像的标注(label标签设置、调整等)(windows版本,如mac和linux操作则略有不同)

使用ITK-SNAP软件进行医学图像的标注工作:如肿瘤、炎症、出血、梗死等的多类 目标轮廓勾画等。

qianshuqinghan的博客 2万+

深入理解Java中的指针——引用

基于Java特性以及C++中指针特性的关于Java中引用类型的理解

2301_79698279的博客 3203

Mcgs 屏幕Modbus RTU通讯调试

昆仑通态屏幕作为Modbus Master 与 Modbus Slave通过RS485接口实现通信的调试记录

madao1234的博客 5569

接入 AI 之后,为什么测试和排障还是没有真正变快?

如果你们准备做平台型 AI,不要先从聊天入口开始想。先把真实数据采上来;再把链路、版本、快照、报告这些核心对象建稳;再把历史沉淀、反馈、检索能力补齐;最后再让 AI 围绕这些对象去工作。这样做出来的 AI,才更容易从“看起来聪明”走向“真正省时间”。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 527

Java基础(1)-存在指针吗

许多刚接触Java语言的朋友可能会认为java没有指针(*),加上许多入门教程为了便于初学者理解而去解释说Java不存在像C/CPP那样的指针操作,所以java没有指针这样的认识就产生了,但答案是,java有指针,但是java开发者并不能像c++开发者一样显式地去调用指针。本文将对java指针做一基本讲解。

BoringError的博客 1万+

YOLOv8 智能交通违章检测 - 压线/越线行驶检测详解

本文提出了一种基于YOLOv8的智能交通违章检测方案,重点解决车辆压线/越线行驶的识别问题。系统采用多技术融合方案:YOLOv8检测车辆、ByteTrack跟踪轨迹、传统或深度学习方法识别车道线,并通过几何计算判断车辆是否违规跨越实线。文章详细介绍了技术难点(如车道线分类、透视变形处理)、判定流程、系统架构和核心代码实现,包括车道线检测、违章逻辑判断和可视化模块。同时指出了现有方案的局限性,建议通过引入逆透视变换和专用车道线分割模型来提升准确率。该纯视觉方案具有低成本、易部署的特点,适用于智能交通监控场景。

u010117029的博客 175

对 JAVA 中 “指针“ 的理解

即没有给a[0]分配空间,即只有变量名,没有指向空间。那么a[0]就是一个good类空指针。变量名称 空间。1. 首先我们设立了一个good类,并定义了一个good类数组a。即a[0],a[1].......,a[N - 1]都是good类。(以上就是目前我对此特殊指针案例的理解)2.令a[0]内的m,v进行赋值。

Narnat的博客 6365

【知识点讲解】大模型参数量与计算量(FLOPs)估算方法

指标参数量 (Params)计算量 (FLOPs)含义模型的大小,静态模型的计算复杂度,动态决定因素模型结构(宽度、深度)模型结构 +输入数据(B, S)影响内存占用、磁盘空间运行速度、能耗单位M (百万), B (十亿)工具thopptflopstorchinfothopptflopsfvcore重要提示FLOPs ≠ 速度:FLOPs 是理论计算量。实际速度还受内存带宽 (Memory Bandwidth)并行度硬件架构等因素严重影响。

AI浩 2096

QT Android开发之Android端usb调试模式设置与问题解决

QT Android开发之Android端usb调试模式设置与问题解决 一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 二.小米ipad打开usb调试模式 1.设置----我的设备-----全部参数信息-----OS版本---点击这里6次以上就进入开发者模式。

热土程序园,利他愉己~ 1129

JAVA里面的“指针”(对象引用)

      众所周知,在java里面是没有指针的。那为何此处还要说java里面的“指针”呢?我们知道在C/C++中,指针是指向内存中的地址,该地址就是存储变量的值。该地址所存储的变量值是“公有”的,此处的“公有”是对于拥有该地址的变量而言。它们都可以访问该地址的内容,并且可对其就行修改,一经修改则所有指向该地址的变量值也将改变。那么在Java里面何来的指针?在java里面没有指针的定义。但是java里面的“指针”无处不在。下面将进行介绍。 我们知道JAVA里面用的最多的就是对象

博客 9424

【LaTex】3.4 立体几何

本文介绍了使用LaTeX的tikz包绘制立体几何图形的两种方法。首先展示了基础立方体的绘制代码,通过定义8个顶点坐标并连接各边完成绘制。接着讲解了scope功能在3D绘图中的应用,包括标准平面(xy、xz、yz)的绘制方法,以及任意平面的定义技巧。重点说明了如何通过定义平面原点、x和y方向单位向量来创建旋转后的绘图平面,并以45°旋转的yz平面为例演示了圆的绘制。文章提供了完整的代码示例和对应的效果图示,展示了tikz在3D绘图中的灵活性和强大功能。

你的指尖有改变世界的力量 2455

java 数组 指针_java指针数组的使用

1,一直都在学java是没有指针的,让我纠结的是java指针确实是存在的,java数组就是真正的指针。以为C语言老师说过C语言里数组就是指针,但是我感觉这句话用在C语言里不是很严谨,而用在java里是很恰当的。C语言里的数组是常指针。package com.tarena.day05;import java.util.Arrays;public class Point {/***java 指针演示*...

weixin_28987547的博客 1779

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java指针的数组_java 指针 数组的使用

package com.tarena.day05;import java.util.Arrays;public class Point {/***java 指针演示*/static final int arr4[] = { 8, 3, 5, 1, 4, 2, 7 };public static void main(String[] args) {//1, 静态初始化与动态初始化的原理是一样的int...

weixin_39883079的博客 394

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA数组的指针特性

JAVA数组的指针特性忙于项目管理,有阵子没有关注具体代码实现了,会看一些代码还是有些恍惚,故抽出时间重新总结以前所学,技术是根本再忙也不能荒废: 1, 静态初始化与动态初始化的原理是一样的 2,java数组名就是指针 3,常数组即常指针,可改值不可改地址 网上摘了现成的代码直接跑一边就能总结出指针特性。代码块代码块语法遵循标准markdown代码,例如:package transformation

jiangbo1984的专栏 1609

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java数组空指针问题

在java中空指针异常算是一个比较棘手的问题,下面通过一个例子来讲解一下怎么处理空指针,以及出现空指针的问题比如,我们先建好一个Book类,里面包括name属性和bNumber(统计书的总数),并写出get和set方法。再写一个Test类,main方法中用数组保存100本书,并设置书的名称,最后打印书的总数和书的名字。Book类:public class Book { private Strin...

Forever 流伤的博客 8379

JAVA对象数组初始化之空指针异常

class Point{ private double x; private double y; public Point(double x, double y) { super(); this.x = x; this.y = y; } public Point(){ } public double getX() { ...

qq_40925129的博客 968

java数组:移除元素 双指针法

给你一个数组nums和一个值val,你需要移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为knumsnumskvalnumsnumsk评测机将使用以下代码测试您的解决方案:// 输入数组// 要移除的值// 长度正确的预期答案。// 它以不等于 val 的值排序。// 调用你的实现// 排序 nums 的前 k 个元素i++) {如果所有的断言都通过,你的解决方案将会。

ohnoooo9的博客 1831

java 解决使用循环初始化对象数组出现空指针异常

源代码会出现空指针异常: public class founctionTest { public static void main(String[] args) { User[] u = new User[2]; Scanner sc = new Scanner(System.in); for(int i = 0; i < u.len...

artisan_young的博客 1501

Java使用自定义类数组报空指针异常

背景:做笔试的时候 使用自定义类声明成数组使用,但是当我通过不同的下标给数组里不同对象赋值的时候一直报空指针异常 public class Main { public static void main(String[] args) { node[] arr=new node[2]; arr[0].hp=10; arr[0].att=10; ...

lizhengze1117的博客 1416

java数组空指针一场_数组异常-空指针异常、二维数组、方法

数组异常-空指针异常在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常int [] arr = new int[4];System.out.println(arr[0]);arr = null;System.out.println(arr[0]);//空指针异常/*D:\workspase\20...

weixin_35812582的博客 954

java 调用dll的 指针类型结构体及指针数组类型

为什么80%的码农都做不了架构师?>>> ...

weixin_34185320的博客 1025

java获取数组的指针,有没有办法通过JNI获得一个Java数组的直接指针?

I need to get a pointer containing the direct memory address of a Java array, via JNI, without invoking some sort of copying (ie direct access).GetArrayElements returns a pointer to a copied array - I...

weixin_28687807的博客 306

java结构体指针_java 调用dll的 指针类型结构体及指针数组类型

C语言定义struct SerialNum{int id;char msg[32];};struct Staff{SerialNum * pSNs;int nCount;};java 调用,把结构体用class 调用//包含字符数组的结构public static class SerialNum extends Structure{public static class ByReference e...

weixin_42506152的博客 595
上一篇: JAVA中的指针
下一篇: Java中的对象类型像引用还是指针,谁是谁非?
crazy_fire
博客等级 码龄18年 19粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值