查漏补缺个人总结

10 篇文章 0 订阅
8 篇文章 0 订阅

数据结构

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对象

反射机制

反射机制

浮点型的比较

解决方法:
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.0  b=1.9
  (a==b));
      使用“Math.abs()”方法比较是否相等:" + (Math.abs(a-b)>0) );
      使用“Math.abs()”方法比较是否相等(比较宽容的限制):" + (Math.abs(a-b)<0.00000001) );
   比较大小“<”:" + (a<b));
     比较大小“>”:" + (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<Character,Integer> 所以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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值