javaSE那些事情三

1.java中的代理 proxy  

2.java中的图形界面  GUI       AWT  (一次编写,到处调试 ,很不好)   swing      2D图形编辑    7章  9章

事件处理(类似js点击事件的操作)core  java 8章   7章

java 部署 applet(SUN公司都不太用这个)

3.try(FileInputStream fis=.....){}  在执行完或者出现异常时 假如()里使用IO   会自动关闭  相当于finally语句 关闭流的操作  

4.分析堆栈跟踪元素

如下   代码  运行 打印出的结果可以看到 代码执行的 行数  方法名  类名 等信息 


 package com.jsdc.ybjava.ybjava;


import java.io.ByteArrayOutputStream;


package com.jsdc.ybjava.ybjava;


import java.io.ByteArrayOutputStream;


public class Test {

public static void method(int b,int c) {
Throwable throwable=new Throwable();
StackTraceElement[]stes=throwable.getStackTrace();
for(StackTraceElement ste:stes) {
System.out.println(ste.getLineNumber()+"=="+ste.getMethodName()+"=="+ste.getClassName());
}
}
public static void method(int a) {
a=a+1;
method(a,1);
}
public static void main(String[] args) {
method(1);
}

}

5.通过跟踪  可以一步步发现异常的最终root cause

6.传递异常比捕获异常更好,早抛出  晚捕获为好

7断言?

8.迭代器的next()和inputstream.read()类似 

9.可以在两端同时添加或删除元素的队列  双端队列 不支持中间操作元素

10.List<String>a=new ArrayList<String>();
a.add("a");
a.add("c");
List<String>b=new ArrayList<String>();
b.add("b");
b.add("c");
Set<String>set=new HashSet<String>(a);
set.retainAll(b);  将 集合a  b中交集元素保留下来    

for(String str:set) {
System.out.println(str);//输出c
}


}


11.集合转数组  如果直接用toarray,得到Object[]对象数组 ,是无法强转的

List<String>lists=new ArrayList<String>();
lists.add("1");

String[]strs=(String[])lists.toArray();//这里是错误的 ,即使知道元素的类型也不能这样转 运行时会报错

但是  我们可以这样

List<String>lists=new ArrayList<String>();
lists.add("1");

String[]strs=lists.toArray(new String[0]); toarray时构造一个新的同类型的数组 长度为0或者 和集合长度相同  

12.Collections.sort(lists, Collections.reverseOrder());对集合进行降序排序

Collection.binarysearch,需要先升序排列 才能使用


13.java遗留的集合 hashtable  以及 Enumeration的用法(类似迭代器的用法)

14.properties类

15.栈  Stack

16.Bitset

17多线程   stop()已经弃用     inerrupt()向线程发送中断请求  中断状态被设置为true   如果线程被sleep阻塞  则抛出interruptExcetion

还有一些方法  操作线程的状态  判断线程的状态,getState()获取线程的当前状态  

18.线程安全的vector hashtable已经被arraylist  hashmap取代了 ,后者是非线程安全的,可以使用同步包装器 变成安全的

List<T>list=Collections.synchronizedList(new ArrayList<T>());

Map<T,V>map=Collections.synchronizedMap(new HashMap<T,V>());

19.

三、产生死锁的必要条件

(1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。 
(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其它进程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不放。 
(3)不剥夺条件:指进程已获得资源,在使用完之前,不能被剥夺,只能在使用完时由自己释放。 

(4)环路等待条件:指在发生死锁时,必然存在一个进程—资源的环形链,即进程集合(P0,P1,P2,…,Pn)中的P0正在等待一个P1占用的资源;P1正在等待一个P2占用的资源,……,Pn正在等待已被P0占用的资源。

20.https://blog.csdn.net/diweikang/article/details/52680275

 java自带线程的使用


21.java 流 的使用    PushbackInputStream可以预读,


22.


PrintWriter以字符为单位,支持汉字,
OutputStreamWriter以字节为单位,不支持汉字,

处理人要看得懂的东西就用PrintWriter,字符
处理机器看的东西就用OutputStreamWriter,二进制

23.

创建cset  然后获取所有ISO-8859-1或者UTF-8....的集合  遍历查看内容

为了确定哪些可以用 可以按照下面的代码操作




猜你喜欢

转载自blog.csdn.net/ajax_yan/article/details/80073836