JAVA|查漏补缺个人总结


文章目录

    • 数据结构
    • 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 所以get的是Integer对象 就算值相同 那也比较的是内存显然是不同的
所以解决方法如下 要么用两个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

    推荐阅读