自动装箱的陷阱--读书笔记①

5分钟搞定三网话费余额查询:手把手教你用PHP+HTML搭建查询系统(含API调用避坑指南) 本文详细介绍了如何使用PHP+HTML快速搭建三网话费余额查询系统,涵盖API调用避坑指南、前端UI设计及性能优化。通过统一处理移动、电信、联通三大运营商接口差异,实现高可用查询功能,并提供安全防护与生产部署建议,帮助开发者高效构建稳定可靠的话费查询工具。 阅读详情
	/**
	 * 自动装箱的陷阱
	 * @param args
	 */
	public static void main(String[] args) {
		Integer a = 1;
		Integer b = 2;
		Integer c = 3;
		Integer d = 3;
		Integer e = 321;
		Integer f = 321;
		Long g = 3l;
		
		/**
		 * 原因: 内存地址相同, 小整数采用享元设计模式
		 */
		System.out.println(c == d);//true
		
		/**
		 * 内存地址不同, 
		 * 系统把-128~127之间的整数自动装箱成Integer实例,
		 * 并放入一个名为cache的数组缓存起来,
		 * 如果把一个-128~127之间的整数自动装箱成一个Integer实例,
		 * 实际上就是直接指向数组元素,所以相等;
		 * 但每次把一个不在-128~127的范围内整数自动装箱成Integer实例时,
		 * 系统需重新创建一个Integer实例
		 */
		System.out.println(e == f);//false 
		
		System.out.println(c == (a + b));//true
		System.out.println(c.equals((a + b)));//true
		System.out.println(g == (a + b));//true
		System.out.println(g.equals(a + b));//false
		
	}

示例来自<<深入理解Java虚拟机>>第二版,


基于C#的软PLC梯形图编辑器开发实战 本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。 阅读详情

相关推荐

沐数科技数据开发岗笔试题2025

与数据库中的主键(Primary Key)​有所不同,业务主键(Business Key)​是业务层面的唯一标识,通常由业务规则决定,例如,订单号、订单明细号,身份证号等。用户授信表(table_credit):包含用户ID(uid)、授信申请时间(credit_submit_time_local)、授信状态(credit_status)。:在正态分布中,大约68%的数据值落在距离均值一个标准差的范围内,约95%的数据值落在两个标准差的范围内,而约99.7%的数据值落在三个标准差的范围内。

weixin_40121264的博客 3525

Java 包装类:自动拆箱 / 装箱与 128 陷阱

先看一个经典的示例// true// false// false为什么同样是赋值,127 时==比较返回true,而 128 时返回false?为什么使用new关键字创建的对象即使值相同,==比较也返回false?

Gu_yyqx的博客 1054

AutoCAD Plant 3D自定义零件库实战:手把手教你用Python创建参数化槽式三通

本文详细介绍了如何利用Python脚本在AutoCAD Plant 3D中创建参数化槽式三通组件,从API原理到实战开发,帮助用户构建高效的自定义零件库。通过Python装饰器系统控制零件属性和行为,实现几何建模、参数管理和规格编辑器集成,提升工业管道设计的标准化和效率。

weixin_28267011的博客 331

《统计陷阱》读后感

《统计陷阱》读后感 知道这本的时候还是从我在大一刚进辩论队的时候,在日常的队训中听到队长建议阅读这本书的,之前总说要读呢,结果各种推过,现在终于静下心来阅读这本书了。看完之后的感触到真不少,而且总想着什么时候写一点读后心得之类的东西,无奈,因为惰性,大家也都是知道的。嘻嘻,废话不多说,直接进入正题。 先来谈谈写这本书的背景:在20世纪50年代,美国出现了一种尊崇统计风,太多的人都乐意,也轻易的

【逸辰杳】的博客 6701

BetaFlight开源飞控源码分析

BetaFlight是穿越机领域比较成熟的开源飞控,本篇文章主要分析一下源代码以及如何使用这个开源代码

weixin_43811044的博客 1万+

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2298

Integer类对象池与==问题:Integer a=34556,b=34556;但a==b为false

Integer类对象池与==问题:Integer a=34556,b=34556;但a==b为false

Java仗剑走天涯 1780

【好物推荐】MQTTX 快速入门使用指南

摘要:MQTTX是一款跨平台MQTT客户端工具,支持MQTT 5.0/3.1.1协议,提供桌面版、网页版和CLI版本。本文介绍了快速入门指南,包括下载安装、核心概念解释、连接公共MQTT服务器(broker.emqx.io)的步骤,以及订阅主题、发布和接收消息的操作流程。文章还提供了常见问题排查方法,帮助用户快速完成MQTT开发调试的基本操作。

奶爸的编程之路,也就一周冷个三天 864

Integer a = 128, Integer b = 128, a==b ; Integer c = 1 , integer d =1 , c==d

Integer a = 128;         Integer b = 128;         System.out.println(a==b);         Integer c = 1;         Integer d = 1;         System.out.println(c==d); 执行结果:false                     true

Spring为核心 6557

03 Token、Embedding、上下文窗口:开发者必须懂的三个基本概念

Token、Embedding 和上下文窗口是大模型应用开发的三个基础概念。本文从成本、速度、检索和上下文设计四个角度讲清它们的工程意义,帮助开发者理解为什么同一段内容会超限、变贵,为什么 RAG 能做语义检索。

老于的笔记的专栏 407

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

Java中的包装类的比较(Integer为例)

看下面一段程序(来自《深入理解Java虚拟机(第三版)》P376代码清单10-13 自动装箱的陷阱) Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; ...

LZCDTU的博客 636

基于卷积神经网络的遥感图像地物分类

AI:89-基于卷积神经网络的遥感图像地物分类 基于卷积神经网络的遥感图像地物分类是一个令人兴奋的领域,它在环境监测、城市规划、农业、国防等领域具有广泛的应用。深度学习技术为我们提供了更准确、高效的工具,有望在未来进一步提高分类性能。在本文中,我们探讨了卷积神经网络的工作原理、数据准备、模型构建、训练和评估过程,并提供了多个代码示例。此外,我们讨论了地物分类的应用和挑战,以及未来的发展趋势。

一键难忘的博客 2717

《Java Generics and Collections》读书笔记一:java泛型基本问题

参考资料: 《Java Generics and Collections》1. Java的泛型实现采用"擦除法". 编译器为我们完成类型擦除和必要的类型转换, 在运行时,每个泛型类只有一种类型. 具体地说, List, List 和 List> 在运行时都将具有相同的类型: List2. Boxing and Unboxing 自动装箱 和 自动拆箱特别注意在 == 比较时, 自动装箱和自

739

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

oracle字段不指定长度,oracle 中 某个字段的长度不够的sql 语句

&lbrack;读书笔记&rsqb;自动装箱的陷阱以及&equals;&equals;与equals先看一段代码,来自周志明的. Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Intege ...easyui combobox onSelect事件easyui combobox 没有oncha...

weixin_39695701的博客 413

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

读书笔记JVM探秘之六:编译器的那些事儿

前期编译java源代码——>JVM字节码(class文件) 大致的编译过程: 解析与填充符号表——>注解处理——>分析与字节码生成 具体就是词法分析、语法分析、构建语法树等过程,此阶段几乎不会对代码做出优化,撑死就是做一些冗余处理,比如 int a = 3 + 1; 改成 int a = 4;等。 值得一说的是解语法糖的过程,java有大量的语法糖,泛型、自动装/拆箱、变长参数、foreac

nvnnv的博客 626

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java集合框架深度解析:从数据结构到实战应用

在Java编程中,集合框架是管理对象组的基础工具,其核心原理基于不同的数据结构实现。例如,ArrayList基于动态数组,支持快速随机访问;HashMap则利用哈希表实现高效的键值对存储。理解这些底层数据结构的工作原理,对于优化程序性能至关重要。集合框架的技术价值在于提供了统一、高效的API,能够应对各种数据管理需求,如去重、排序和并发访问。在实际应用场景中,开发者需要根据具体需求选择合适的集合类型,例如在需要快速查找时使用HashSet,在需要保持插入顺序时使用LinkedHashMap。本文通过分析Ar

weixin_34409357的博客 341

python多功能文本编辑器_Python GUI文本编辑器

使用Python编写一个简单的文本编辑器,需要展示一个用户界面,功能包括打开、保存文本文件。使用tkinter库来编写GUI。#简单GUI文本编辑器fromtkinterimport*fromtkinter.scrolledtextimportScrolledTextdefload():withopen(filename.get())asfile:contents.delete...

weixin_39650091的博客 1441

自动装箱的陷阱

今天在阅读 jvm关于自动装箱部分的内容时,对最后一个案例 自动装箱的的陷阱感到疑惑。解决后特此记录 Integer a=1; Integer b=1; Integer c=128; Integer d=128; Integer e=127; System.out.println(a==b); System.out.println(c==d); System.out.println

weixin_44799092的博客 307

Java自动装箱与拆箱及其陷阱

在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有一个陷阱。开发者如果不注意,就会很容易跌入这个陷阱。 自动装箱(Autoboxing) 定义           大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象: Integer i=100;

JairusChan的技术博客 1万+

自动装箱和自动拆箱的陷阱

说明自动装箱的陷阱,防止成为bug程序员

weixin_54398380的博客 415

Java的自动装箱陷阱

Reference:http://book.youkuaiyun.com/bookfiles/135/1001354614.shtml 范例4.6  AutoBoxDemo2.java:public class AutoBoxDemo2 { public static void main(String[] args) { Integer i1 = 100;

haoyuewuwei的专栏 453

Integer a=1,b=1,c=128,d=128 问a==b,c==d结果分别是什么?

1. ==和equals的区别 ==表示内存地址是否相等。 equals表示两个对象的内容是否相等。 2. Integer a=1,b=1,c=128,d=128底层实现 整型值赋给一个Integer对象,出现了自动包装的效果,自动将调用Integer.valueOf方法 public static Integer valueOf(int i) { assert IntegerCac...

narutocxp的博客 2143

统计陷阱读书笔记

第一章 内在有偏的样本主要将通过偏差的样本来获得想要的数据,文中举例耶鲁大学毕业生的工资来说明这个问题,给出统计结论时却并未给出样本,通过合理的猜测,可以知道这样的样本是有偏差的,例如能联系上的人一般都不穷,愿意告诉别人自己工资的人更不穷 第二章 精心挑选的平均数一般给统计结论时却并不给出是那种平均数,是算术平均还是中位数或者是众数,通过这种方式来欺骗人,例

tianqio的专栏 3104

读书笔记 摘自:《统计数据会说谎》的笔记(作者: 【美】达莱尔·哈夫)

世界上有三种谎言:谎言、弥天大谎和统计数据。 ——迪斯雷利(Disraeli) 让我们陷入困境的并非我们不知道的东西,而是我们知道但并不正确的东西。 ——阿蒂默斯·沃德(Artemus Ward) 引言 你所看见的未必是真实情况,事实上这些数据要么被过于夸大,要么被隐瞒。 第一章 带有偏差的样本 在处理各类问题时,抽样过程是你所接触到的统计学主要内容的核心。 可悲的是,各种各样的结论就是从...

dkjkls的博客 2063

Integer a = 1; Integer b = 1;

Integer a = 1; Integer b = 1; Integer c = 500; Integer d = 500; System.out.println(a == b); System.out.println(c == d); Integer aa=new Integer(10); Integer bb=new Integer(10); int cc=10; System.out.p...

那些年的代码 4065
上一篇: finally return 分析
下一篇: 方法重载(overload)的例子分析(摘自<深入理解Java虚拟机>)
麦豆东东
博客等级 码龄14年 2粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值