美文网首页
31.Java语言程序设计

31.Java语言程序设计

作者: 为梦想战斗 | 来源:发表于2018-08-22 16:01 被阅读0次

    一、计算机、程序和Java概述

    二、基本程序设计
    Scanner input = new Scanner(System.in);
    double radius = input.nextDouble();

    三、选择
    Math.random()产生一个0.0到1.0之间的随机double值。

    四、数学函数、字符和字符串
    int intValue = Integer.parseInt(intString);
    double double = Double.parseDouble(doubleString);
    String s = number + "";

    五、循环
    java SentinelValue <input.txt> output.txt

    六、方法

    七、一维数组
    for(elementType element:arrayRefVar) {}
    具有同样类型的可变长度的参数可以传递给方法,并将作为数组对待
    Arrays.sort();

    八、多维数组

    九、对象和类
    Date和Random类的使用

    十、面向对象思想
    根据上下文环境,基本数据类型可以使用包装类自动转换成一个数据,反过来的自动转换也可以
    BigInteger类和BigDecimal类可以用于表示任意大小和精度的整数或者十进制数
    正则表示式匹配:"Java is fun".matches("Java.*"); "440-02-4534".matches("\d{3}-\d{2}-\d{4}"); String s = "a+b#c".replaceAll("[+#]","NNN");
    toArray和valueOf
    StringBuildt StringBuffer,注意StringBuffer并发访问时要同步

    十一、继承和多态
    UML继承关系用空的三角形表示
    多态意味着父类型的变量可以引用子类型的对象
    动态绑定:对象调用哪个方法由对象 的实际类型决定。声明类型没什么卵用。
    List和数组转换:asList()、toArray()
    List方法:sort()、max()、min()、shuffle()
    被final修饰的类和方法都不能被扩展和重写

    十二、异常处理和文本I/O
    File file = new File("images/us.gif"); //不要使用绝对路径,使用相对路径

    PrintWriter output = new PrintWriter(file);
    output.print("John T Smith ");
    output.close(); //可以使用try-with-resourse自动关闭资源

    Scanner input = new Scanner(new File(file name));
    String Name = input.next();
    input.close();

    Scanner input = new Scanner(url.openStream()); //从web读取数据

    十三、抽象类和接口
    GregorianCalendar是抽象类Calendar的一个具体子类
    Comparable、Cloneable

    十四、JavaFX基础
    JavaFX取代了Swing和AWT,用于开发富Internet应用
    Button、Scene、primaryStage、StackPane

    十五、事件驱动编程和动画

    十六、JavaFX UI 组件和多媒体

    十七、二进制 I/O
    可以使用文本编辑器(比如VI)进行处理的文件称为文本文件,其他所有文件称为二进制文件。
    文本文件的读写用Scanner和PrintWriter。
    二进制I/O不涉及编码和解码,因此比文件I/O更加高效
    FileInputStream/FileOutputStream全部方法继承超类,主要是read()/write()方法。

    FileOutputStream output = new FileOutputStream("temp.dat");
    output.write("haha");
    FileInputStream input = new FileInputStream("temp.dat");
    char value = input.read();
    

    DataInputStream/DataOutputStream从数据流读写字节,并且与基本类型值或字符串互相转换。writeUTF/writeDouble、readUTF/readDouble/readLine

    BufferedInputStream/BufferedOutputStream全部方法继承超类。
    ObjectInputStream/ObjectOutputStream用于读写可序列化的对象。
    RandomAccessFile从文件的任何位置进行数据的读写。

    十八、递归
    递归更多的是思想上的理解,比如打印n条消息、递归二分查找、汉诺塔问题

    public static void nPrintln(String message,int times) {
      if(times >= 1) {
        System.out.println(message);
        nPrintln(message,times-1);
      }
    }
    
    public static int resursiveBS(int[] list,int key,int low,int high) {
      if(low > high) return -low-1;
      int mid = (low+high)/2;
      if(key < list[mid])  return resursiveBS(list,key,low,mid-1);
      else if(key == list[mid])  return mid;
      else  return rescursiveBS(list,key,mid+1,high);
    }
    
    public static void moveSisks(int n,char fromTower,char toTower,char auxTower) {
      if(n==1)  System.out.println("Move disk "+n+" from"+fromTower+"to"+toTower);
      else{
        moveDisks(n-1,fromTower,auxTower,toTower);
        System.out.println("Move disk"+n+"from"+fromTower+"to"+toTower);
        System.out.println("Move disk "+n+" from"+fromTower+"to"+toTower);
        moveDisks(n-1,auxTower,toTower,fromTower);
    }
    

    递归会造成相当大的系统开销,抛出stackoverflow,能不用就不用

    十九、泛型
    使用泛型的动机是在编译时检测出错误。
    声明泛型方法时,泛型类型<E>要放在关键字static之后。
    没有指定具体类型的泛型类和泛型接口被称为原始类型,用于和早期的Java版本向后兼容。原始类型是不安全的。
    可以使用非受限通配、受限通配或者下限通配来对一个泛型类型指定范围。
    泛型存在于编译时,一量编译器确认泛型类型是安全使用的,就会将它转换为原始类型。

    二十、线性表、桡、队列和优先队列
    Iterator iterator = collection.iterator();
    LinkList/Vector
    优先队列中,最高优先级的先被移出

    二十一、集合和映射表
    无重复元素排序时,集合比线性表更加高效。线性表通过索引来访问元素非常有用。
    HashSet以一个不可预知的顺序存储元素,LinkedHashSet以元素被插入的顺序存储元素,TreeSet存储已排好序的元素

    二十二、开发高效算法
    动态编程通过解决子问题,然后将子问题的结果结合来获得整个问题的解的过程。

    二十三、排序
    插入、冒泡、归并、快速、堆、桶、基数排序、外部排序

    二十四、实现线性表、栈、队列和优先队列

    二十五、二叉查找树

    二十六、AVL树

    二十七、散列

    二十八、图及其应用

    二十九、加权图及其应用

    三十、多线程和并行程序设计
    一个任务类必须实现Runnable接口,任务必须从线程运行。
    Thread类包含为任务而创建的线程的构造方法,以及控制线程的方法。
    yield()为其他线程临时让出CPU时间,sleep(long mills)可以将该线程设置为休眠以确保其他线程的执行,休眠时间为指定的毫秒数。join()使一个线程等待另一个线程的结束。setProority()设置线程优先级。
    Executor接口执行线程池中的任务,ExecutorService接口来管理和控制任务。newFixedThreadPool()和newCachedThreadPool()的区别。

    三十一、网络

    三十二、Java数据库程序设计

    三十三、JavaServer Faces

    相关文章

      网友评论

          本文标题:31.Java语言程序设计

          本文链接:https://www.haomeiwen.com/subject/jriheftx.html