zoukankan      html  css  js  c++  java
  • 数据开发_Java基本类和接口源码和代码

    前言

    读源码,写代码
    

    基本的包lang的基本情况

      1.java.lang.Object
        java.util.Objects
           Object:  
    	     01.hashCode()  equals()  toString() 
    		 02.clone()  :Object类的clone()方法是一个native方法
    		   clone方法首先会判对象是否实现了 Cloneable 接口,若无则抛出CloneNotSupportedException
    		     public boolean equals(Object obj) { return (this == obj);}
    			 shallow copy" of this object, not a "deep copy" operation.
    	     03.getClass  notify()  notifyAll()   wait()  finalize()    
      2.java.lang.Cloneable
              public interface Cloneable {}
    		  说明: 实现此接口的类应当重写 Object.clone方法 (被保护)带有public
    		        深度拷贝
    				用instanceof关键字运算符来进行类型查询 if (obj instanceof Cloneable) {     
      3.java.lang.Comparable
      	    public interface Comparable<T> { int compareTo(T o)}
    		要用Comparable接口,则必须实现这个接口,并重写comparaTo()方法;确定该类对象的排序方式
        java.util.Comparator
    	    Comparator{ compare()}
    		Comparable 更像是一个内部排序接口,一个类实现了Comparable比较器,就意味着它本身支持排序;
    		  可以用Collections.sort() 或者 Arrays.sort() 进行排序
    		  compare() 方法的用法和Comparable 的 compareTo() 用法基本一样,这个方法不允许进行null值比较,会抛出空指针异
              对于一些自定义类,它们可能在不同情况下需要实现不同的比较策略,我们可以新创建 Comparator 接口,
             然后使用特定的 Comparator 实现进行比较 
      4.java.lang.Iterable
                public interface Iterable<T> {Iterator<T> iterator();}
    			只是返回了一个Iterator对象
    			实现了Iterable的类可以再实现多个Iterator内部类
      java.util.Iterator
                public interface Iterator<E> 
    		Iterator 为Java中的迭代器对象,而 iterable 接口里定义了返回 iterator 的方法
    		 public interface Iterator<E> {
              boolean hasNext();
              E next();
              }
    		       
      5.java.lang.Class
            getPrimitiveClass
       java.lang.ClassLoader       
    
       java.lang.Runnable
      	public interface Runnable
      
       java.io.Serializable
      		public interface Serializable {}
      
       java.lang.Readable //Readable 是一个字符源。read方法的调用方能够通过 CharBuffer 使用 Readable 中的字符
      	  public interface Readable {
       java.util.Collection
      		public interface Collection<E> extends Iterable<E>
      		public interface Map<K,V> {
      		public abstract class AbstractMap<K,V> implements Map<K,V> {
      		public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {
      
      		public interface SortedMap<K,V> extends Map<K,V> {
      		public interface NavigableMap<K,V> extends SortedMap<K,V> {
      		public class TreeMap<K,V>extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable
    
       6.Java中标记接口 以用作描述类的元数据,运行时通过反射机制去获取元数据,1.5之后注解(Annotation)才成为了最好的维护元数据的方式
    	   Java中的标记接口(Marker Interface),又称标签接口(Tag Interface)
    	     RandomAccess 接口 
    		 Cloneable    接口
            Serializable  接口
    

    常用基础类

     包装类
     String类
     Array数组类
    
     具体情况:
       1.包装类
           Boolean.valueOf()  静态方法  装箱操作--将基本类型转化为包装类型 (Java1.5自动装箱和拆箱)
    	   b.booleanValue()   拆箱操作
    	  共同点: 重写了 Object 的方法 : equals()  hashCode() toString()
    	           实现了 Comparable 接口
    			   不可变性 -- final 不可继承, 变量设置为private且没有setter方法
       2.String
        public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    	  方法: 自身的情况,和其他字符的情况  
               判断:
                       isEmpty   startsWith endsWith  
    				   contains  matches    equals()    equalsIgnoreCase()      
               获取:  indexOf  lastIndexOf
    		           charAt() length()
    	               codePointAt()方法在字符串的指定索引处返回字符的Unicode值
               变换:  toLowerCase  toUpperCase  trim   substring()
    		           replace  replaceFirst replaceAll  split 正则
                       compareTo   compareToIgnoreCase  equals  equalsIgnoreCase()
    				   valueOf 数据类型转换
    			其他: 结合其他的语句: 迭代循环访问	
    		 说明: equals()  hashCode()  toString()
    		        public int compareTo(String anotherString) {
    		可变动
    		  StringBuffer 线程安全
    		  StringBuilder =  +  += 的背后是采用StringBuilder的append()
    	3.Array 数组 同类型元素(元素可以为:primitive or reference 基本类型 或 引用类型)  interface type/abstract class
    	            数组长度创建时指定
    				数组的长度不是数组类型的一部分,在方法中,如果参数的类型是例如 String[] ,调用传入的数组可以包含任意个元素
    				数组类型不是类,但数组实例是对象
    				数组实现了 Serializable,即 数组中元素可以序列化,则数组可以被序列化
    		  元素: 没有名称,使用的  index values 来进行查看
    		 Every array type implements the interfaces Cloneable and java.io.Serializable
    		type annotations
    		 创建: An array creation expression is used to create new arrays
    	   getLength
    	   get  getBoolean  getByte  getChar  getShort  getInt  getLong  getFloat  getDouble
    	   set  setBoolean  setByte  setChar  setShort  setInt  setLong  setFloat  setDouble
    	  Arrays: 复制 比较 批量设置值 计算Hash值  排序 查找 toString
    	          存储固定大小的同类型元素 --   component type of the array 元素的类型 元素的值  数组 element type 
    			  Arrays must be indexed by int values
    	     copyOf
    		 copyOfRange
    		 equals
    		 fill
    	  相关:  myIDArray[0]  数组元素的值, 数组的索引  length是数组对象的属性 
    	       int[] myIDArray = new int[5];  
    	      int len   = myIDArray.length; 
    	    初始化: 原始数据类型的数组元素被初始化为其数据类型的默认值
    		  List<Integer> list=new ArrayList(Arrays.asList(sz));//**须定义时就进行转化**
    		说明:声明  int[] a;
    		     创建和初始化数组-- 创建即new
    		     声明和初始化 int[] a = {1,2,3}; ==这种条件下可以省略new关键字和元素类型
    			 第二种:先使用new关键字创建数组,然后再分别为数组中的元素赋值,完成初始化操作
    

    其他情况

    方法

     带括号的() - 无参数的情况
     类名 对象名= new 构造方法;  (构造方法 构造方法和类名相同)
     ()是参数,里面没东西就是没有参数的构造方法
     声明变量,存储一个 XXX的对象
     创建这个对象 ,括号中可选的参数列表,会传入类的构造方法,初始化新对象的内部字段
    

    匿名类

     匿名类是一种没有名称的局部类,匿名类是一种表达式
     构成 = new 类名称(){} 花括号中的类主体
     匿名类没有构造方法,括号内常为空
     2、匿名类实现HelloWorld接口
      HelloWorld frenchGreeting = new HelloWorld() {
        String name = le monde";
        public void greet() { greetSomeone("tout le monde");}   
        };
    

    lambda表达式

      参数列表 方法主体
      () -> {}
    

    Stream 表达

        <R> Stream<R> map(Function<? super T, ? extends R> mapper);
       IntStream mapToInt(ToIntFunction<? super T> mapper);
       LongStream mapToLong(ToLongFunction<? super T> mapper);
     public class Java8Example {
         public static void main(String[] args) {
             List<Integer> transactionsIds = Arrays.asList(3, 2, null,2, 3, 7, 3, 5);
             IntSummaryStatistics stats = transactionsIds
                     .stream()
                     .filter(string ->string!=null)
                     .mapToInt((x) ->x)
                     .summaryStatistics();
             System.out.println("列表中最大的数 : " + stats.getMax());
             System.out.println("列表中最小的数 : " + stats.getMin());
             System.out.println("所有满足条件数之和 : " + stats.getSum());
             System.out.println("所有满足条件数的个数 : " + stats.getCount());
             System.out.println("平均数 : " + stats.getAverage());
         }
     }
    

    参考

      Comparable 和 Comparator的理解 https://www.cnblogs.com/cxuanBlog/p/10927495.html
      Java中的Iterable与Iterator详解 https://www.cnblogs.com/litexy/p/9744241.html
  • 相关阅读:
    JAVA线程池原理详解一
    并发工具类:CountDownLatch、CyclicBarrier、Semaphore
    JAVA并行框架:Fork/Join
    Mock Server实践
    MockWebServer使用指南
    mybatis学习笔记 spring与mybatis整合
    怎样使用Mock Server
    基于unittest测试框架的扩展
    运营商劫持
    单元测试实战手册
  • 原文地址:https://www.cnblogs.com/ytwang/p/14148871.html
Copyright © 2011-2022 走看看