zoukankan      html  css  js  c++  java
  • java程序结构

    java是一门面向对象的语言,在编程过程中当然离不开对象的声明,而对象又是通过类定义的,所以java中最重要的就是各式各样的类,在java中,类也是一个程序的基本单位

    0x01:默认生成类

    在eclipse中创建好一个java类之后会自动生成一个默认类,如下:

    public class test {
    
    }

    这是一个空白类,其中class关键字表示定义的是一个类,public是一个修饰符,表示这个类是公开的,test是类名,是根据所创建的java文件自动生成的。

    0x02:定义main方法

    java程序的运行和c有点相同,都是从一个main方法中运行,在main方法中,可以调用其它自定义的方法。

    public class test {
        public static void main(String []args){
            
        }
    }

    方法定义了一组执行语句,方法内部的代码将会被依次顺序执行。

    这里的方法名是main,返回值是void,表示没有任何返回值(这一点和c也是类似的,方法的返回类型必须与定义的一致。。)。

    我们注意到public除了可以修饰class外,也可以修饰方法。而关键字static是另一个修饰符,它表示静态方法,Java入口程序规定的方法必须是静态方法,方法名必须为main,括号内的参数必须是String数组。

    0x03:方法的调用

    我们当然不能把所有的代码都写在一个main方法中,这样会让代码过于臃肿,且可读性差。可以把实现某种功能(比如获取绝对值、求平方等)的一些代码自定义为一个方法,然后在main方法中调用这个自定义的方法。

    public class test {
        public static void main(String []args){
            hello();
        }
        static void hello(){
            System.out.println("hello,");
            world();
        }
        static void world(){
             System.out.print("world!");
         }
    }

    方法的调用与c是一样的,直接使用方法名就行,有参数的话需要传入对应类型的参数。但不同的方法的定义与c中有点不一样,因为java中main方法是static类型,在自定义方法时也要在前面加航static,要不会报错:

    Cannot make a static reference to the non-static method hello() from the type test

    0x04:类的调用

    在复杂一点的代码中,只自定义方法也还是不够的,还需要自定义类。 类的使用和方法略有不同,必须通过类的实例调用类里面的方法。

    public class test {
       // 声明一个Dog类的实例 Dog dog
    = new Dog(); public static void main(String []args){
          // 调用Dog的方法
    Dog.run(); Dog.eat(); } } // 自定义Dog类
    class Dog{ static void run(){ System.out.println("dog is running!!"); } static void eat(){ System.out.println("dog is eating!!"); } }

    关于为什么java的静态方法中 可以调用的方法、可以使用的成员变量必须时静态的,网上查了一下,有这样一段话,“由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。”

    作者:知乎用户
    链接:https://www.zhihu.com/question/20834765/answer/16364708
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    静态方法实际是类的方法,而不是关于对象的方法。所以不是“可以不通过对象调用方法”,而是恰恰应该使用类来调用,而且鼓励这种写法,而不是通过对象调用。即:静态方法不和对象相关,而是仅仅和类相关。
    为啥呢?解释是这样的:在一般的类中定义的方法中,非静态类其实不仅仅有他们后面括号里面的显式参数(比如 public int getField(String param1, int param2)这个方法,显式参数是param1和param2),还包括一个隐式参数:即这个调用方法的对象(即this)。而静态方法,则没有这个隐式的参数,仅仅就只有括号中的显式参数。
    既然是因为静态方法不和对象关联,那么它就只能用同样仅仅和类关联而不和对象关联的实例域,毕竟不是静态的实例域在不同对象中基本上都是不同的嘛。

    而理解这个道理,最最关键的一点是:
    java中的“static”和C++中的“static”含义并不完全一样!!!C++中的关键字static被复写了三次,有三种含义,分别为:
    1. 变量一直存在;
    2. 不能被其他文件访问的全局变量和函数;
    3. 属于类且不属于对象的全局变量和函数
    在一大部分人心中可能只把它理解为“静态”的意思,实际上Java仅仅取了C++中static的最后一个含义:即,不与类的实例相关联,仅与类相关联。

    (ps:刚刚起步的小白,若理解有误,还请大佬们多多指正。。。。。。)

    ***************不积跬步无以至千里***************

  • 相关阅读:
    Linux查看进程和已知端口是否启动
    plsql安装
    windows中用批处理文件删除n天前的文件
    阿里云服务器25邮件端口问题
    通过rpm安装crontab
    [RHEL7.1]关闭防火墙及SElinux
    有了 itchat, python 调用微信个人号从未如此简单(新增 py3 支持)
    Linux中tty、pty、pts的概念区别
    不用写代码就能实现深度学习?手把手教你用英伟达 DIGITS 解决图像分类问题
    Hadoop 2.7.3 安装配置及测试
  • 原文地址:https://www.cnblogs.com/liangshian/p/11711838.html
Copyright © 2011-2022 走看看