Java基础数组-main方法的数组参数

简介: Java基础数组-main方法的数组参数

1、main方法上面的“String[] args”有什么用?


分析以下:谁负责调用main方法==(JVM)==

JVM调用main方法的时候,会自动传一个String数组过来。


示例代码:


public class ArrayTest04 {
    // 这个方法程序员负责写出来,JVM负责调用。JVM调用的时候一定会传一个String数组过来。
    public static void main(String[] args) {
        //JVM默认传递过来的这个数组对象的长度?默认0
        //通过测试得出:args不是null
        System.out.println("JVM给传递过来的String数组参数,它这个数组的长度是?" + args.length);
        //这个数组什么时候里面会有值呢?
        //其实这个数组是留给用户的,用户可以在控制台上输入参数,这个参数自动会被转换为“String[] args”
        //例如这样运行程序:java ArrayTest04 abc syx kov
        //那么这时候JVM会自动将“abc syx kov” 通过空格的方式进行分离,分离完成之后,自动放到“String[] args”数组当中
        //所以main方法上面的String[] args数组主要是用来接受用户输入参数的
        //把abc syx kov转换成字符串数组:{“abc” “syx” “kov”}
        //遍历数组
        for(int i = 0;i< args.length;i++){
            System.out.println(args[i]);
        }
        //以下这行代码表示的含义:数组对象创建了,但是数组中没有任何数据
        String[] strs = new String[0];
        printArray(strs);
        String[] s = {}; //静态初始化数组,里面没东西
        printArray(s);
    }
    public static void printArray(String[] args){
    }
}


设置参数:


0a2653c851af460fa595bd959398a8f1.png


运行结果:


2d65d23f6d4748949b924e4057485923.png


2、模拟一个系统,假设这个系统要使用,必须输入用户名和密码。


示例代码:


public class ArrayTest05 {
    // 用户名和密码输入到String[] args数组当中。
    public static void main(String[] args) {
        if(args.length != 2){
            System.out.println("使用该系统时请输入程序参数,参数中包括用户名和密码信息,例如:zhangsan 123");
        }
        // 程序执行到此处说明用户确实提供了用户名和密码。
        // 接下来你应该判断用户名和密码是否正确。
        // 取出用户名
        String username = args[0];
        //取出密码
        String password = args[1];
        //假设用户名是admin,密码是123的时候表示登录成功。其它一律失败
        //判断两个字符串是否相等,需要使用equals方法
        //if(username.equals("admin") && password.equals("123")){
        //这样编写是不是可以避免空指针异常
        //采用以下代码风格,即使username和password都是null,也不会出现空指针异常
        if("admin".equals(username) && "123".equals(password)){
            System.out.println("密码正确,欢迎登陆");
            System.out.println("你可以继续使用该系统...");
        }else{
            System.out.println("登录失败!你输入的密码有误!");
        }
    }


设置参数:


6de278e6d6694ce5bb08e7e842b7e74b.png


运行结果:


12c3b7f3f8814309a195c64f051d4445.png

相关文章
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
26天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
19天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
44 2
|
21天前
|
Java 网络安全 Maven
Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
【10月更文挑战第26天】Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
37 2
|
27天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
17 2
|
21天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
6月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
110 1
|
28天前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
22 2
|
3月前
|
Java 索引
Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
这篇文章介绍了Java中数组复制的四种方法:`Arrays.copyOf()`、`Arrays.copyOfRange()`、`System.arraycopy()`和`clone()`方法,以及它们的使用场景和示例代码。
|
4月前
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法
下一篇
无影云桌面