数据开发_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
posted @ 2020-12-17 18:37  辰令  阅读(135)  评论(0编辑  收藏  举报