编程中的小知识点

                                                                            ---------------------------------------------- 时间不多了,赶紧做一些你喜欢的事

1、Integer.valueOf()

   可以将 int 类型 转为为 包装类 Integer 类型

   可以将String 类型转换为 int 类型

 

2、HashMap  中的key 不可以为基本数据类型

      原因是hashMap底层存储相同的对象时候, 是先通过对象的hashCode 进行比较,

    然后再一顿操作的,但是基本数据类型是没有hashCode方法;

     所以在创建一个hashMap时,声明键类型的时候,不可以为基本数据类型

       https://blog.csdn.net/weixin_42054155/article/details/80715750

 

    java 八大基本数据类型: 

    byte- > short- > char- > int- > long- > float- >double(小到大)

 

    但是在向 hashMap 中存入键值对的时候,可以存入键为基本类型的数据

                           hashMap.put( 1,  3 );

    这是因为java存在一个装箱机制, 实际在底层存入的时候,其实是类似于:

                          hashMap.put(  new Int(1)  ,    3)

    给基本类型加个盒子,变成包装类。

 

3. HashMap 底层存储键值对是无序的,即存进去的顺序和取出来的顺序是不一致的,

需要有序的存入存出,需要什么样的Map?

       Hashmap是散列映射,也就是它不会记录数据存储时的顺序,也就无法保证你取出时的顺序,为了解决这个问题,

      很简单采用LinkedHashMap或者是TreeMap,当然会造成一些额外开销。

       你从linkedHashMap, TreeMap 名字,就知道他们的存入取出是按照一定规则进行的

 

4. 如何设置一个数组元素为全部1 或者 0

      int[] a = new int[];

      Arrays.fill(a, 1)  //  数组元素全部填充为1

 

5、 java 的参数 传递

https://blog.csdn.net/weixin_40288381/article/details/87798960

java 的参数传递分为两种类型: 值传递, 引用传递

(1) 值传递

     传递的是原对象的一个拷贝版本,是与原来对象值相同,但内存地址不相同的一个新的对象

(2) 引用传递

     传递的是原对象的地址,也就是在传值的时候,其实传递的对象的地址引用

所以: 值传递下: 拷贝对象的修改不会更改原对象, 因为他们实际上是两个不同的地址空间

            引用传递下: 对象的修改会改变原有对象,因为他们实际上是一个对象,指向同一个内存空间地址

问题来了: java 中 哪些对象的传递是值传递,哪些又是引用传递?
             值传递的只有基础类型 + 包装类: byte- > short- > char- > int- > long- > float- >double(小到大)(八大基础类型)

             包装类具有不可变性,所以也可以看做是值传递

             其余剩下的都是引用传递。

 

 

                                                        

6、 编程中除法用">>" 位运算

     x / 2   变为  x >> 1;   

   

7、 面对题目中没有显示 n 的大小范围的数的时候, 你可能就需要去考虑大数问题

  不管使用什么类型去装载,都有可能造成溢出问题,所以在只是输出数字的情况下,可以使用字符串去承载

 

8、 在查找数字类问题的时候,建议先从二分法去建立思路

 

 9、 substr(1)   就是从索引1开始截取(针对字符串)

 

 

 

  

   

 

posted on 2019-12-16 14:27  黄山一叶  阅读(355)  评论(0编辑  收藏  举报