Java连载67-深入一维数组、main方法中的args参数详解
一、复习了一维数组,还复习了强制类型转换的注意点。
package com.bjpowernode.java_learning;
public class D67_1_GoDeepIntoArrays {
public static void main(String[] args) {
//创建一个数组,这个数组既可以存储Dog,也可以存储Cat
Animal67[] as = new Animal67[4];
//给数组每个元素赋值
Dog67 d1 = new Dog67();
Dog67 d2 = new Dog67();
Cat67 c1 = new Cat67();
Cat67 c2 = new Cat67();
as[0] = d1;
as[1] = d2;
as[2] = c1;
as[3] = c2;
//需求:遍历数组,取出每个对象,如果是Dog67那么就执行eat方法,如果是Cat67就执行move方法
for(int i = 0;i<as.length;i++) {
Animal67 a = as[i];
if (a instanceof Cat67) {
Cat67 c3 = (Cat67)a;
c3.move();
}else {
Dog67 d3 = (Dog67)a;
d3.eat();
}
}
}
}
class Animal67{
}
class Dog67 extends Animal67{
public void eat() {
System.out.println("Dog eat");
}
}
class Cat67 extends Animal67{
public void move() {
System.out.println("Cat move");
}
}
package com.bjpowernode.java_learning;
public class D67_1_GoDeepIntoArrays {
public static void main(String[] args) {
//创建一个数组,这个数组既可以存储Dog,也可以存储Cat
Animal67[] as = new Animal67[4];
//给数组每个元素赋值
Dog67 d1 = new Dog67();
Dog67 d2 = new Dog67();
Cat67 c1 = new Cat67();
Cat67 c2 = new Cat67();
as[0] = d1;
as[1] = d2;
as[2] = c1;
as[3] = c2;
//需求:遍历数组,取出每个对象,如果是Dog67那么就执行eat方法,如果是Cat67就执行move方法
for(int i = 0;i<as.length;i++) {
Animal67 a = as[i];
if (a instanceof Cat67) {
Cat67 c3 = (Cat67)a;
c3.move();
}else {
Dog67 d3 = (Dog67)a;
d3.eat();
}
}
}
}
class Animal67{
}
class Dog67 extends Animal67{
public void eat() {
System.out.println("Dog eat");
}
}
class Cat67 extends Animal67{
public void move() {
System.out.println("Cat move");
}
}

二、方法调用的时候也可以传递一个数组
package com.bjpowernode.java_learning;
public class D67_2_ {
public static void main(String[] args) {
//第一种方式
int[] a = {12,3,4,5,6};
m1(a);
//第二种方式
m1(new int[] {34,4,5,6});
//m1({34,4,5,6});这种方式是不行的,编译报错
}
public static void m1(int[] a) {
for(int i = 0;i<a.length;i++) {
System.out.println(a[i]);
}
}
}

三、关于main方法中的参数列表String[] args
1.String[] args是专门用来接受命令行参数的
2.例如:java ArrayTest07 abc def aaa
JVM在调用ArraysTest07类的main方法之前,先“abc def aaa"这个字符串以”空格“的方式进行分割,然后存储在String数组中。·
package com.bjpowernode.java_learning;
public class D67_3_ArgsAnlysis {
public static void main(String[] args) {
System.out.println("String类型的数组中的元素个数为:" + args.length);
//遍历
for(int i=0; i<args.length;i++) {
System.out.println(args[i]);
}
//需求说明:运行该软件的时候必须提供用户名和密码。
//格式:java D67_3_ArgsAnlysis usrname password
//如果用户没有提供足够的参数,则退出系统
if (args.length != 2) {
System.out.println("要想使用这个系统,就必须这样输入java D67_3_ArgsAnlysis usrname password");
return ;
}
//参数正确,如果用户名为admin,密码是123则登陆成功
String username = args[0];
String passsword = args[1];
if ("admin".equals(username) && "123".equals(password)) {
//这里如果写成username.equals("admin"),就容易造成空指针异常
System.out.println("登录成功,欢迎admin");
}else {
System.out.println("登录失败,请重新确认")
}
}
}
四、源码:
D67_1_GoDeepIntoArrays.java
D67_2_TwoWaysOfInvolingArray.java
D67_3_ArgsAnlysis.java
https://github.com/ruigege66/Java/blob/master/D67_1_GoDeepIntoArrays.java
https://github.com/ruigege66/Java/blob/master/D67_2_TwoWaysOfInvolingArray.java
https://github.com/ruigege66/Java/blob/master/D67_3_ArgsAnlysis.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载67-深入一维数组、main方法中的args参数详解的更多相关文章
- 跟着阿里p7一起学java高并发 - 第19天:JUC中的Executor框架详解1,全面掌握java并发核心技术
这是java高并发系列第19篇文章. 本文主要内容 介绍Executor框架相关内容 介绍Executor 介绍ExecutorService 介绍线程池ThreadPoolExecutor及案例 介 ...
- 【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解
测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934 本测试环境vs2022+.net6.0 +wind ...
- java架构之路-(分布式)初识zookeeper安装与参数详解
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...
- 【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)
目录 视频讲解: 一.数组的概述 二.一维数组的使用 三.Arrays工具类中的sort方法(sort方法用的多,我们具体讲一下) 四.数组中的常见异常 五.一维数组练习题 六.彩蛋(本期视频使用的P ...
- C#中static void Main(string[] args) 参数详解
学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...
- C#控制台程序入口函数 Main(string[] args) 参数详解
学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...
- int main(int argc,char* argv[])参数详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...
- jQuery()方法的第二个参数详解
关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 con ...
- c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)
C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...
随机推荐
- DVWA靶机的命令执行漏洞
之前在打攻防世界的时候出现过类似的题目,这里再重温一下 (靶机一共低中高三个安全等级,这里只演示低中等级) (1)Security:low 根据提示让我们输入地址ping一下,之后返回以下内容,可以判 ...
- python 基础之简单购物车小程序实现
购物车 all_list = [ ('mac',9000), ('kindle',900), ('tesla',800), ('python',105), ('bile',2000), ] savin ...
- mysql之魔鬼训练营
普通 + 中等 难度练习题 测试数据: --建表 --学生表 CREATE TABLE `Student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT ...
- 12 JavaScript String对象 & Date对象
<script> var a = "string"; var b = new String("string"); var c = new Strin ...
- 【PAT甲级】1024 Palindromic Number (25 分)
题意: 输入两个正整数N和K(N<=1e10,k<=100),求K次内N和N的反置相加能否得到一个回文数,输出这个数和最小的操作次数. trick: 1e10的数字相加100次可能达到1e ...
- 自定义更改 Xcode 新建 .h/.m 文件头部注释说明(文件名、工程名、作者、公司、版权等)信息
使用 Xcode 新建工程文件时,或默认生成一套注释说明信息在 .h/.m 文件的头部,说明了创建这个文件的名称.工程名.日期.作者.公司.版权等信息 // // ___FILENAME___ // ...
- 「luogu4135」作诗
「luogu4135」作诗 传送门 分块好题. 预处理出 \(f[i][j]\) 表示 \(i\) 号块到 \(j\) 号块的答案,\(num[i][k]\) 表示 \(k\) 在前 \(i\) 块的 ...
- JavaScript图形实例:图形的平移和对称变换
1.1 六瓣花平移变换 平移变换是指图形从一个位置到另一个位置所作的直线移动.如果要把一个位于P(x,y)的点移到新位置P’(x’,y’),如图1,则只要在原坐标上加上平移距离Tx和Ty即可. 即 ...
- Ubuntu下安装GTK的三种方法
我利用此方法成功在UBUNTU 10.04下安装GTK 2.20.1. 一.安装 1.安装gcc/g++/gdb/make 等基本编程工具 $sudo apt-get install build-es ...
- ASP.NET MVC Web项目中使用Log4Net记录日志,并按照日志类型分文件存储
1.创建MvcLog4Net项目 2.创建 空的MVC项目 3.项目创建完成的效果 4.选择项目,点击鼠标右键,在弹出菜单中选择“管理解决方案的 NuGet 程序包” 5. 在NuGet浏览界面: 点 ...