java-基础-api

1.String ,StringBuffer的简单总结

1.String

        1.String是final类,重写了equals方法

        2.字符串连接,考虑编译器和运行期

public class StringTest {
    public static void main(String[] args) {
        //s6 首先到常量池里面查看是否存在s,存在就堆中直接new 一个s6对象
        //如果常量池不存在,就先在常量池中创建一个s,同时堆中也会new一个s6对象
        String s6 = new String("s");
        //String 字符连接四种情况 相连要考虑编译器和运行期。java是一句一句编译
        //普通变量的值只能在运行后才能确定,但是final的常量不一样,可以再编译就确定
        String s = "s";
        String s1 = s + 1;
        String s2 = "s1";
        System.out.println(s1 == s2);//false

        System.out.println("-----------------------------");   
        final String s3 = "s";
        String s4 = s3 + 1;
        String s5 = "s1";
        System.out.println(s4 == s5);//true
        System.out.println("-----------------------------");  

        final String s7 = getS();
        String s8 = s7 + 1;
        String s9 = "s1";
        System.out.println(s8 == s9);//false

        System.out.println("-----------------------------");   

        String s10 = getS();
        String s11 = s7 + 1;
        String s12 = "s1";
        System.out.println(s11 == s12);//false

    }

    public static String getS() {
        return "s";
    }

}

2.StringBuffer和StringBuilder

StringBuffer 安全的,StringBuilder 不安全的,多线程下面使用StringBuffer但是性能低,所以单线程情况一般使用StringBuilder.

StringBuffer,动态扩充,默认长度16,扩充 leng*2+2 ,建议在知道长度的情况,指定长度,避免容量扩充,提高性能。

字符串相加,在1.5后会用StringBuilder,优化。注意这种s+=i,这种循环会产生多个StringBuilder,性能低。

3.idea 添加查看汇编工具 

 Arguments : -c $FileNameWithoutExtension$.class

Working directory: $OutputPath$\$FileDirRelativeToSourcepath$

2.Math 和 Random

        System.out.println(Math.PI);
        System.out.println(Math.abs(-10));
        System.out.println(Math.round(Math.random()*1000)/1000.0);
        System.out.println(Math.sqrt(2));
        System.out.println(floor(1.234564));
        
        Random r = new Random();
        System.out.println(r.nextLong());
        System.out.println(r.nextInt(10));

Date date = new Date();
        // java.sql.Date sqlDate = new java.sql.Date();
        System.out.println(date);

        // 使用两个构造方法
        // Date(long date) 参数是毫秒
        // Date()

        Calendar c1 = Calendar.getInstance();
        Calendar c2 = new GregorianCalendar();

        int year = c1.get(Calendar.YEAR);
        int month = c1.get(Calendar.MONTH);
        int day = c1.get(Calendar.DAY_OF_MONTH);
        int hour = c1.get(Calendar.HOUR_OF_DAY);
        int minute = c1.get(Calendar.MINUTE);
        int second = c1.get(Calendar.SECOND);
        int millisecond = c1.get(Calendar.MILLISECOND);
        StringBuilder sb = new StringBuilder(50);
        sb.append(year).append("年").append(month).append("月").append(day).append("日").append(hour).append(":")
                .append(minute).append(":").append(second).append(" ").append(millisecond);
        System.out.println(sb.toString());
        
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
        String nowDate = df.format(new Date());
        System.out.println(nowDate);

3.BigNumber

//大整数运算
String val1 = "84567890986544567";
String val2 = "45097659985495567";
BigInteger b1 = new BigInteger(val1);
BigInteger b2 = new BigInteger(val2);

System.out.println(b1.add(b2));//+
System.out.println(b1.subtract(b2));//-
System.out.println(b1.multiply(b2));//*
System.out.println(b1.divide(b2));// /
System.out.println(b1.remainder(b2));// %
System.out.println(Arrays.toString(b1.divideAndRemainder(b2)));


String val3 = "5696.698494847898754789";
String val4 = "6";
BigDecimal b3 = new BigDecimal(val3);
BigDecimal b4 = new BigDecimal(val4);
System.out.println(b3.add(b4));
System.out.println(b3.subtract(b4));
System.out.println(b3.multiply(b4));
System.out.println(b3.divide(b4));
//System.out.println(b3.scale()-b4.scale());

double pi=3.1415927;//圆周率

//取一位整数,结果:3
System.out.println(new DecimalFormat("0").format(pi));   
//取一位整数和两位小数,结果3.14
System.out.println(new DecimalFormat("0.00").format(pi));
//取两位整数和三位小数,整数不足部分以0填补,结果:03.142
System.out.println(new DecimalFormat("00.000").format(pi));
//取所有整数部分,结果:3
System.out.println(new DecimalFormat("#").format(pi));
//以百分比方式计数,并取两位小数,结果:314.16%
System.out.println(new DecimalFormat("#.##%").format(pi));

long num = 635463773;
System.out.println(new DecimalFormat("###,###").format(num));

4.md5

    String password = "admin123456";  //dsfkjdskfj76776f98732 明文(原文)
      String savePassword = "pmq7VoTEWWLYh1ZPCDRujQ==";//存储的密文
      
      try {
         MessageDigest md = MessageDigest.getInstance("md5");
         //通过MD5计算摘要
         byte[] bytes = md.digest(password.getBytes("UTF-8"));
         System.out.println(Arrays.toString(bytes));
         String mdStr = new String(bytes);
         System.out.println(mdStr);
//       a-z A-Z 0-9 / * BASE64编码算法
//       1.8版本
         String str = Base64.getEncoder().encodeToString(bytes);
         System.out.println(str);
         
         //JDK1.8之前使用
         BASE64Encoder base64 = new BASE64Encoder();
         String str = base64.encode(bytes);
         //base64解码
         BASE64Decoder decoder = new BASE64Decoder();
         byte[] bs = decoder.decodeBuffer(str);
         System.out.println(str);
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

 5.BinaryTree

public class BinaryTree {

   private Node root;
   
   //添加节点
   public void add(int data){
      if(root==null){
         root = new Node(data);
      }else{
         root.addNode(data);
      }
   }
   //输出节点
   public void print(){
      root.printNode();
   }
   
   private class Node{
      private int data;
      private Node left;
      private Node right;
      public Node(int data){
         this.data = data;
      }
      
      public void addNode(int data){
         if(this.data>data){
            if(this.left==null){
               this.left = new Node(data);
            }else{
               this.left.addNode(data);
            }
         }else{
            if(this.right==null){
               this.right = new Node(data);
            }else{
               this.right.addNode(data);
            }
         }
      }
      
      //中序遍历(先序遍历,后序遍历)
      public void printNode(){
         if(this.left!=null){
            this.left.printNode();
         }
         System.out.print(this.data+"->");
         if(this.right!=null){
            this.right.printNode();
         }
      }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值