您的位置:首页 > 编程语言 > Java开发

java基础知识总结--javase

2018-03-08 21:07 465 查看
1.  java : 诞生于1995年 ,纯面向对象,跨平台,主要用于互联网和嵌入式; 
2. date.getTime() -- 1970至今的毫秒数;
3. java运行机制 : 先编译,后解释
    首先将具有平台依赖性的.java源文件通过编译器编译成平台中立的.class字节码文件,在jvm中运行时再根据平台的不同选择对应的解释器解释成机器码文件运行。

4. jvm(java virtual machine) : JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
    JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。
    JVM在整个jdk中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也叫虚拟计算机.操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境。

1.创建JVM装载环境和配置2.装载JVM.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so)3.初始化JVM.dll并挂接到JNIENV(JNI调用接口)实例  JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信 是JNI联系Java世界和Native世界的桥梁4.调用JNIEnv实例装载并处理class类。 5. jre(java runtime environment) : java运行环境 编译器 + jvm
6. jdk(java development kit): java开发工具 jre + 核心类库 + 工具
7. java的编译运行命令 : 
    javac -d . Hello.java

    java p.Hello
    javadoc -d . Hello.java
8. java结构 :
   package : 包名全小写
  class       : 类名首字母大写 只能有一个公开类 并且公开类的类名必须与源文件的文件名一致
  method    : 方法名驼峰命名法
  filed         : 属性变量驼峰命名法
9. 变量类型 :
    基本类型 : byte(1) short(2) int(4) long(8) float(4) double(8) char(2) boolean(1)
    引用类型 : String 数组 类 接口 枚举 注解
10. 运算符 :
      +、-、*、/、%
      ==、+=、-=、*=、/=、%=
      短路 : &&、||、!
      非短路 : &、|、^、~
    <<、>>、>>>
    a>b?a:b
11. 选择语句 :
      if(...) {} else if(...) {} else {}
      switch(...) {case 1 : ;break; ... default : ;break;}
12. 循环语句 : 
      for(..;..;..;) {}
     while(..) {}
     do {} while(...);
13. 方法 : 修饰符 返回值 方法名 (参数表) 抛出的异常 {函数体}
14. 方法的重载 : 方法名相同 参数表不同
15. 方法的覆盖 : 
      返回值 方法名 参数表 完全相同
      修饰符与父类相同或更宽
      不能抛出比父类更多的异常
16. 面向对象 : 将一切客观存在的事物都当做对象来处理
17. 封装 : 隔绝 与保护 形成一个内外分明的间隔
18. 继承 : 父子关系的维系 单继承
19. 多态 : 主要关系之外的附加关系的维系 多继承多实现
               接口 : 公开抽象方法
                          公开静态常量
20. this(...) : 调用本类的构造方法
     super(...) : 调用父类的构造方法
     以上两个都必须在方法的第一行
21. this.method() : 调用本类的方法
     super.method() : 调用父类的方法
22. 抽象 abstract :
     抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
23. 集合 : Collection : 元素是对象
                 List : 元素有序,可以重复

                        ArrayList :

                        Vector :
                        LinkedList :
                 Set : 元素无序,不可以重复
                        HashSet :
                        TreeSet :
     Map : 键唯一,值随意
                       HashMap :
                      HashTable :
                          Properties : 用于加载配置信息
                     TreeMap :
                  集合的遍历 : 
                    Set与List的遍历 :
                Set<String>       set        = new HashSet<String>();
Iterator<String> iterator = set.iterator();
        while(iterator.hasNext()) {
        String str = iterator.next();
        System.out.println(str);
         }
                 for(String str : set) {
                    System.out.println(str);
                  }

             Map遍历 :

               值遍历 : 
               Collection<Object> c = map.values();
for(Object o : c) {
System.out.println(o);
}
                键遍历 :
                Map<String, Object> map = new HashMap<String, Object>();
Set<String>         set = map.keySet();
for(String key : set) {
System.out.println(key + "----------" + map.get(key));

}
                Map<String, Object> map = new HashMap<String, Object>();
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + "---------" + map.get(key));
}
                键值遍历 : 
                Map<String, Object> map = new HashMap<String, Object>();
Set<Map.Entry<String, Object>> entrySet = map.entrySet();
for(Map.Entry<String, Object> me : entrySet) {
System.out.println(me.getKey() + "-------" + me.getValue());

}
                Map<String, Object> map = new HashMap<String, Object>();
Set<Map.Entry<String, Object>> entrySet = map.entrySet();
Iterator<Map.Entry<String, Object>> iterator = entrySet.iterator();
while(iterator.hasNext()) {
Map.Entry<String, Object> me = iterator.next();
System.out.println(me.getKey() + "---------" + me.getValue());
}

24. IO :
          字节流 : InputStream/OutputStream
                       FileInputStream/FileOutputStream               节点流
                       DataInputStream/DataOutputStream            过滤流
                       ObjectInputStream/ObjectOutputStream       过滤流
                       BufferedInputStream/BufferdOutputStream   过滤流
                       PrintStream --- System.out.print()                 过滤流
          字符流 : Rider/writer
                        FileReader/FileWriter                                   节点流
                        BufferedReader/BufferedWriter/PrintWriter  过滤流
             桥转换流 : InputStreamReader/OutputStreamWriter 唯一设置编码格式的流        
             对象序列化 : 对象在流中传输 实现Serializable接口
             开发过程 : 
                            创建节点流
                           封装过滤流
                           输入/输出
                           关闭流(一般关闭最外层的流即可)
25. 
     线程 : 一个进程中并发的一个顺序执行流程
     并发 : 对于一个CPU,宏观并行,微观串行,cpu分时间片
     空间 : 堆空间共享 栈空间独立
     创建线程    : implements Runnable / extends Thread
     启动关闭    : thread.start()  thread.stop();
     初始状态    : 创建Thread对象
     可运行状态 : thread.start()
      运行状态   : cpu选中
      终止状态   : 线程运行完成
      阻塞状态   : 等待输入 join sleep
      锁池状态   : 加同步,但是没有获得锁标记
      等待队列状态 : wait
      线程同步 synchronized
     死锁 :多个同步 相互join
26. 反射 : 从类对象中获取类的信息来操作类
     类加载 : jvm第一次使用一个类时,会根据类的classpath路径寻找到这个类的.class字节码文件,读取其中的信息并保存到类对象中;
    类对象 : 保存类的信息的对象;
   类对象的获取 : Class.forName(全限定名);
                           类.class
                           对象.getClass()
   类对象的使用 : 
                Class c = Class.forName("java.util.Map");
Object o = c.newInstance();
c.getAnnotation(annotationClass);
c.getFields();
c.getField(name);
c.getMethods();
Method method = c.getMethod(name, parameterTypes);

method.invoke(o, args);
27. 枚举 : Enum 是所有 enum 的父类
     enum A {
SPRING("春天"),
SUMMWER("夏天");
private String name;
private A(String name) {
this.name = name;
}
public String getValue() {
return this.name;
}

    }
28. 自定义注解 :
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})
      @interface In {
public String value() default "hello";

      }
29. 异常 : 
      Throwable - Error
                        - Exception
                              | - RuntimeException 抛出异常 : throw new RuntimeExcepiton();处理异常 : throws Exception                 try {} catch(Exception e) {} finally {}自定义异常 :  class MyException extends Exception {
    public MyException(String name) {
super(name);
   }

  }
30. 网络   
         ServerSocket ss = new ServerSocket();
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream());
out.println("hello world");
out.flush();
}

Socket s = new Socket(ip, port);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = in.readLine();

 System.out.println(str);      
31. 基类 Object
finalize();
getClass();
hashCode();
equals();
clone();
wait();
notify();
notifyall();
toString();
32. 修饰符 
public protected (default) private
 static abstract final
synchronized
transient 修饰属性,不进行序列化
33. 线程绑定 : ThreadLocal 本地线程 原理是以自身为键的map
34. 关键字 : instance 判断对象的实际类型是否属于某个类
 35. 泛型 : 为了定义集合或是其他类的类型安全
36. Integer常量池 : -127 --- 128
      int a = 100;
Integer in = new Integer(100);

System.out.println(a==in);
结果为true;
int a = 500;
Integer in = new Integer(500);

System.out.println(a==in);
结果也为true
37. String 串池 : 常量 
    StringBuilder StringBuffer
   String abc = "abc";
         String bcd = new String("abc");

         System.out.println(abc==bcd);
结果为false

    

     
                          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: