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

java基础知识总结

    博客分类:
  • java
阅读更多

http://wiki.caucho.com/Hessian_Java_API_Overview hession wiki

 

IO
InputStream,OutputStream和Read,Write区别:前者读写都是以字节为单位,后者是以Unicode为单位。
java.util.concurrent-------------begin

对象在并发情况下自加计数,可以利用java.util.concurrent.atomic 包下的内容


ReentrantLock
--lock
--tryLock()(time,timeType)
--Condition
 --await()(time,timeType)

ReentrantReadWriteLock  读的时候锁是共享的(多线程同时读),写的时候锁是共享的(多线程的同时写),但写的时候不能读,读的时候不能写,适用于大量读少量写要加锁的情况,例如缓存的更新。
队列不能返回空

BlockingQueue阻塞队列concurrent包中的,用来实现 生产者-消费者 模式。

BlockingQueue的特点,如果队列为空的时候取对象会一直等待直到取到对象为止,如果队列满了,往里面放对象,会一直等到放入位置.这样才体现阻塞二字.


ArrayBlockingQueue 有界,要制定容量 最快
LinkedListBlockingQueue 无界 次快
PriorityBlockingQueue 无界 最慢 不是先进先出队列,类似于PriorityQueue
1、ArrayBlockingQueue性能优于LinkedBlockingQueue,但是LinkedBlockingQueue是无界的。
2、ArrayBlockingQueue和LinkedBlockingQueue的poll方法总是比offer方法快,并发越高,差距越大
3、ArrayBlockingQueue和LinkedBlockingQueue的性能远高于PriorityBlockingQueue,显然优先队列在比较优先级上的操作上耗费太多
4、PriorityBlockingQueue的offer方法与poll方法的性能差距很小,基本维持在近似1:1

java.util.concurrent-------------end

Iterator
调用remove前必调用next


集合
所有一下非Map结尾的类都实现了Collection接口
ArrayList 
自增缩类似数组的序列,删除时效率低,因为后面的元素都要往前挪位。每次插入都是到末尾。
LinkedList
类似双链表,可以在任一位置插入,且效率高。
但是一般来说插入都是到末尾,所以用ArrayList就ok了
HashSet
没用重复的无序集合,只有不在乎元素的顺序才用它
TreeSet
内部用红黑树实现,在插入数据的时候可以自动排序,迭代遍历输出有序的序列。如果需要排序的情况用他不错,排序时利用需排序元素本身的Comparable接口实现或者传入一个实现了Comparetor接口的排序策略类。
EnumSet
枚举类型元素集合
LinkedHashSet
类似于LinkedHashSet
PriorityQueue
可以高效的移除最小元素的集合,如果迭代遍历输出是无序的,它只保证add,remove时最小元素移动到根,这样每次根元素都是最小的
Set 不包含重复元素的Collection
所有的Map类有三种遍历方法:
按键遍历   Set<K> ketSet();
按值遍历 Collection<K> values();
按键值对遍历 Set<Map.Entry<K,V>> entrySet();
HashMap
是散列映射表。基于散列(哈希)结构的键值对映射表。当键冲突过多时,会自动进行再散列,防止过多键冲突。
HashSet
是树状散列表,使用键的全局顺序进行排序。而HashMap是对键进行散列。
如果不需要按排列顺序来访问键的话,就用HashMap就OK了
EmumMap
枚举类型的Map
LinkedListMap
他是个HashMap,但里面的元素却又有类似LinkedList的内部联系,在每次调用get和put方法的时候,都会把被操作的那个元素位置一道链表的尾部。这样查找的时候他具有HashMap的效率,遍历的时候又利用了LinkedList的优势。在实现高速缓存的“最近最少使用”原则非常有用。
WeakHashMap
用弱应用存放对象,当对象没有被在其它地方被应用的时候,就会被JVM自动回收。
IdentityHashMap
这个类里的键值不是由key的hashCode()函数的来的,而是由System.identityHashCode(key对象)得来的。的。

Collections排序列表,Arrays排序数组
Collections的binarySearch()必须保证传入的集合是有序的,否则会报错。

Base64 编码作用:把字符串转换成肉眼不可见的数据。如密码字段的传输。特点:加密算法简单
Base64 也會經常用作一個簡單的「加密」來保護某些數據,而真正的加密通常都比較繁瑣。

 

常用的对称加密算法有RC4,TEA,IDEA,AES,DES,Blowfish,Twofish等

 

int存放20亿,超过20亿用long

计算高精度的数BigInteger BigDecimal

数组或者先了Iterable接口的用for each遍历,优点不考虑边界。

数组copy,system.arraycopy

数组排序Arrays.sort

 

当类中有至少一个非默认构造器(有参数),则调用默认构造器(没有参数)来构造对象会报错

方法参数都是值传递

super只是调用超类关键字,不是引用

hashCode返回的是对象的存储地址

枚举类型比较永远不要用equals,直接用==就好了

 

知道该怎么处理的异常就捕获,不知道改如何处理的异常就抛出。

 

持久性:磁盘上布局和内存一样.例子,一个对象的引用被多个对象共享,反序列化过程保证共享对象之被加载一次(保证持久性)

序列化:内存地址转化为序列号

 

log原理

        StackTraceElement[] stack = (new Throwable()).getStackTrace();
        for(StackTraceElement s:stack){
            System.out.println(s);
        }

 

 

当程序挂起后,输入Ctrl+\,将会得到一个所有线程的列表。每个线程都有一个堆栈踪迹,他会告诉你当前哪里阻塞了。

 

Unicode:这是最统一的编码字符集,可以用来表示所有语言的字符,不兼容任何前面提到的编码字符集。Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041注意:在JAVA语言中书写时应该使用转义符‘\u’表示,如 char charA = ‘\u0041’; 这种表示方法等与 char charA = ‘A’;

 

float累述之后有个一个后缀F(例如,3.14F)。没有后缀的浮点数值(如,3.14)默认为double类型。当然也可以在后面加D表示为double类型(如,3.14D)。

 


try-catch-finally-return关系:
执行顺序:try catch finally try中的return
注:如果finally中有return语句,则不会执行try中的return,也不会执行catch中的return语句;

>>带符号位右移(用符号位填充左侧的位),>>>不带符号位右移(用0填充左侧的位),<<左移(用0填充左边的位),没有<<<

位运算
&与 |或 ^异或 ~非

泛型静态函数写法

 

 public static<T> T  doit(T obj,ArrayList<T> list){
  list.add(obj); 
  return list.get(0);
 }

 
 
 注意<T>的位置
  

 

StringBuffer同步性

String格式化输出

String的compareto 内部如何比较的

 

Scanner类
1.5后新加入的类,主要作用是用来遍历输出传入的数据,并输出。例如

Scanner s = new Scanner("1 2 3 4");
while(s.hasNext()){
Ssytem.out.println(s.next());
}

 
输出结果:

1
2
3
4

 
例如一个的路径为d:/1.txt内容为

liu 1.2
sd 12.1
asdf 123.1

 

File file = new File("d:/1.txt");
Scanner s = null;
try {
 s = new Scanner(file);
 while (s.hasNext()) {
   String name = s.next(); double percent = s.nextDouble();
   System.out.println("name=" + name + ";percent=" + percent);
 }
} catch (FileNotFoundException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
} finally {
 if (s != null)
  s.close();
}

 
输出结果

liu 1.2
sd 12.1
asdf 123.1

 
scanner的方法还有很多例如nextLine()方法。

 

写equal的注意事项
由于HashMap在判断某个元素是否存在是先判断他的hashCode()函数获得它的hashcode,然后再这个hashcode对应的散列项的,和散列项比较的时候是通过equals().如果equals()比较的值为true那么,你的hashCode()函数返回的值也一定要为true,如果不为true,更具刚才HashMap的判断原则就会出现两个equals()比较的值为true的元素被插入HashMap两次。

 


如何利用反射动态改变数组增长获得数组
见java core p192 使用反射编写通用数组代码 Array.newInstance(Class<?> componentType, int length)

 

代理类的使用
如果没有代理类Proxy,直接自己用反射机制实现面向AOP编程,每个类都要为他写一个代理对象。有了Proxy,我们就只需要传入三个参数,ClassLoad(类加载器,默认null就是JVM最原始的加载器),Class[] interfaces(被代理对象的所有接口),InvocationHandler(每个代理实例都具有一个关联的调用处理程序。代理类每次调用一个方法都会激活InvocationHandler的invoke方法)
invoke(Object proxy,Method method,Object[] args)throws Throwable
这个method传入的是被代理对象的方法

异常
异常的根为Throwable类,所有的异常必须为它的子类。
Throwable之下有两个分支Error和Exception,其中Error为java运行时系统内部错误和资源耗尽最经典的就是OutOfMemorryError,一般来说无需捕获;
然后就是Exception,他又分解为两个分支:
一个为RuntimeException,如果是这个异常的子类,那末一定是你代码写的有问题,常见的有NullPointerException,IndexOutOfBoundsException,错误类型转换,一般来说这些异常你必须自己有意识去捕获。
再就是能够自动运行(代码本身没问题,是用于外部环境导致有问题),由于某些情况导致异常的异常就不属于RuntimeException,例如试图在文件尾部读数据,可打开一个不存在的URL,打开一个不存在的文件,这些情况编码时,ide会自动提示你要加入try-catch模块;

算法:快速排序 红黑树

从高到低排列是public  ,protected  ,friendly, private
全友好 包+子类  包

 

 

分享到:
评论

相关推荐

    java知识点汇总

    首先,从【标题】:“java知识点汇总” 和【描述】:“内容较杂,有java初中高级知识点,也有Java web架构及原理”来看,涉及的内容包括了Java的序列化与反序列化、IO流的基础知识、多态的概念、泛型的应用、反射...

    java知识点总结

    java知识点总结 一、Java 概述 Java 语言的发展始于 1991 年,由 Sun 公司的 James Gosling 等人开始开发,最初命名为 Oak,旨在用于控制嵌入在有线电视交换盒、PDA 等的微处理器。1994 年更名为 Java。Java 语言...

    java 基础知识总结(经典)

    这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。

    JAVA基础知识总结.

    JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结

    Java基础知识总结

    Java基础知识总结 一些的基础知识 适合初学者和回顾以前的知识

    java 基础知识总结

    自己在网上找的相对好一点的java复习资料,留个纪念 。详细讲述了Java课程的知识点

    JAVA基础知识总结

    Java基础知识总结涵盖了Java程序设计语言的核心概念和常用知识点。在详细学习和总结这些知识点之前,首先需要对Java有一个整体的认识。Java是一种面向对象的编程语言,它具有跨平台的特性,即“一次编写,到处运行”...

    java基础知识总结(经典)

    Java 基础知识总结是 Java 程序员不可或缺的一部分,本总结将涵盖 Java 的基础知识,包括 Java 概述、Java 语法基础、变量、数据类型、运算符、控制语句、方法、数组、继承、多态、接口、异常、IO 流等。 一、Java ...

    Java基础知识总结 (绝对经典)

    ### Java基础知识总结(绝对经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人所开发的Oak语言,原计划用于控制嵌入式设备如有线电视交换盒和个人数字助理(PDA)。1994年...

    JAVA知识点总结(XMIND格式)

    以上知识点在"JAVA知识点总结思维导图(xmind)"中可能以思维导图的形式详细展开,包括每个主题的子话题和相关实例,帮助学习者系统地理解和掌握Java编程。通过深入学习和实践这些知识点,可以成为一名熟练的Java...

    Java基础知识汇总

    jdk,eclipse使用,循环,数组,基础API,面向对象,循环,运算符,关键字,String详解,IO流

    Java知识点总结2019

    Java知识点总结2019,其中包括了基础、面向对象、api部分、集合类、多线程、GUI、Jdbc、网络编程、io流。

    java基础知识总结(经典).pdf

    ### Java基础知识总结 #### 一、Java概述 Java是由Sun Microsystems公司(现已被Oracle收购)在1991年由James Gosling领导的团队所开发的一种面向对象的编程语言。最初被命名为Oak,目的是为了控制嵌入式设备和...

    Java知识点总结文档

    Java知识点总结文档全面涵盖了多个Java相关的技术领域,包括JVM、Java集合框架、多线程并发、基础语法、Spring框架的原理、微服务、Netty与RPC通信、网络编程、日志管理、分布式协调工具Zookeeper、大数据存储系统如...

    java知识点总结思维导图(xmind)

    这份"java知识点总结思维导图(xmind)"是为帮助学习者系统性地理解和掌握Java核心技术而精心整理的资料。思维导图作为一种有效的学习工具,能够帮助我们更好地组织和记忆信息,提高学习效率。 首先,让我们从基础...

    Java基础知识汇总.pdf

    本资源摘要信息是关于Java基础知识的总结,涵盖了Java语言的基本概念、语法、数据类型、操作符、控制流程、关键字等方面的知识点。 概念和提纲 Java技术是一种高级的面向对象的编程语言,也是一个平台,Java技术是...

    java基础知识点总结

    java基础知识点,面试宝典,最适合你的java面试知识点,所学java知识点总结

Global site tag (gtag.js) - Google Analytics