总结一下近期做的东西中遇到的问题

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&lt;Integer&gt; 时,以及通过打印变量检測程序执行和函数调用次数计数的更多相关文章

  1. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html

  2. java中的int与byte的转化

    java中的int与byte的转化 1.基础准备 1.1.原码 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值 1.2.反码 在原码的基础上,正数反码就是他本身,负数除符号位之 ...

  3. Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  4. Java中的int和Integer

    代码: public class Test{ public static void main(String[] args){ Integer i01 = 59; int i02 = 59; Integ ...

  5. java中byte, int的转换

    最近在做些与编解码相关的事情,又遇到了byte和int的转换,看着那些关于反码.补码的说明依旧头疼,还是记下些实用的方法吧.int -> byte可以直接使用强制类型转换: byte b = ( ...

  6. 【转】java中byte, int的转换, byte String转换

    原文网址:http://freewind886.blog.163.com/blog/static/661924642011810236100/ 最近在做些与编解码相关的事情,又遇到了byte和int的 ...

  7. java中Class.getResource用法(用于配置文件的读取)

    https://www.cnblogs.com/keyi/p/6282838.html ******************************************** 用JAVA获取文件,听 ...

  8. Java 中的 int 型转为 long 型

    先将 int 型转为 String 型,然后再将 String 转为 long 型,如下图: public class TestIntToLong { public static void main( ...

  9. 007、Java中定义int型变量

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

随机推荐

  1. 一步一步学习IdentityServer3 (13) 令牌

    IdentityServer3中客户端保护了授权资源,不难看出在IdentityServer3中,有这样一个设置 AllowedScopes = new List<string> { &q ...

  2. HBase应用之微博案例

    一. 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 二. 代码实现 代码设计总览: 1.创建命名空间以及表名的定义 //获取配置 ...

  3. 【LOJ】#2062. 「HAOI2016」地图

    题解 我对莫队真是一无所知 这个东西显然可以用圆方树转成一个dfs序列 然后呢,用莫队计算每个询问区间的每个数出现的次数,从而顺带计算每个数字的奇偶性 但是我们要查的数字也用一个范围,可以直接用分块维 ...

  4. 【LOJ】#2340. 「WC2018」州区划分

    题解 学习一个全世界人都会只有我不会的东西 子集变换! 难道我要把这题当板子讲?等等这题好像是板...WC出板题好刺激啊= = 假装我们都做过HAOI2015的FMT题,我们都知道一些FMT怎么解决或 ...

  5. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfr ...

  6. 黑马程序员_java基础笔记(07)...IO流

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...

  7. 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式

    [状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略, ...

  8. html中元素的id和name的区别(2016-1-22)

    HTML中元素的Id和Name属性区别 一直以来一直以为在html中,name和id没什么区别,今天遇到一个坑才发现(PHP获取不到表单数据,原因:元素没有name,只定义了id),这两者差别还是很大 ...

  9. 四、django rest_framework源码之频率控制剖析

    1 绪言 权限判定之后的下一个环节是访问频率控制,本篇我们分析访问频率控制部分源码. 2 源码分析 访问频率控制在dispatch方法中的initial方法调用check_throttles方法开始. ...

  10. 用 Python 实现一个大数据搜索引擎

    搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理. 布隆过滤器 ...