java程序结构_java程序结构

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

0x01:默认生成类

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

public classtest {

}

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

0x02:定义main方法

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

public classtest {public static voidmain(String []args){

}

}

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

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

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

0x03:方法的调用

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

public classtest {public static voidmain(String []args){

hello();

}static voidhello(){

System.out.println("hello,");

world();

}static voidworld(){

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 classtest {

// 声明一个Dog类的实例

Dog dog= newDog();public static voidmain(String []args){

// 调用Dog的方法

Dog.run();

Dog.eat();

}

}

// 自定义Dog类classDog{static voidrun(){

System.out.println("dog is running!!");

}static voideat(){

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被复写了三次,有三种含义,分别为:

变量一直存在;

不能被其他文件访问的全局变量和函数;

属于类且不属于对象的全局变量和函数。在一大部分人心中可能只把它理解为“静态”的意思,实际上Java仅仅取了C++中static的最后一个含义:即,不与类的实例相关联,仅与类相关联。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#金额小写转大写

public string ConvertMoney(decimal Money){//金额转换程序string MoneyNum = "";//记录小写金额字符串[输入参数]string MoneyStr = "";//记录大写金额字符串[输出参数]string BNumStr = "零壹贰叁肆伍陆柒捌玖";//模string UnitStr = "万…

SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型

SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型友情提示,您阅读本篇博文的先决条件如下: 1、本文示例基于Microsoft SQL Server 2008 R2调…

shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)

转载:http://joewalker.iteye.com/blog/408879命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;导出整个数据库结构和数据mysqldump -h localhost -uroot -p123456 database > dump.sql导出单个数据表结构和数据mysql…

.NET 很好,你可能对它有一些误解

> 作者:Charles Chen在 20 年前的 2002 年, 微软公布了下一代的软件、服务的愿景和路线,2 月 13 日,Visual Studio .NET 推出,.NET 开发平台的第一个版本正式向世界发布。到现在为止,.NET 都已经 20 岁了, 它已经成…

ajax返回数据类型为JSON数据的处理

ajax返回数据类型为JSON数据的处理 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <…

SQL语言实现金额小写转大写完整案例代码

1. 数字大小写对照表 一到十数字大小写: 1——壹,2——贰,3——叁,4——肆,5——伍,6——陆,7——柒,8——捌,9——玖,10——拾 2. 大小写转换案例 将12.345元转换为大写 select dbo.L2U(12.345,1) select dbo.L2U(123456789.345,1) 结果: 3. SQL转化代码 CREA…

Android studio之编译出现 Error:null value in entry: outputDirectory=null

1、问题 昨天编译好好的&#xff0c;今天编译无缘无故报下面这个错 Error:null value in entry: outputDirectorynull 2、解决办法 cd 到项目的根目录去&#xff0c;然后删除.gradle/文件夹就可以了 rm -rf .gradle/

c# 操作excle

添加引用 Microsoft.Office.Interop.Excel; 添加命名空间 using Excel Microsoft.Office.Interop.Excel; //创建接口变量------------------------------------------ _Workbook _xlWorkBook null; Worksheet _xlWorkSheet null; Excel.Application _xlApp null;//创建exc…

mysql 权重 取值_mysql如何按权重查询数据啊?

楼上的回答全都会错意了&#xff0c;题主意思是根据权重设定随机几率&#xff0c;例如 A 的权重为10&#xff0c;B 的权重为 5&#xff0c;这个时候随机出现 A 的几率要比出现 B 的几率高。你可以试试这个备选方案。就是先取出权重列表再去根据权重随机出来的那个权重值&#x…

使用 JsonSchema 验证 API 的返回格式

使用 JsonSchema 验证 API 的返回格式Intro最近我们的 API 提供给了别的团队的小伙伴用&#xff0c;按照他们的需求做了接口的改动&#xff0c;API 返回的数据结构有一些变化&#xff0c;我们提供的接口有缓存&#xff0c;数据库更新之后不会马上刷新&#xff0c;于是就想验证一…

盘点PHP编程常见失误

为什么80%的码农都做不了架构师&#xff1f;>>> 变量声明 如果在一条语句中声明一个变量&#xff0c;如下所示&#xff1a;$varvalue;编译器首先会求出语句右半部分的值&#xff0c;恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正确&#xff0c;就会出…

Scala具体解释---------Scala是什么?可伸展的语言!

Scala是什么 Scala语言的名称来自于“可伸展的语言”。之所以这样命名&#xff0c;是由于他被设计成随着使用者的需求而成长。你能够把Scala应用在非常大范围的编程任务上。从写个小脚本到建立个大系统。51CTO编辑推荐&#xff1a;Scala编程语言专题 Scala是非常easy进入的语言…

地理学:从未磨灭的价值

地理学&#xff1a;从未磨灭的价值 文|梁鹏 庄子说&#xff1a;“天地有大美而不言&#xff0c;四时有明法而不议&#xff0c;万物有成理而不说”&#xff0c;天地不言&#xff0c;四时不议&#xff0c;万物不说&#xff0c;于是地理学家就是替天地说话的那帮人。推开自然之门&…

Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法

1、问题 导入项目eclipse提示如下&#xff1a; Android requires compiler compliance level 5.0 or 6.0. Found 1.8 instead 2、解决办法 项目右键->Android tools->Fix Project

Educational Codeforces Round 1

被C坑的不行不行的。。。其他题目都还可以。 A - Tricky Sum 求1&#xff0c;2&#xff0c;3,...,n的加和&#xff0c;其中2^x&#xff08;x>0&#xff09;为负。 因为2^x的个数很少&#xff0c;所以以每个2^x为分界点进行判断. 初始化x0; 如果n>2^x,求出2^(x-1)到2^(x)之…

自定义View的三个构造函数

自定义View有三个构造方法&#xff0c;它们的作用是不同的。 public MyView(Context context) {super(context); }public MyView(Context context, AttributeSet attrs) {super(context, attrs);}public MyView(Context context, AttributeSet attrs, int defStyleAttr) {su…

mysql查询今天_昨天_7天_近30天_本月_上一月 数据_mysql查询今天、昨天、7天、近30天、本月、上一月 数据...

获取当前时间CURTIME();查询今天的数据select * from table where to_days(time) to_days(now())查询昨天数据select * from error where to_days(now())-to_days(alarmtime)1查询最近一个星期数据select * from error where to_days(now())-to_days(alarmtime)<7SELECT * …

甲骨文严查Java授权,企业连夜删除JDK

文 | Travis出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)根据外媒 The Register 报道和各大企业的反馈&#xff0c;甲骨文公司近日已经开始将 Java 纳入其软件许可审查中&#xff0c;目的是找出那些处于不合规边缘或已经违规的客户&#xff0c;甲骨文此举是为了推…

前端日志分析

前端日志分析介绍 前端日志分析是通过搜集访客访问网站的行为数据&#xff0c;然后在这些用户日志数据的基础上通过定量和定性分析&#xff0c;来改善用户的浏览体验及网站性能&#xff0c;最终提升商业回报的过程&#xff0c;通常&#xff0c;前端日志分析遵循以下步骤…

历史之外,地理之中

历史之外&#xff0c;地理之中 ◎梁鹏 沉迷于历史&#xff0c;却最终选择了地理&#xff0c;于是苦苦寻求历史与地理之间的共通衔接之处。于学科而言&#xff0c;是历史与地理&#xff0c;于我而言&#xff0c;是梦想与现实。我知道已经存在的历史地理学不是我的归宿&#xff…