JAVA中Integer对象的引用

C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图(附源码) 上一节我们讨论了纹理贴图的相关基础操作,但上一节的纹理贴图操作基本上都是规则图形,包括圆形和球形虽然复杂一点,但是它也是规则的。这一节课我们要讨论一下,怎么在不规则图形上纹理贴图,就比如文章下图的心形纹理贴图,以及纹理的平移、旋转、放大缩小功能。 阅读详情

JAVA中没有指针一说,但也有引用的概念。这里要说的主要是Integer是不是同一个对象。

1、先看一段代码:

public static void main(String[] args){
		Integer a1 = 100;
		Integer b1 = a1;//另一种也可以b1=100
		Field field = null;
		try {
			field = a1.getClass().getDeclaredField("value");
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
		  
        field.setAccessible(true);  

        try {
			field.set(a1, 5000);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        System.out.println("b1="+b1);
        
        Integer c1 = 100;
        System.out.println("c1="+c1);
        
	}

结果:

b1=5000
c1=5000

从上面,首先这里要说明几个,

1)、对于Integer来说,-128-127之间的整型已经初始化放在IntegerCache中,如果是装箱的话,就会从这里面取对象。

2)、b1=a1到底是数字赋值还是同一个对象?这个从结果实际就可以看出来,b1和a1指向同一个对象,而不是同一个数值

3)、c1=100,说明对于-128-127之间的数值,都是从IntegerCache中获取的对象,100对应的Integer对象被改变后,后续对于100的装箱都被改变。因为获取cache中对象时用的是数组索引,而不是数值比较获取的。

不过修改这个缓存会比较危险,不介意。谁知道什么jar包或者什么平台来个100的装箱,但得到结果又不是100,到时就崩溃了。


2、通过上面描述,那么如果改成这样又是什么答案

public static void main(String[] args){
		Integer a1 = 200;
		Integer b1 = a1;
		Field field = null;
		try {
			field = a1.getClass().getDeclaredField("value");
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
		  
        field.setAccessible(true);  

        try {
			field.set(a1, 5000);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        System.out.println("b1="+b1);
        
        Integer c1 = 200;
        System.out.println("c1="+c1);
        
	}

3、那么再改一下

public static void main(String[] args){
		Integer a1 = new Integer(100);
		Integer b1 = a1;
		Field field = null;
		try {
			field = a1.getClass().getDeclaredField("value");
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
		  
        field.setAccessible(true);  

        try {
			field.set(a1, 5000);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        System.out.println("b1="+b1);
        
        Integer c1 = 100;
        System.out.println("c1="+c1);
        
	}
这又是什么答案。对于new的操作,是不进行装箱的,而是在堆中生成对象的。

理解了装箱、缓存、引用就不难理解了。可以自己试试。


vxWorks下dosFs文件系统的创建 文件系统,是指操作系统根据目录和文件的组织形式在磁盘设备上应用的一种设备驱动,不同的文件系统对目录和文件有不同的限制(如目录名限制,文件大小限制等)。VxWorks支持多种文件系统,比较重要的有:1、dosFs:适用于块存取设备(比如硬盘、软盘),和MS-DOS文件系统兼容;2、rawFs:提供了一种简单的原始文件系统。该文件系统将整个硬盘当作一个单独的大文件;3、cdromFs:允许系统从按照I 阅读详情

相关推荐

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 863

java对象引用发生改变和String、Integer和int理解与解释

      俺又来了,今天给大家分享的东西比较杂,本来打算只分享java中new出来对象当作一个参数传递给其他对象后,被改变后,那么这个对象也会改变(具体怎么表达我也不太知道如何表达,等下用具体例子来给大家演示),然后在找资料的时候,发现了很多讲String、Integer和int中三者比较的是关系;然后索性今天这篇文章把这也给大家分享下吧,好了,废话少说,直接上干货。 1、java中new出来对象详解    &nbs

weixin_45150104的博客 803

STM32+CubeMX实战:5步搞定LWIP HTTP服务器搭建(附常见编译错误解决)

本文详细介绍了基于STM32和CubeMX平台,快速搭建LWIP HTTP服务器的5步实战指南。内容涵盖从项目初始化、LWIP深度配置到解决经典的`HTTPD_FSDATA_FILE`编译错误,并分享了使用VSCode进行高效开发的工作流,旨在帮助嵌入式开发者快速实现网络功能并规避常见陷阱。

weixin_29192365的博客 573

Java数据类型

一、数据类型 Java中主要有8中基本数据类型,分别是byte,short,int,long,char,boolean,float,double,具体如下: 1、boolean:数据值只有true或false,适用于逻辑计算。 2、char:char型(字符型)数据在内存中占用2个字节。char型数据用来表示通常意义上的字符,每个字符占2个字节,Java字符采用Unicode编码,它

liumei90 1万+

arcgis导出自身相交数据

今天接到一个客户需求,一份面文件,里面有好多元素是两两相交甚至是三个相交的,现在要把这些重叠部分提取出来,并且把相交部分的原始要素的名称也保留在字段中,也就是说名称这个会有好多个名称字段,如果两个要素相交那就是前两个名称字段有值,后面的为空,如果是三个要素相交,那么输出的这个要素就是前三个名称字段有值,后面的为空,嗯,这里也不太确定会出现多少个名称字段,这个需要依照数据来定。 这是原始数据,...

miaowumi92的博客 6789

ADS AEL脚本进阶:参数化电感与变压器的自动化设计

本文深入探讨了如何利用ADS AEL脚本实现电感与变压器的参数化与自动化设计。通过构建可复用的函数库、封装高级设计流程、集成DRC检查与性能预估,将繁琐的手动绘制升级为高效的智能设计引擎,并最终通过创建GUI工具降低使用门槛,大幅提升射频/微波电路设计效率。

weixin_29309785的博客 203

integer是值传递还是引用传递_JAVA中值传递和引用传递的三种情况

我们都知道,java中数据类型分为基本数据类型和引用数据类型。基本数据类型 整型:byte,short,int,long浮点型:float,double字符型:char布尔型:boolean引用数据类型 数组类接口方法的参数分为实际参数,和形式参数。形式参数:定义方法时写的参数。实际参数:调用方法时写的具体数值。一般情况下,在数据做为参数传递的时候,基本数据类型是值传递,引用数据类型是引用传递(地...

weixin_39621860的博客 1230

NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控

Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著

weixin_43877080的博客 1万+

java入门的注意点_Java基础之Integer使用的注意事项及面试题

JAVA中Integer对象的引用JAVA中没有指针一说,但也有引用的概念。这里要说的主要是Integer是不是同一个对象。1、先看一段代码:public static void main(String[] args){Integer a1 = 100;Integer b1 = a1;//另一种也可以b1=100Field field = null;try {field = a1.getClass...

weixin_39940154的博客 239

Python APP反爬实战:Frida+Charles抓包,破解签名校验

Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1535

【Python爬虫(90)】以Python爬虫为眼,洞察金融科技监管风云

本文聚焦爬虫技术在金融科技监管中的应用。开篇阐述金融科技发展带来监管挑战,引出爬虫技术的重要性。接着介绍金融科技监管政策与合规要求,包括政策法规体系、合规细则及政策变化应对。随后探讨爬虫技术选型、数据监测策略、风险指标抓取及案例实操。还阐述基于爬虫数据构建风险预警与防控机制,含模型构建、阈值设定等。最后总结爬虫技术应用成果,展望其与人工智能融合、适应新监管需求及重视数据安全的未来发展趋势。

邓邓子的博客 1063

Integer与Integer比较的时候对象引用地址的变化

Integer与Integer比较的时候,由于直接赋值的时候会进行自动的装箱,那么这里就需要注意两个问题,一个是-128<= x<=127的整数,将会直接缓存在IntegerCache包装类缓冲区中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是从缓存中获取已经创建好的Integer对象。当大于这个范围的时候,直接new Integer来创建Integer对象。 ...

weixin_40487115的博客 776

手把手教你玩转RISC-V指令集​​​专栏--​​1.2 对比x86/ARM:RISC-V的三大核心优势(开放、灵活、可扩展)​

​:RISC-V以“开放打破垄断、灵活适配场景、扩展定义未来”的三大优势,正在重塑计算架构格局。其核心价值不仅是技术革新,更是对全球半导体产业链话语权的重新分配。

amy_mhd的博客 130

java integer引用_JAVA中Integer对象的引用

JAVA中没有指针一说,但也有引用的概念。这里要说的主要是Integer是不是同一个对象。1、先看一段代码:public static void main(String[] args){Integer a1 = 100;Integer b1 = a1;//另一种也可以b1=100Field field = null;try {field = a1.getClass().getDeclaredFie...

weixin_39637919的博客 873

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java基本数据类型,String、Integer等类型,Class三种对象引用的箭头,即箭头是怎么指的?

一、java基本数据类型 int a=1; int b=a; int b=3; a的值不会改变,因为a、b指的不是一个对象了。 二、String、Integer等类型 String a="abc"; String b=a; String b="test" a的值不会改变,因为a、b指的不是一个对象了。 三、Class 会改变,因为它们指向的还是

Ideality_hunter的专栏 1091

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...

场景:大家都知道基本的数据类型,int,float等等这种是按值传递的。但是对于String,对象,Integer是怎样传递呢?原理知识:如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没...

weixin_31861847的博客 1495

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中int和Integer的区别:int 是基本类型,直接存数值 ;integer是对象,用一个引用指向这个对象

int 是基本类型,直接存数值   integer是对象,用一个引用指向这个对象   1.Java 中的数据类型分为基本数据类型和复杂数据类型   int 是前者>>integer 是后者(也就是一个类)   2.初始化时>>   int i =1;   Integer i= new Integer(1);(要把integer 当做一个类看)   int 是基本数据类型(面向过程

longer__的博客 2785

java integer 值传递_在java中String,对象,Integer(包装类型的)关于引用传递仍是值传递...

场景:你们都知道基本的数据类型,int,float等等这种是按值传递的。可是对于String,对象,Integer是怎样传递呢?java原理知识:若是参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟以前所谈的传值是同样的。若是在函数中改变了副本的 值不会改变原始的值.函数若是参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。若...

weixin_33242139的博客 600

java如何实现引用传递_java类方法如何实现引用传递和值传递

展开全部参数是基本e69da5e6ba9062616964757a686964616f31333431353235类型就是传值,传对象就是引用传递。swap(Integer x, Integer y)可以传递引用,但是没办法实现交换。这跟Integer的实现方式有关。所以不是引用传递就一定能改变外面的值。下面是引用传递,交换的情况,又臭又长。classUntitled{intneedFix;...

weixin_29050829的博客 1174

Integer的缓存机制

==的左右操作数如果是对象的话,那么比较的是引用的地址 Integer是对小数据(-128~127)是有缓存的,jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,这样,如果初始化-128~127之间的数字,便会直接从内存中取出,而不需要再新建一个对象,所以,数字在-128~127之间,那么实际上是引用的是一个内存地址,那么自然就是true了。 ...

qfzhaohan的博客 142

java 值传递 引用传递(又叫地址传递,对象传递)

java 值传递 引用传递

hcyxy 595

Integer,new String 判断相等,值传递,以及引用传递的关系。

Integer,new String 判断相等,值传递,以及引用传递的关系。 总结: 1.Integer和String,参数引用的时候都是值传递的。StringBuffer和其他对象就都是引用传递的。 2.Integer和int比较的时候,自动把Integer的值转换成int值进行比较,所以一般会相等,两个Integer对象比较,不管是new出来的还是等号赋值的,相互比较 还会比较

马万明的专栏 1225

【开发】关于Java中String与Integer的小小知识点(使用等号对比引用对象)

使用等于号判断String与Integer是否相等,会出现什么情况呢?

Jim.kk的笔记 551

傻傻分不清?Integer、new Integer() 和 int 的面试题

作者:chenxiangxiang https://www.cnblogs.com/cxxjohnson/p/10504840.html 这篇有意思:IntegerCache的妙用和陷阱! 基本概念的区分: 1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型2、Integer 变量必须实例化后才能使用,而int变量不需要3、Integer 实际是对象的引用,...

Java技术栈,分享最主流的Java技术 1175

JAVA数组中存储的是对象的引用而不是对象本身

在看同事代码的时候,看到一段突然有点看不明白了,伪代码大概如下 List<Integer> list = new ArrayList<>(); list.add(1); Integer integer = list.get(0); list.remove(0); System.out.println(integer); 大致的操作就是先从get后remove,原integer的引用还有值么? 然后看了下remove的源码,数组中的值确实被置为null了,这时就有点想不明白了那么in

weixin_42598683的博客 1097

int 与 Integer的比较,基本类型与引用类型

public class Test01_java自动装箱和拆箱 { public static void main(String[] args) { //Ingeter是int的包装类,int的初值为0,Ingeter的初值为null Integer integer=5; int i=5; System.out.println(integer==i); // true这里应该是integer进行了自动拆箱 System.o.

GDFHGFHGFH的博客 367
上一篇: echarts函数初始化简单介绍
下一篇: MySQL数据库定义 function、procedure、trigger报错:syntax error, unexpected end_of_input, expecting
danielinbiti
博客等级 码龄24年 610粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值