文章目录
- 数据结构
- Java语言
- Integer处理-128-127的数情况
- Integer.parseInt() Integer.valueOf()
- 反射机制
- 浮点型的比较
- 字符串问题的一些处理
- 数据库
- GC
- socket
- 小细节
- 相等的细节
- 数组赋初值
- 算法题
- n sum
- n 皇后
- 出现一次的数字
- 计算机网络
- HTTP与HTTPS
数据结构 Java语言 Integer处理-128-127的数情况
因为valueOf这个函数源码是将常用的-128~127的对象缓存下来
而不是新开辟一个内存空间
所以代码中b1==c1 返回true
而d == e 返回false
int a=128;
Integer b=128;
//相当于int b= Integer.valueOf(128);
Integer c=128;
Integer b1=127;
Integer c1=127;
Integer d=new Integer(128);
Integer e=new Integer(128);
System.out.println(a==b);
//true
System.out.println(b==c);
//false
System.out.println(b1==c1);
//true
System.out.println(a==d);
//true
System.out.println(c==d);
//false
System.out.println(d==e);
//false
Integer.parseInt() Integer.valueOf()
前者将String返回成int 或者返回成Integer对象
反射机制
【JAVA|查漏补缺个人总结】反射机制
浮点型的比较
解决方法:
BigDecimal b1 = new BigDecimal(Float.toString(xx));
BigDecimal b2 = new BigDecimal(Float.toString(yy));
float ss = b1.subtract(b2).floatValue();
java 中浮点型的数值(float double这种)在进行相加相减或者比较的时候
会先转换成二进制即(E=M*R^K) 的形式, 由于小数的二进制表示 是不一定存在的
例如0.1 与0.25 用二进制表示 0.1是无线循环的二进制数 0.25则是0.01
然而在计算时候 会有一个舍去的策略。 所以导致最后结果会有偏差
例如1.0-0.9=0.10000000000000009
而在比较的时候
a=2.0b=1.9
(a==b));
使用“Math.abs()”方法比较是否相等:" + (Math.abs(a-b)>0) );
使用“Math.abs()”方法比较是否相等(比较宽容的限制):" + (Math.abs(a-b)<0.00000001) );
比较大小“<”:" + (a”:" + (a>b));
执行结果:
-------使用“==”符号比较是否相等:true
-------使用“Math.abs()”方法比较是否相等:false
-------使用“Math.abs()”方法比较是否相等(比较宽容的限制):true
-------比较大小“<”:false
-------比较大小“>”:false因此一般不会直接用“==”或者“!=”对两个浮点数进行比较。
判断两个浮点数float a 与 float b 是否相等可以根据他们的差的绝对值是否大于0来进行判断。
判断相等:
if(Math.abs(a-b)<=0){相等}
或者
if(!Math.abs(a-b)>0){相等}
判断不等:
if(Math.abs(a-b)>0){不相等}
字符串问题的一些处理
Character类里面一些实用的方法:
Character.isLetterOrDigit
Character.isLetter
Character.isDigit
判断一个字符时候为空白的字符isWhitespace()
判断一个字母是否为大写isUpperCase()
数据库 GC socket 小细节 StringBuilder.replace(int start ,int end ,int val);
Integer.parseInt(String str , int radix);
Integer.to*String(int i);
Integer.toUnsignedString(int i , int shift(二进制位1 十六进制为4);
相等的细节
在LeetCode209题中,建立了两个Map 当用get方法比较时候 用了
if (map1.get(word[i]) != map2.get(strings[i]))
return false;
这个因为Map
所以解决方法如下 要么用两个int值接住 要么用equal方法
if (map1.get(word[i]).equals( map2.get(strings[i])))
return false;
int a= map1.get(word[i]);
int b = map2.get(strings[i)];
if(a!=b)
return false;
数组赋初值
如果把一组数组赋统一初值 不需要用for循环 用
Arrays.fill(name,val);
算法题 n sum
n sum 问题解答
n 皇后
n 皇后
出现一次的数字
出现一次的数字
计算机网络 HTTP与HTTPS
HTTP 与 HTTPS
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)