zoukankan      html  css  js  c++  java
  • 第七章--Java基础类库--与用户的互动

    1.命令行编译和运行java程序
    在notepad++中集成java编译运行命令 参考博客:http://blog.sina.com.cn/s/blog_84405af50101q7fn.html
    2与用户互动
    2.1 运行Java程序的参数
    main函数的运行参数是由Jvm在调用该时写进去的,通常不写arg是长度为0的数组
    代码:
    public class HellowWord{
    public static void main(String[] args)
    {
    System.out.println(args.length);
    for(String arg : args)
    {
    System.out.println(arg);
    }
    }
    }

    运行结果:
    C:javacode>java HellowWord sdf dsf fdfsdf
    3
    sdf
    dsf
    fdfsdf
    3.Scanner获取键盘输入:方便的获得用户输入,Scanner是基于正则表达式的文本扫描器,可以从文本,输入流字符串中解析出基本类型值和字符串值
    主要方法:hasNext***();
    next**** **代表某种类型
    Scanner类所在的包 java.util ----因为我是用notepadd写的代码,不会自动导包
    默认情况使用空白分割输入项,有一次读取一行的方法(hasNextLine() nextLine())
    usDelimiter(String pattern)参数为正则表达式
    *******scanner还能读取文件的输入
    file类所在的包名 import java.io.File;(使用时还要处理FileNotFoundException异常)
    import java.util.*;
    import java.io.*;

    public class ScannerKey{
    public static void main(String[] args) throws FileNotFoundException
    {
    Scanner sc = new Scanner(System.in);
    /*while(sc.hasNext())
    {
    System.out.println("读取输入"+sc.next());
    }*/
    Scanner scFile = new Scanner(new File("HellowWord.java"));
    while(scFile.hasNextLine())
    {
    System.out.println(scFile.nextLine());
    }
    }
    }

    4.系统相关类
    4.1 System类 代表当前程序运行平台,不能创建对象,使用提供的类变量和方法来完成需要的功能

    System的包 import java.lang.System;
    System类的方法:getenv()--获取系统的环境变量
    getProperties(),getProperty("")--获取当前系统的属性
    gc()-- 通知系统进行垃圾回收
    runFinalization()--通知系统进行资源清理
    long currentTimeMillis() 返回当前时间与1970 1月1日的差
    long nanoTime() 纳秒
    in out err 标准输入(键盘) 标准输出(屏幕) 错误输出流 还有*****setIn() setOut() setErr()改变系统的标注输入输出,,,
    identityHashCode(Object c) 返回指定对象的精确hashCode值,可以唯一标识一个对象(不同对象的值绝对不同)

    import java.lang.System;
    import java.lang.*;
    import java.util.*;
    import java.io.*;

    public class SystemTest{
    public static void main(String[] args) throws IOException
    {
    Map<String ,String> env = System.getenv();//get all
    for(String name : env.keySet())
    {
    System.out.println(name + "--->" + env.get(name));
    }


    System.out.println("JAVA_HOME:-----"+System.getenv("JAVA_HOME"));

    Properties props = System.getProperties();

    props.store(new FileOutputStream("props.txt"),"System Properties");

    System.out.println(System.getProperty("os.name"));

    }
    }

    5.Runtime类---java运时的环境(每个程序都有与之对应的Runtime实列)
    5.1 无法创建对象,只能通过getRuntime()获得
    5.2 提供了与System类似的 gc() runFinalization()回收资源,提供load(String filename) loadLibrary(String libname)加载文件和链接库
    availableProcessor()获得JVM处理器数量
    freeMemory() 空闲内存数
    totalMemory() 总内存数
    maxMemory() 最大可用内存数

    单独启动一个进程执行操作系统的命令:exec("exename")

    上面都是系统相关类
    下面是常用类:

    1.Object类是所有类的父类,java对象可以调用Object类的方法
    boolean equals(Object o):判断指定对象与该对象是否相等,标准是两个对象是同一个对象,无太大使用价值
    protected void finalize():无引用到该对象的变量时1,调用此方法回收该对象的资源
    Class<?> getClass() 返回该对象的运行时类
    int hashCode() 返回根据地址计算的hash值
    String toString()默认返回:运行时类名@十六进制hash值
    wait()线程操作方法

    protected clone();***********************浅克隆--只克隆了成员变量,但没clone引用型变量引用的值
    自定义类实现"克隆”:
    实现Cloneable接口
    自定义clone方法(方法内调用super.clone())

    2.java7新增的Objects类:主要是空指针安全,对象为空时不会出现空指针异常

    3.String StringBuffer StringBulider
    String是不可变类,一旦被创建就不会改变,StringBuffer代表一个字符序列可变的字符串,被创建后可以根据提供的方法对字符串进行更改完成后可调用toString()变成String
    ,StringBuilder性能略高
    4.Math类:提供大量的数学操作
    5.ThreadLocalRandom(保证系统具有更好的线程安全性,,通过current()来获取对象)和Random(种子相同时,产生相同的数据,伪随机数,推荐当前时间为种子)
    6.BigDecimal解决float和double精度丢失的问题
    7.日期类Data和Calendar
    -------------------------静态导入问题(可以简化代码,减少代码量))?????calendar
    import java.util.Calendar.*; Calender.YEAR => YEAR
    Calender 提供了add(如果超出范围会产生进位) 和 roll(不会产生进位)两个方法来操作时间日期

    Calender提供容错性:setLenient(false);可以关闭容错,但程序运行会抛异常(set(Month,13))

    set()方法延迟修改参数:内部日历字段会立即被更改,但Calender代表的字段不会被立即修改,知道下次调用get(),getTime(),getTimeInMillis(),add(),roll()
    时才重新计算日历时间********优点,多次调用set()不会触发多次计算
    ************************************月份的起始是从0开始的********************************************
    p261页书上举了一个特殊的例子来标识这种影响

    import java.util.*;
    import static java.util.Calendar.*;

    public class CalendarTest{
    public static void main(String[] args)
    {
    Calendar c = Calendar.getInstance();
    System.out.println(c.get(Calendar.YEAR));
    System.out.println(c.get(Calendar.MONTH));

    c.set(2018,10,23,12,32,23);
    System.out.println(c.getTime());
    c.add(YEAR,-1);
    System.out.println(c.getTime());
    c.roll(MONTH,-11);
    System.out.println(c.getTime());
    }
    }
    8.java新增的日期包和时间包 java.time


    9.正则表达式 Pattern和Matcher专门用于提供正则表达式支持
    9.1创建正则表达式,
    x 代表任何合法字符
    mnn 8进制数
    xhh 十六进制字符0xhh
    uhhh 十六进制 0xhhh
    代表制表符
    换行符
    回车符
    f 换页符

    。。。。。。。

    特殊字符。。。。。

    预定义字符(通配符))

    方括号表达式(包含运算符^ &&)

    支持圆括号表达式

    ****************** java.util.regex (包)**************************

    正则表达式字符串要先编译成Pattern对象:Pattern p = Pattern.compile("正则表达式字符串");
    利用p创建Matcher对象 Matcher m = p.matcher("");
    执行匹配所涉及的状态保存在Matcher对象中

    *****************多个Matcher对象可以共享一个pattern




  • 相关阅读:
    ffplay(2.0.1)中的音视频同步
    (转)ffplay的音视频同步分析之视频同步到音频
    (转) 从ffmpeg中提取出YUV数据
    关于解决用tutorial7教程中的代码打造一款自己的播放器中的声音噪音问题
    基于<最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)>的一些个人总结
    (转)SDL2.0在mfc窗口中显示yuv的一种方法
    (转)SDL1.2到2.0的迁移指南
    APM (应用性能管理)
    在telnet下操作memcache详解(操作命令详解)
    MYSQL主从数据库搭建
  • 原文地址:https://www.cnblogs.com/xiaochenztx/p/8515266.html
Copyright © 2011-2022 走看看