zoukankan      html  css  js  c++  java
  • 疯狂java笔记(五)

    一、程序与用户交互(Java的入口方法-main方法):

     运行Java程序时,都必须提供一个main方法入口:public static void main(String[] args){}

      public:因为main方法里边可能包含同一包内或其他类的方法,为了保证能够正常执行该方法所以只能用该方法;

      static:调用主方法的时候不会先创建该主类的对象,而是直接通过该类来调用主方法的,所以使用static修饰;

      String[]:谁调用方法谁就为这个形参赋值,默认长度为0的数组

        运行时:java 主类类名 第一个数组元素 第二个数组元素 ......

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

     上面程序编译后,直接运行输出为0,这说明args数组默认长度是为0的。

     而如果改用命令行java TestArgs 11 aa cc / java TestArgs "11 aa"来运行改程序将输出:

      

     运行Java程序时在类名后紧跟一个或多个字符串,多个字符串之间用空格隔开,如果一个参数本身包含空格,则这个参数应该用双引号括起来.

    二、使用Scanner获取键盘输入:

     系统里,System.in代表键盘 -- 直接用System.in很麻烦,通常都会进行包装:

     1、传统会包装成BufferedReader - 这个更安全,而且有完善的异常机制,BufferedReader是Java IO流中的一个字符、包装流它必须简历在另一个字符流基础上,标准输入System.in是字节流,程序需要使用InputStreamReader将其包装成字符流:

     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

     2、JDK1.5增加一个Scanner - 更简单:

      ①、hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,则可以省略Xxx。

      ②、nextXxx():获取下一个输入项。Xxx的含义与前一个方法中的Xxx相同。

      ③、Scanner提供两个简单的方法来进行读取:boolean hasNextLine():返回输入源中是否还有下一行;String nextLine():返回输入源中下一行的字符串.  

     1 import java.util.*;
     2 
     3 class TestScanner{
     4     public static void main(String[] args){
     5         Scanner sc = new Scanner(System.in);
     6         System.out.println("请输入: ");
     7         
     8         /* 判断是否有下一个字符串并输出整行内容,整行内容无隔断
     9         while(sc.hasNext()){
    10             System.out.println("下一行内容是: " + sc.nextLine());
    11         }
    12         
    13 
    14            判断是否有下一个字符串并输出下一个值,每个值以空格隔断
    15         while(sc.hasNext()){
    16             System.out.println("下一个内容是: " + sc.next());
    17         }
    18         */
    19 
    20         //输出下一个整数,遇到非整数时退出当前程序,一行多个字符时以空格 隔断
    21         while(sc.hasNextInt()){
    22             System.out.println("下一整数是:" + sc.nextInt());
    23         }
    24     }
    25 }

    三、System类:

     通俗的说:如果你要获取操作平台相关/JVM所在系统的数据,用System类.

     in - 标准输入,通常标准输入就是键盘

     out - 标准输出 通常就是屏幕

     常用方法:

      exit(in status):退出虚拟机,无论你是否还有什么方法、线程都会结束

      getenv() - 获取所有的环境变量

      getenv(String name) - 获取指定环境变量的值

      static Properties getProperties() - 获取所有系统属性 

      static String getProperty(String key) - 获取指定的系统属性

     1 import java.util.*;
     2 
     3 class TestSystem{
     4     public static void main(String[] args){
     5         //System.getenv(String name) 获取指定环境变量的值
     6         System.out.println(System.getenv("Java_home"));
     7         //System.getenv() 获取系统所有的环境变量
     8         //System.out.println(System.getenv());
     9 
    10         //getProperty(String key)  获取指定的系统属性
    11         System.out.println(System.getProperty("os.name"));
    12 
    13         //获取所有系统属性
    14         //System.out.println(System.getProperties());
    15     }
    16 }

    四、Runtime类:

     通俗的说:如果你要获取JVM相关的数据,就需要用Runtime类

     Runtime类是典型的"单例类",它的构造器被隐藏了,因此只能通过getRuntime()方法来获取实例

      rt.maxMemory() - 

      rt.totalMemory() -

      rt.freeMomory() -

      还可以运行系统已有的程序:

      rt.exec("F:/application/sina_live.exe");

     1 public class RuntimeTest{
     2     public static void main(String[] args) throws Exception{
     3         //单例类需通过方法来创建实例
     4         Runtime rt = Runtime.getRuntime();
     5         //方法availableProcessors()获取处理器个数并返回
     6         System.out.println("有多少个处理器:" + rt.availableProcessors());
     7         
     8         /* 消耗内存
     9         int[] arr = new int[20000];
    10         for(int i = 0;i < arr.length;i++){
    11             arr[i] = i * 2;
    12         }
    13         */
    14 
    15         //获取JRE的最大内存
    16         System.out.println("最大的内存:" + rt.maxMemory()); 
    17         //获取JVM总内存 java -Xms512m -Xmx1024m
    18         System.out.println("最大的内存:" + rt.totalMemory()); 
    19 
    20         //运行系统的命令
    21         //如果没有用绝对路径的话,会到Path环境变量指定的系统路径中搜索
    22         rt.exec("F:/application/sina_live.exe");
    23     }
    24 }

    五、Date和Calendar类:

     1、Date类:代表一个日期、时间;

      还没有过时的构造器:

       new Date(long) - long代表从某个时间开始(GMT1970-1-1 00:00:00)到现在过了多少毫秒;

       new Date() 

       Date ← → long(GMT1970-1-1 00:00:00到现在可相互转换)

     2、Calendar类 - 代表一个日期、时间(代替Date)

      调用getInstance()方法来获取实例,也可以转换为Date,但Date不能转换为Calendar;

      set(年,月,日,时,分,秒),如:set(Calendar.MONTH,9)  直接设置某个字段的值

      add(int field,int amount)与roll(int field,int amount) 对某个字段进行添加

       add方法有如下规则:当被修改的字段超过它允许的范围时,它会发生“进位”;当roll不会发生“进位”

     1 import java.util.*;
     2 
     3 public class DateTest{
     4     public static void main(String[] args){
     5         //创建一个当前时间的Date
     6         Date date = new Date();
     7         System.out.println(date);
     8         //过时命令,编译有提示,但可运行。在Java中日月是从0开始的
     9         //System.out.println(date.getDay());
    10         System.out.println("获取从1970-1-1到现在过了多少毫秒" + System.currentTimeMillis());
    11 
    12         //把毫秒数转成日期
    13         System.out.println(new Date(System.currentTimeMillis() - 3 * 20 * 60 * 60 * 1000));
    14 
    15         //如果要计算两个Date之间相差多少天(小时)
    16         Date d1 = new Date();
    17         Date d2 = new Date(114,1,19,22,41,30);
    18 
    19         System.out.println("两date之间相差的小时:" + (d1.getTime() - d2.getTime()) / 3600 /1000);
    20     }
    21 }
     1 import java.util.*;
     2 
     3 public class CalendarTest{
     4     public static void main(String[] args){
     5         Calendar cal = Calendar.getInstance();
     6         //设置为2015-4-12 22:45:30
     7         cal.set(2015,4,12,22,45,30);
     8         System.out.println(cal);
     9         System.out.println(cal.getTime());
    10         
    11         //设置为10月
    12         cal.set(Calendar.MONTH,9);
    13         System.out.println(cal.getTime());
    14 
    15         //add与roll的区别
    16         cal.add(Calendar.DATE,20);
    17         System.out.println(cal.getTime());
    18 
    19         cal.roll(Calendar.DATE,30);
    20         System.out.println(cal.getTime());
    21     }
    22 }
  • 相关阅读:
    iOS AppStore个人开发者账号申请
    一个工程多个Target
    React Native环境搭建(iOS、Mac)
    vuex的简单使用
    在vue中使用sass
    一个javascript继承和使用的例子
    在vue中使用Element-UI
    CSS3 Flex布局和Grid布局
    (...)ES6三点扩展运算符
    h5 video切换到横屏全屏
  • 原文地址:https://www.cnblogs.com/dtest/p/4182513.html
Copyright © 2011-2022 走看看