您的位置:威尼斯官方网站 > 威尼斯正规官网 > 静态的分子)

静态的分子)

发布时间:2019-08-11 14:49编辑:威尼斯正规官网浏览(139)

    Core Java,corejava

    Java 语言核心

    1. 面向对象
      1) 封装(成员、方法定义、构造方法、访问控制、 内部类、static、final)

    a.成员和方法的定义,内存结构
    JVM内存可以分为:方法区、堆、栈
    方法区:类的信息(类的定义、方法代码、
    静态的成员)
    持久(类在第一次被使用时,装入方法区
    JDK的核心类是在JVM启动的时候自动装入 的)、唯一(只会装入一次)
    堆:通过new关键字创建的对象
    持有(被引用指向、在集合中)、
    回收(当对象不再被持有时)
    栈:在方法中声明的局部变量
    方法调用完之后即会清空

    b.构造方法
    初始化成员变量
    子类的构造方法必须调用父类的构造方法,为了
    保证子类中从父类继承的成员被妥善的初始化
    一般情况下Java类都要提供一个无参的构造方法
    c.访问控制
    类(为内部) public defualt
    成员 public protected default private
    public 封装对外提供的功能
    尽量要保证其稳定性
    要对参数进行合法性验证,保证其健壮性
    //IllegalArgumentException
    必须妥善的处理异常
    private 一个类中,多个方法中的公共部分
    protected 多个类中的冗余部分,在父类中封装

    成员变量和属性的区别!!!

    设置emp对象的xxx属性为“goodman”
    等价于调用emp的setXxx("goodman")

    获取emp对象的xxx属性
    等价于String name = emp.getXxx();

    d.内部类
    公有类 public
    包内类 default
    内部类 定义在一个类内部(多线程)
    匿名类 定义在一个方法中

    e.static
    static方法
    定义在类中的一个方法,
    该方法不对该类的对象进行操作
    其操作仅仅和输入相关(参数)
    定义在该类中完全是出于逻辑上的考虑
    static成员
    static final 常量在编译的时候会被替换为常量值
    定义该常量的类甚至都不会被加载

    f.final
    类前很少写final,动态代理
    方法前写final,防止方法被无意中重写

    2) 类和类之间的关系(关联、依赖、继承)
    关联
    public class A {
    private B b;
    public A() {
    b...
    }
    }
    public class B {

    }
    依赖
    public class A {
    public void f(B b) {}
    public B g() {}
    }
    public class B {

    }

    关联优于继承(如果仅仅是重用,不需要继承)
    依赖优于关联(如果仅仅是一个方法要用到,不 需要关联)

    3) 多态(抽象类、接口)

    Pet P = new Cat();
    Growsable g = new Cat();

    *4) 常见的设计模式

    1. JavaSE核心
      1) String、StringBuilder、(Commons)
      String类
      String str1 = "abc";
      String str2 = "abc";
      int length()
      String name = ....;
      boolean b = "whatisjava".equals(name)
      .equalsIgnoreCase
      int indexOf(String str)
      int indexOf(String str, int fromIndex)

    String substring(int start, int end)
    String[] split(String regx)
    String trim()

    StringBuilder
    StringBuilder append(...)
    StringBuilder delete(int start, int end)
    StringBuilder insert(..., int fromIndex

    2) Date、Calendar、SimpleDateFormat
    java.util.Date
    Date d = new Date();
    long getTime();
    void setTime(long m);

    java.util.Calendar

    Calendar c = Calendar.getInstance();

    c.set(Calendar.YEAR, 2013);
    c.set(Calendar.MONTH, 9)
    c.set(Calendar.DAY, 1)
    System.out.println
    (c.get(Calendar.DAY_OF_WEEK));

    SimpleDateFormat
    SimpleDateFormat sdf =
    new SimpleDateFormat("yyyy-MM-dd");
    String str = sdf.format(new Date());
    Date date = sdf.parse(str);

    3) 集合框架、ArrayList、HashMap

    如何选取List和Map:

    List 线性表 排序,按下标索引
    Map 查找表 查找
    Map<String,Student> map = ...
    map.put(stu.getName(),stu);
    map.get("zhangsan");

    class Student {
    private String name;
    private String score;
    ... ... ...
    }

    常见的实现类:
    ArrayList, LinkedList
    HashMap, TreeMap

    常用的方法:
    List<E>
    追加:add(E e);
    插入:add(int index, E e);
    删除:remove(E e); (和equals)
    remove(int index);
    获取:E get(int index);
    更改:E set(int index, E e)
    set(i, list.set(j, list.get(i)));
    是否包含:contains(Object o) (和equals)

    清空:clear();
    大小:size();

    addAll,removeAll

    Map<K,V>
    put(K k, V v);
    V get(K k)
    boolean containsKey(K k)

    遍历:
    Map<String, Object> map =
    new HashMap<String, Object>();
    Set<String> keys = map.keySet();
    for (String key : keys) {
    System.out.println(key ":" map.get(key));
    }

    4) FIS/FOS、BIS/BOS、ISR/OSW、BR/PW、OIS/OOS

    文件流(节点)连接文件
    FileInputStream
    FileOutputStream

    缓存流(处理)
    通过内部的缓冲区提高读写效率
    BufferedInputStream
    BufferedOutputStream

    字符转化流(处理)
    把字节数据根据特定的编码转化成字符
    InputStreamReader
    OutputStreamWriter

    字符缓存流(处理)
    readLine可以一次读取一行字符
    BufferedReader

    字符打印流(处理)
    print,println
    可以把各种数据转化为字符串形式输出
    PrintWriter

    对象流(处理)
    writeObject
    readObject
    对象的序列化和反序列化
    ObjectInputStream
    ObjectOutputStream

    拷贝文件
    FIS fis = new FIS("src");
    FOS fos = new FOS("dest");
    BIS bis = new BIS(fis);
    BOS bos = new BOS(fos);

    int b = -1;
    while((b=bis.read())!=-1) {
    bos.writer(b);
    }

    bis.close();
    // bos.flush();
    bos.close();

    读写文本文件

    FOS fos = new FOS("src.txt");
    OSW osw = new OSW(fos, "utf-8");
    osw.write("你好");
    osw.close();

    FIS fis = new FIS("dest.txt");
    ISR isr = new ISR(fis,"utf-8");
    char c = (char)isr.read();
    isr.close();

    读文本文件,一次读一行
    FIS fis = new FIS("dest.txt");
    ISR isr = new ISR(fis,"utf-8");
    BR br = new BR(isr);
    String line = br.readLine();
    br.close();

    将各种数据信息的字符串表示输出到文件中
    FOS fos = new FOS("log.txt");
    OSW osw = new OSW(fos);
    PW pw = new PW(osw);
    pw.println(emp);
    pw.println(250);
    pw.println("hello");
    ... ... ...

    从控制台输入一行数据
    BR br = new BR(new ISR(System.in));
    String line = br.readLine();

    从Socket中输入数据(文本)
    InputStream is = socket.getInputStream();
    ISR isr = new ISR(is);
    BR br = new BR(isr);

    向Socket中输出数据(文本)
    OutputStream os = socket.getOutputStream();
    OSW osw = new OSW(os);
    PW pw = new PW(osw);

    5) 多线程和网络

    a. 线程和进程的区别
    进程操作系统的多个任务(不同的内存)
    线程是在一个进程中的多个任务 (同一内存)
    b. Java语言中创建线程的方法
    public class MyThread extends Thread {
    public void run() {...}
    }
    MyThread t = new MyThread();
    t.start();

    public class Some implements Runnable {
    public void run() {...}
    }
    Thread t = new Thread(new Some());
    t.start();

    public class BO {
    private class MyThread extends Thread {
    public void run() {...}
    }
    }

    c. 线程的状态和相互转换

    d. 线程同步
    多个线程访问同一个可变的对象
    访问的方法加锁(效率下降)
    synchronized

    public void f() {

    ... ... ...

    synchronized(obj) {

    XXX XXX XXX
    }

    ... ... ...

    }

    e.线程安全API
    StringBuffer -- StringBuilder
    Vector * -- ArrayList
    Hashtable * -- HashMap
    Collections的方法对List和Map的同步

     

     

     

    1. 表单提交时GET和POST的区别?
      1) GET和POST是两种不同的协议
      POST在协议中可以传输数据
      GET只能在请求地址中通过请求参数传输数据
      (限于文本)
      2) POST提交的数据量受服务器的限制
      GET提交的数据量受浏览器地址栏长度的限制
      3) 都不安全,如果要保证安全使用HTTPS协议

    2. 描述Servlet的生命周期
      1) Servlet重要的生命周期方法(容器调用的方法):
      init, service, destroy
      默认情况下第一次访问Servlet时实例化对象
      (也可以配置为启动即加载)
      实例化后调用init
      每次收到请求调用service
      实例被销毁前调destroy
      2) 单实例,多线程

    3. 列举HttpServletRequest的常用方法
      1) 获取请求参数, getParameter(String name);
      getParameterMap();
      2) 获得请求的地址,getRequestURI();
      3) 获取请求的应用名,getContextPath();
      4) 获取请求的头信息,getHeader(String name);
      5) 根据请求信息中的SessionID获得Session,
      getSession();
      6) 作为一个容器,存取数据,
      setAttribute(String name, Object value);
      getAttribute(String name);
      7) 设置解码的字符集(默认为ISO8859-1)
      setCharacterEncoding(String charset)
      8) 获取请求信息中提交的Cookie
      getCookies();
      9) 实现转发,
      request.getRequestDispatcher("...")
      .forward(request, response)

    1. 列举HttpServletResponse的常用方法
      1) 获得响应内容的输出流
      getWriter() 文本信息
      getOutputStream() 字节信息
      2) 设置响应头中ContentType setContentType(String)
      3) 通过响应头传递Cookie addCookie
      4) 生成一个重定向响应 sendRedirect
    1. 谈一谈使用Session的经验
      1) 不能放安全级别要求高的信息 (SessionID容易获得)
      2) 不能放大量的信息(服务器的性能问题)
      3) 不能放持久性的信息
      能放的很有限(一般不是业务信息,
      而是为了操作方便的信息):
      登录后的用户ID,服务器端生成的验证码,....

    2. 转发和重定向的区别?
      1) 转发请求一个组件,该组件在服务器端
      把请求转发给另外一个组件
      由另外一个组件实现相应。(一个请求)
      2) 重定向请求一个组件,该组件生成一个重定向相应
      浏览器收到此响应后访问其他的组件。(多个请求)
      3) 一个事情两个组件协同完成,用转发(JSP Model2)
      两个组件之间一般需要传递数据用request
      一个事情完成,自动的开始另外一个事情,用重定向

    3. 相对地址和绝对地址的区别
      1)
      链接,表单提交 b.jsp /webapp/jsp/b.jsp
      重定向 b.jsp /webapp/jsp/b.jsp
      转发 b.jsp /jsp/b.jsp
      2) 相对地址在转发时容易出错!

    4. Java WEB开发中的编码问题
      1) 页面显示
      Servlet
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      JSP
      <%@page pageEncoding="utf-8"%>
      <%@page contentType="text/html; charset=utf-8"%>

    2) 提交数据的问题
    Servlet
    request.setCharacterEncoding("utf-8");
    request.getParameter("...");
    JSP 这样写是否有效???一般用Filter
    <%
    request.setCharacterEncoding("utf-8");
    request.getParameter("...");
    %>

     

    Java,corejava Java 语言核心 1. 面向对象 1) 封装(成员、方法定义、构造方法、访问控制、 内部类、static、final) a.成员和方法的定义,内存...

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:静态的分子)

    关键词: