`
kidiaoer
  • 浏览: 806650 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java基础总结

阅读更多
JNI是java和本地应用程序之间的中介,调用用其他语言编写的程序。
  先编写java Hello.java程序,然后编译成class文件,再创建.h文件:javah -jni Hello ,再写一个本地实现,再创建一个共享的库

静态语句块 static {  } 当类加载时执行

finalize()protected,自动调用,内存不够的时候才调用,
System中gc() 静态的,显示垃圾回收。

子类和实现类中方法的访问权限不能低于父类和接口中的权限。

java中不允许类的多继承 单允许接口的多继承。extends A,B,C...........extends再implements前面

内部类(内置类):在类中定义一个类,仍是独立的类,可以访问外部类的私有成员变量Outer.this.
                   可以放在方法中也可以放在语句块中,当放在方法中,若在内部类中访问方法的变                   量或参数时,编译会报错,应把方法变量声明为final,内部类的访问修饰符和方法一                 样
StringBuffer    .delete(4,8)包括4不包括8, .insert(index,str) .reverse()反序

   基本数据类型传递的是数据的拷贝,引用类型传递的是引用的拷贝。为了不改变原始的对象数据,可以获取对象的一份拷贝,用Object中的clone()方法返回Object类型。子类重写clone()方法,为public,要super.clone(),可能抛出异常:CloneNotSupportedException,必须实现Cloneable接口,该接口中没有任何抽象方法,叫做标识接口。


    当调用println() 打印一个对象的时候默认调用了object中的toString()方法,建议每个子类重写toString()方法,object中的toString()方法返回string equal to:getClass().getName()+'@'+Integer.toHexString(hashCode())

数组的相关操作:
    数组的复制:System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
    数组的排序:Arrays.sort() 返回类型void。当对 对象类型数组排序时,在数组中的所有对象必须
    实现Comparable接口,必须实现方法int compareTo(Object o),大于o返回正数,==返回0,else 负数
   有序元素查找:Arrays.binarySearch(a,value) 返回value在数组a中的index

封装类:java.long包中定义的。
Class类:java.long.Class
       getClass()获取Class实例,Class.forName(String name),会抛出异常:                    ClassNotFoundException, .class  .TYPE(基本类型的封装类)。

java 提供了对多线程程序的支持,实现多线程程序的两种方式:
(1)从Thread类继承:java.long包中,Thread.currentThread().getName():获取线程名。线程启动:
    void start(),然后会执行线程中的 void run()方法,可以理解为线程的入口。setDaemon(boolean)
    必须在start()前调用,设置为后台线程。静态的yield():放弃自己执行的权利,及暂停自己。
getPriority(),setPriority()获取设置优先级Thread.MAX_PRIORITY,MIN_PRIORITY,DEFAULT_PRIORITY
在java中,线程通常是抢占式的而不需要时间片分配。
(2)实现Runnable接口:只有一个方法void run()。  new Thread(st).start()。  
     Thread.sleep(long mills) 抛出异常:
     线程的同步方式:同步块和同步方法:
           同步块:synchronized(Object obj){}
           同步方法:public synchronized void sell(){}

ArrayList: 能自动增加容量的数组,toArrary()返回一个数组Object,ArrayList a=new ArrayList();
          a.add(" ");a.size();a.get(index);
           Arrays.asList()返回一个列表,是固定大小的列表,但可以更改元素:set(index,element)
迭代器(Iterator):访问集合中的元素,提供三个方法: iterator()返回迭代器
                   boolean hasNext()
                   Object next()
                   void remove() 删除上一个返回的元素, 列表不支持remove()
迭代器与for循环:如果未提供get()方法,for循环无法遍历元素,iterator可以,用集合类的对象就可                 获得迭代器,这样很通用。

Collections类:不是collection接口。全是静态方法
               排序:Collections.sort(),自然排序,升序,实现比较器Comparator接口:
                实现Comparable接口,必须实现方法int compareTo(Object o)
               获取最大最小元素:Collections.max(),Collection.min()
               在已排序的List中搜索指定元素:Collections.binarySearch()

LinkedList: 采用双向循环链表实现的。利用LinkedList实现栈(stack),队列(queue),
            双向队列(double-ended quequ)。
         栈: LinkedList li = new LinkedList();li.addFist();li.getFirst();li.removeFirst()
            li.isEmpty();
      队列:LinkedList li = new LinkedList();li.addLast();li.getLast();

ArrayList和LinkedList比较:ArrayList底层采用数组完成,而LinkedList用双向链表完成,除了数据本                            身还有两个引用,指向前一个和后一个元素。
                        如果经常在List中进行插入删除操作,用LinkedList, 随机访问ArrayList

HashSet:实现Set接口的hash table散列表:(哈希表),依靠HashMap实现,不能重复。无get()函数
        HashSet hs =new HashSet();hs.add();
        我们用该为要存放到散列表的各个对象定义hashCode()和equals()方法
TreeSet: 有序集合,缺省按升序排列;实现Comparable接口;TreeSet ts=new TreeSet();ts.add();
         没有get()方法,用iterator遍历
    HashSet是基于Hash算法实现的,性能优于TreeSet,通常使用HashSet,需要排序时用TreeSet。
  
HashMap:实现Map接口;与Collection无关,无add();HashMap hm=new HashMap();
         hm.put(key,value);有get(key)方法;Set keySet()返回key视图;Collection values()
         返回values视图: Set keys=hm.keySet;Collection values=hm.values();
         Set entry=hm.entrySet();返回key-values

TreeMap:按照key进行排序,和HashMap用法类似。HashMap的速度通常比TreeMap快,需要排序用TreeMap

HashMap   : JDK 1.2 之后的新类,异步处理方式,性能较高,属于非线程安全,允许设置Null
HashTable : JDK 1.0 时推出,同步处理方式,性能较低,属于线程安全,不允许设置Null

sleep()与wait()区别:
       sleep()是Therad中定义的方法,线程的睡眠,自动唤醒
       wait()是Object中定义的方法,用notify()或notifyAll()唤醒

单例模式singleton:构造函数私有化,在类内部创建私有实例,提供供外部访问的静态方法

抽象类不能new自己

串行化(Serialization)是计算机科学中的一个概念,它是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。











分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics