编程中的小知识点
---------------------------------------------- 时间不多了,赶紧做一些你喜欢的事
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开始截取(针对字符串)