• 【Java】快速入门


    https://www.liaoxuefeng.com/wiki/1252599548343744/1255878730977024

    https://www.runoob.com/java/java-basic-syntax.html

    https://www.cnblogs.com/fuhongliang/p/4304477.html

    main函数必须要带参数(String[] args)吗?
    public static void main(String[] args),我看所有的main函数声明都写成这样,前面的都好理解,只有这个参数(String[] args)必须要带吗?能不能不带,或者换成其他的参数?这个参数有何用,main函数调用的时候又用不着他,再说也没人给main函数传参呀。

    String[] args是main函数的形式参数,可以用来获取命令行用户输入进去的参数。java 本身不存在不带String args[]的main函数,java程序中去掉String args[]会出现错误。
    建个test类 在cmd中运行时输入java test a b c,并且在你的main函数里面加这段话:System.out.println(“arg is”+args[0]+" “+args[1]+” "+args[2]),然后看看输出是什么?
    是不是:
    This is a simple Java program
    arg is a b c
    test.java
    *******

    Java规定,某个类定义的public static void main(String[] args)是Java程序的固定入口方法,因此,Java程序总是从main方法开始执行。

    注意到Java源码的缩进不是必须的,但是用缩进后,格式好看,很容易看出代码块的开始和结束,缩进一般是4个空格或者一个tab。

    最后,当我们把代码保存为文件时,文件名必须是Hello.java,而且文件名也要注意大小写,因为要和我们定义的类名Hello完全保持一致。

    为什么我的java类名是public的,其源文件名就一定要和类名一致??

    JAVA中只能有一个public类,而且文件名要和这个类的类名相同:

    1.在一个文件中,有且只能有一个public类,该类与文件同名

    2.在一个文件中,可以不存在public类

    3.在一个文件中,可以不存在与文件同名的类(前提是此文件中没有public类)

    一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?

    其实文件名是无所谓的,因为将来用 javac 进行编译的时候,最终会生成多个 .class 文件,每一个类对应个 .class 文件。运行时只要运行对应的 .class 文件就可以了,这时 .java 文件就显得没什么用了( 运行时不需要 ),那还管它叫什么名字。

    但是当你的类被 public 修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在 A.java 文件中,不然在用 javac 编译时会提示错误:类 A 是公共的,应在名为 A.java 的文件中声明)。
    也就是说在同一个 .java 文件中,不应该出现2个或2个以上的 public class 。如果有一个public class类,就应该让文件名和此类名相同;那如果没有呢,即所有的 class 都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java 的 ( 哈哈,不信就试试 ) 。

    注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也和 main 方法所在类有关系,其实不然。**main 方法只是程序的一个入口,老师讲“一个程序只能有一个入口”,**好象是在说只能有一个 main 方法,其实,只要你高兴,就可以在所有类里都写上 main 方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个入口进去,这就是 main 的作用( 程序入口 )。(这也就是为什么你会发现,程序员在做单元测试时,会往自己做的很多类里面添加 main 方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)

    public class test {
    public static void main(String[] args) {
    System.out.println(“This a java program!”);
    System.out.println(“arg is”+args[0]+" “+args[1]+” "+args[2]);
    }
    }
    cmd*********
    C:>javac test.java
    C:>java test a b c
    This a java program!
    arg isa b c
    综上,main必须要带String args[]。*
    打开文本编辑器,输入以下代码:

    public class Hello {
    public static void main(String[] args) {
    System.out.println(“Hello, world!”);
    }
    }

    在一个Java程序中,你总能找到一个类似:

    public class Hello {

    }

    的定义,这个定义被称为class(类),这里的类名是Hello,大小写敏感,class用来定义一个类,public表示这个类是公开的,public、class都是Java的关键字,必须小写,Hello是类的名字,按照习惯,首字母H要大写。而花括号{}中间则是类的定义。

    注意到类的定义中,我们定义了一个名为main的方法:

    public static void main(String[] args) {
        ...
    }
    
    • 1
    • 2
    • 3

    小结

    一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;
    使用javac可以将.java源码编译成.class字节码;
    使用java可以运行一个已编译的Java程序,参数是类名。

    https://www.cnblogs.com/fuhongliang/p/4304477.html

    注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也和 main 方法所在类有关系,其实不然。main 方法只是程序的一个入口,老师讲“一个程序只能有一个入口”,好象是在说只能有一个 main 方法,其实,只要你高兴,就可以在所有类里都写上 main 方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个入口进去,这就是 main 的作用( 程序入口 )。(这也就是为什么你会发现,程序员在做单元测试时,会往自己做的很多类里面添加 main 方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)
    对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大

    我们注意到public除了可以修饰class外,也可以修饰方法。而关键字static是另一个修饰符,它表示静态方法,后面我们会讲解方法的类型,目前,我们只需要知道,Java入口程序规定的方法必须是静态方法,方法名必须为main,括号内的参数必须是String数组。

    方法名也有命名规则,命名和class一样,但是首字母小写:

    好的方法命名:

    main
    goodMorning
    playVR
    
    • 1
    • 2
    • 3

    常量

    定义变量的时候,如果加上final修饰符,这个变量就变成了常量:

    final double PI = 3.14; // PI是一个常量
    double r = 5.0;
    double area = PI * r * r;
    PI = 300; // compile error!

    var关键字

    有些时候,类型的名字太长,写起来比较麻烦。例如:

    StringBuilder sb = new StringBuilder();

    这个时候,如果想省略变量类型,可以使用var关键字:

    var sb = new StringBuilder();

    编译器会根据赋值语句自动推断出变量sb的类型是StringBuilder。对编译器来说,语句:

    var sb = new StringBuilder();

    实际上会自动变成:

    StringBuilder sb = new StringBuilder();

    因此,使用var定义变量,仅仅是少写了变量类型而已。

    移位运算

    整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回几个特殊值:

    NaN表示Not a Number
    Infinity表示无穷大
    -Infinity表示负无穷大
    
    • 1
    • 2
    • 3

    for each循环

    this变量

    在方法内部,可以使用一个隐含的变量this,它始终指向当前实例。因此,通过this.field就可以访问当前实例的字段。

    如果没有命名冲突,可以省略this。例如:

    class Person {
    private String name;

    public String getName() {
        return name; // 相当于this.name
    }
    
    • 1
    • 2
    • 3

    }

    但是,如果有局部变量和字段重名,那么局部变量优先级更高,就必须加上this:

    class Person {
    private String name;

    public void setName(String name) {
        this.name = name; // 前面的this不可少,少了就变成局部变量name了
    }
    
    • 1
    • 2
    • 3

    }

  • 相关阅读:
    【租车骑绿道】python实现-附ChatGPT解析
    第1篇 目标检测概述 —(1)目标检测基础知识
    Python函数与模块的精髓与高级特性
    Java实用类(五) -Math类和指定范围的随机数
    Windows下Pytorch环境配置(Anaconda、CUDA、CUDNN、Pytorch)
    水体中磷赋存形态
    JSP页面的组成
    R语言dplyr包select函数筛选dataframe数据中以指定字符串开头的数据列(变量)
    MySQL基础入门
    牛客小白月赛61-C-小喵觅食
  • 原文地址:https://blog.csdn.net/weixin_43796670/article/details/106598760