Java 中的 int 与 Integer 用于 List<Integer> 时,以及通过打印变量检測程序执行和函数调用次数计数
总结一下近期做的东西中遇到的问题
1. Java 中的 int 与 Integer 用于 List<Integer> 时
两者之间的关系都是非常清楚的。int 是基本数据类型,存储的是值,而 Integer 是引用数据类型,存储的是指向数值的地址。
Integer 是在类层面上对 int 的封装。然后 Java 提供了自己主动装包拆包机制,使得两者之间能够转换。这里主要是測试了下它们用于 List 时候的疑惑。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package readdxflunwenyh; import java.util.LinkedList;
import java.util.List; /**
*
* @author User
*/
public class test_Integer { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
List<Integer> lst=new LinkedList();
lst.add(new Integer(1));
lst.add(3);
lst.add(5);
lst.add(7);
lst.add(9);
//test1
for(int i=0;i<10;++i){
if(lst.contains(i)==false) lst.add(i);
else System.out.println("true:"+i);//结果显示,直接用int型的i值来推断包括关系,能够正确推断
}
for(int i=0;i<lst.size();++i){//输出
System.out.print(lst.get(i)+" ");
}
System.out.println();
//test2
lst.remove(1);//结果显示,删除了索引1号位的元素
for(int i=0;i<lst.size();++i){//输出
System.out.print(lst.get(i)+" ");
}
System.out.println();
//test3
lst.remove(new Integer(1));//结果显示,删除了值为1的元素
for(int i=0;i<lst.size();++i){//输出
System.out.print(lst.get(i)+" ");
}
System.out.println();
}
}
结果:
true:1
true:3
true:5
true:7
true:9
1 3 5 7 9 0 2 4 6 8
1 5 7 9 0 2 4 6 8
5 7 9 0 2 4 6 8
5 7 9 0 4 6 8
通过測试发现,在 List<Integer> lst 推断包括关系 contains 时。能够用 int 型的变量正确推断是否包括了;而在删除 remove 时。用 int 型变量的话。删除的是对应索引的元素。而不是那个值的元素。究其原因。推測应该是 contains 方法没有被重载。它仅仅有一种參数,就是 Object 类型,这时用 int 型变量做实參。就自己主动转换为 Integer 类型。而 remove 方法被重载了,不仅有 int 型形參,还有 Object 型形參。这种话,当用 int 型变量做实參时,匹配的就直接是那个删对应索引的元素,即
int 型形參。不会转换为 Integer 变量。
这样想来,也是显然的了。
有 remove 的那个困惑,可能主要由于你在 add 的时候是能够直接用 int 型变量的,(并且经常都是用 int 型变量),处于对等的想法,就会以为在 remove 的时候用 int 型变量就能够删除值为它的元素。
只是另一点疑惑的是。List<Integer> 中存的是引用。程序中之前存的 1 或 2 的引用。和后来要删除时自己暂时 new 的新的 1 或 2 的引用。就算 1 的由于都是常量,但 2 第一次增加的时候是由 int 型变量转换而来,之后删除时 2 是暂时 new 出来的 Integer 变量,这种两个引用是一样的吗?
2. Netbeans 程序框和程序计数
之前一个程序跑了好久,然后过程中没有输出,看着 Netbeans 就是一直不动,以为程序哪里出问题卡死了呢。Netbeans 右下角有一个进度条,它在程序有输出时会连续跑 4 圈,然后变蓝色暂停不再跑。(这种话。不要以为程序出问题了~~~)
有一个小技巧就是,假设是递归调用的函数,能够加入一个静态变量记录该函数调用的次数。并每次输出它,不仅能够看到该函数被调用次数,也能够知道程序在执行~~意思就是通过打印变量去检測程序执行到哪了,特别是在递归的时候~
Java 中的 int 与 Integer 用于 List<Integer> 时,以及通过打印变量检測程序执行和函数调用次数计数的更多相关文章
- java中String,int,Integer,char、double类型转换
java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html
- java中的int与byte的转化
java中的int与byte的转化 1.基础准备 1.1.原码 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值 1.2.反码 在原码的基础上,正数反码就是他本身,负数除符号位之 ...
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- Java中的int和Integer
代码: public class Test{ public static void main(String[] args){ Integer i01 = 59; int i02 = 59; Integ ...
- java中byte, int的转换
最近在做些与编解码相关的事情,又遇到了byte和int的转换,看着那些关于反码.补码的说明依旧头疼,还是记下些实用的方法吧.int -> byte可以直接使用强制类型转换: byte b = ( ...
- 【转】java中byte, int的转换, byte String转换
原文网址:http://freewind886.blog.163.com/blog/static/661924642011810236100/ 最近在做些与编解码相关的事情,又遇到了byte和int的 ...
- java中Class.getResource用法(用于配置文件的读取)
https://www.cnblogs.com/keyi/p/6282838.html ******************************************** 用JAVA获取文件,听 ...
- Java 中的 int 型转为 long 型
先将 int 型转为 String 型,然后再将 String 转为 long 型,如下图: public class TestIntToLong { public static void main( ...
- 007、Java中定义int型变量
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
随机推荐
- NopCommerce Plugins 不能智能提示的解决方法(MVC 5 & RAZOR 3.0)
分享给需要的朋友: http://mhammadchehab.com/wordpress/2013/12/enabling-intellisense-for-razor-in-class-librar ...
- 提高eclipse使用效率(一)--使用快捷键
编辑代码常用快捷键 格式化代码的快捷键 Ctrl + Shift + F 格式化缩进的快捷键是 Ctrl + I,只能对选中的文本进行缩进 删除一行的快捷键是 Ctrl + D 当前窗口最大化最小化切 ...
- JavaScript中的数据结构及实战系列
本系列主要是讲解JavaScript中的数据结构及在实际项目中遇到的地方 JavaScript中的数据结构及实战系列(1):队列 JavaScript中的数据结构及实战系列(2):栈
- HBase的基础知识
1.HBase(NoSQL:不是关系型数据库)的逻辑数据模型 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC S ...
- JSP的学习二(请求转发与 重定向)
一: 1.介绍知识点 1). 本质区别: 请求的转发只发出了一次请求, 而重定向则发出了两次请求. 具体: ①. 请求的转发: 地址栏是初次发出请求的地址. 请求的重定向: 地址栏不再是初次发出的请 ...
- 前端-JS-BOM和DOM
前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...
- 六、django rest_framework源码之解析器剖析
1 绪论 网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_framewor ...
- JDK源码分析(四)——LinkedHashMap
目录 LinkedHashMap概述 内部字段及构造方法 存储元素 取出元素 删除元素 迭代器 利用LinkedHashMap简单实现LRU算法 总结 LinkedHashMap概述 JDK对Li ...
- Elasticsearch源码分析 | 单节点的启动和关闭
本文主要简要介绍Elasticsearch单节点的启动和关闭流程.Elasticsearch版本:6.3.2 相关文章 1.Google Guice 快速入门 2.Elasticsearch 中的 G ...
- [leetcode DP]120. Triangle
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...