疯狂JAVA讲义---第九章(上):与运行环境交互

本文详细介绍了Java中用户与机器交互的基本方法,包括通过命令行参数传递、使用Scanner类从键盘或文件获取输入,以及利用BufferedReader进行文本输入处理。此外,还探讨了System和Runtime类的应用,并对比了StringBuilder与StringBuffer的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章主要介绍下用户与机器交互的常用方法和一些常用类,还有些正则表达式和国际化的介绍。

首先介绍下运行java程序的参数,eg

  1. public class TestArgs
  2. {
  3.     public static void main(String[] args) 
  4.     {
  5.         System.out.println(args.length);
  6.         for (String arg : args)
  7.         {
  8.             System.out.println(arg);
  9.         }
  10.     }
  11. }

在命令行运行上面程序 java TestArgs aaa "bbb ccc"。

大家运行了这个程序就知道怎么用了,我就不多说了,主要记住用双引号括起来的表示一个参数

下面讲Scanner获取键盘输入,

  1. public class TestScannerKeyBoard
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         //System.in代表标准输入,就是键盘输入
  6.         Scanner sc = new Scanner(System.in);
  7.         //增加下面一行将只把回车作为分隔符
  8.         //sc.useDelimiter("/n"); 
  9.         //判断是否还有下一个输入项
  10.         while(sc.hasNext())
  11.         {
  12.             //输出输入项
  13.             System.out.println("键盘输入的内容是:" + sc.next());
  14.         }
  15.     }
  16. }

我还讲个Scanner获取文件输入

  1. public class TestScannerFile
  2. {
  3.     public static void main(String[] args) throws Exception
  4.     {
  5.         //将一个File对象作为Scanner的构造器参数,则Scanner读取文件内容
  6.         Scanner sc = new Scanner(new File("a.txt"));
  7.         System.out.println("a.txt文件内容如下:");
  8.         //判断是否还有下一行
  9.         while(sc.hasNextLine())
  10.         {
  11.             //输出文件中的一行
  12.             System.out.println(sc.nextLine());
  13.         }
  14.     }
  15. }

Scanner是1.5新出来的类,以前都是使用BufferedReader,eg

  1. public class TestBufferedReader
  2. {
  3.     public static void main(String[] args) throws Exception
  4.     {
  5.         //以System.in节点流,创建一个BufferedReader对象
  6.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7.         String buffer = null;
  8.         //逐行读取键盘输入
  9.         while ((buffer = br.readLine()) != null)
  10.         {
  11.             System.out.println("用户键盘输入是:" + buffer);
  12.         }
  13.     }
  14. }

InputStreamBuffer用来将输入的数据包装成字符流。

System和Runtime类也是java重要的类,先举个System的例子,eg

  1. public class TestSystem
  2. {
  3.     public static void main(String[] args) throws Exception
  4.     {
  5.         //获取系统所有的环境变量
  6.         Map<String,String> env = System.getenv();
  7.         for (String name : env.keySet())
  8.         {
  9.             System.out.println(name + " ------> " + env.get(name));
  10.         }
  11.         //获取指定环境变量的值
  12.         System.out.println(System.getenv("JAVA_HOME"));
  13.         //获取所有的系统属性
  14.         Properties props = System.getProperties();
  15.         //将所有系统属性保存到props.txt文件中
  16.         props.store(new FileOutputStream("props.txt") , "System Properties");
  17.         //输出特定的系统属性
  18.         System.out.println(System.getProperty("os.name"));
  19.     }
  20. }

属性过多我就不一一介绍了。

System类提供获得JVM运行时的信息,用的最多的还是用它来调用操作系统的命令。eg

  1. public class TestExec
  2. {
  3.     public static void main(String[] args)throws Exception
  4.     {
  5.         Runtime rt = Runtime.getRuntime();
  6.         rt.exec("notepad.exe");
  7.     }
  8. }

StringBuilder是1.5后新出来的类他与StringBuffer的区别就是StringBuilder效率高但线程不安全,eg

  1. public class TestStringBuilder
  2. {
  3.     public static void main(String[] args) 
  4.     {
  5.         StringBuilder sb = new StringBuilder();
  6.         //追加字符串
  7.         sb.append("java");//sb = "java"
  8.         //插入
  9.         sb.insert(0 , "hello "); //sb="hello java"
  10.         //替换
  11.         sb.replace(56","); //sb="hello java"
  12.         //删除
  13.         sb.delete(56);//sb="hellojava" 
  14.         System.out.println(sb);
  15.         //反转
  16.         sb.reverse();//sb="avajolleh"
  17.         System.out.println(sb);
  18.         System.out.println(sb.length()); //输出9 
  19.         System.out.println(sb.capacity());  //输出16
  20.         //改变StringBuilder的长度,将只保留前面部分
  21.         sb.setLength(5); //sb="avajo"
  22.         System.out.println(sb);
  23.     }
  24. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值