理解Java中的info()方法: 介绍和用途
1.类中的方法
类中的方法描述事物的功能行为
普通方法:类中定义的一些方法,如下,info()这个就属于普通的方法,可以被实例化对象调用’’’
特性方法:类中,前面有@property特殊字符的一些方法。如以下getid()是特性方法’’’
静态方法:类中,前面有@staticmethod特殊字符的一些方法,如以下lianjie()是静态方法。不需要进行实例化,可以直接使用类调用,当然,也可以用实例对象调用
类方法:类中,前面有@classmethod特殊字符的一些方法,info(cls)是静态方法。不需要进行实例化,可以直接使用类调用,当然,也可以用实例对象调用
1.实例方法
格式:访问限制修饰符 方法的返回值类型 方法名称(参数列表){方法体}
1.访问限制修饰符–public 缺省的【没有写】
2.方法的返回值类型–就是方法的执行结果类型
1.有返回值时,方法的返回值类型一定是方法执行结果的具体类型方法的返回值类型可以是基本类型,复合类型方法体中的最后一句话一定是return xxxx;
2.没有返回值,方法的返回值类型使用void代替。
3.方法名称–合法的标识符【首字母小写,从第二个单词开始首字母大写】
4.(参数列表)–用来接收方法之外的数据进入本方法参与运算【找帮手】参数实际上是变量,没有初始值,属于局部变量【数据类型 变量名称】可以没有,也可以有,也可以有多个,多个参数之间用“,”
5.方法体–是编写具体实现过程的地方。
例如:
package com.wangxing.zyb;
public class ShiLiFangFa {
public void method1(){
System.out.println(“public修饰的没有返回值,没有参数的实例方法”);
}
int getInt(int num){
System.out.println(“缺省的返回值为int型,有一个int型参数的实例方法”);
return 100+num;
}
public int getDouble(int num,double num2){
System.out.println(“public修饰的返回值为int型的有两个参数的实例方法”);
return (int)(num+num2);
}
public char[] getCharArray(int size){
System.out.println(“public修饰的返回值为字符数组的有一个参数的实例方法”);
char chararray[]=new char[size];
return chararray;
}
}
2.静态方法【类方法】
使用static关键字修饰的实例方法就是静态方法【类方法】
格式:访问限制修饰符 static 方法的返回值类型 方法名称(参数列表){方法体}
例如:
package com.wangxing.zyb;
public class JinTaiFangFa {
public static void method1(){
System.out.println("public修饰的没有返回值,没有参数的静态方法");
}
static int getInt(int num){
System.out.println("缺省的返回值为int型,有一个int型参数的静态方法");
return 100+num;
}
public static int getDouble(int num,double num2){
System.out.println("public修饰的返回值为int型的有两个参数的静态方法");
return (int)(num+num2);
}
public static char[] getCharArray(int size){
System.out.println("public修饰的返回值为字符数组的有一个参数的静态方法");
char chararray[]=new char[size];
return chararray;
}
}
package com.wangxing.zyb;
public class TestMain {
public static void main(String[] args) {
JinTaiFangFa jtff=new JinTaiFangFa();
slff.method1();
slff.getInt(0);
slff.getDouble(0,0);
slff.getCharArray(0);
}
}
实例方法与静态方法【类方法】的区别?
1.实例方法没有static ,静态方法【类方法】有static
2.实例方法只能对象方法,静态方法【类方法】可以对象方法,也可以类名访问
3.实例方法只在方法调用时分配运行空间,静态方法【类方法】在方法调用前已经分配好运行空间。
3.构造方法
构造方法的作用就是为了创建对象我们创建好一个java类之后,默认类体中就有一个默认的无参数构造方法存在。只是没有显示出来
格式:访问限制修饰符 类名(参数列表){方法体}
当类中出现的有参数的构造方法时,默认无参数的构造方法会被覆盖,此时我们如果需要无参数的构造方法时,就需要手动给出无参数构造方法
例如:
package com.wangxing.zyb;
public class GouZaoFangFa {
public GouZaoFangFa(){
System.out.println("无参数构造方法");
}
//当类中出现的有参数的构造方法时,默认无参数的构造方法会被覆盖,
//此时我们如果需要无参数的构造方法时,就需要手动给出无参数构造方法
public GouZaoFangFa(String name){
System.out.println("有参数构造方法");
}
}
package com.wangxing.zyb;
public class TestMain {
public static void main(String[] args) {
GouZaoFangFa gzff=new GouZaoFangFa();
}
}
4.方法重载
在同一个类中,方法的名称相同,参数不同这种现象叫方法重载。
注意:方法重载与方法的返回值类型没有关系,与方法的参数有关
方法的名称相同 ,方法的参数个数、参数类型
例如:
package com.wangxing.zyb;
public class FangFaChongZai {
//构造方法重载
public FangFaChongZai(){}
public FangFaChongZai(String name){}
public FangFaChongZai(int age){}
//实例方法重载
public void method1(){}
public int method1(int num){return 100;}
public char method1(int num,char ch){return 'A';}
public char method1(char ch,int num){return 'A';}
//静态方法重载
public static void staticmethod1(){}
public static int staticmethod1(int num){return 100;}
public static char staticmethod1(int num,char ch){return 'A';}
public static char staticmethod1(char ch,int num){return 'A';}
}
5.同一个类中方法与变量的调用关系
类中可以包含两个基本元素–变量和方法
1.方法里面调用变量
构造方法中可以调用实例变量,默认this.实例变量,可以省略this
构造方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this,构造方法中可以调用局部变量,局部变量名称访问
实例方法中可以调用实例变量,默认this.实例变量,可以省略this
实例方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类 名/this,实例方法中可以调用局部变量,局部变量名称访问
静态方法中不可以调用实例变量
静态方法中可以调用静态成员变量,默认类名.静态成员变量,可以省略类名,静态方法中不能出现this,静态方法中可以调用局部变量,局部变量名称访问
例如:
package com.wangxing.zyb;
public class FangFaGetBianLiang {
// 实例变量
public int number = 1001;
// 静态成员变量
public static String name = "zhangsan";
// 构造方法中访问变量
public FangFaGetBianLiang() {
//局部变量
String address = "西安";
// 构造方法中可以调用实例变量,默认this.实例变量,可以省略this
System.out.println("实例变量-number=" + this.number);
System.out.println("实例变量-number=" + number); //
//构造方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this
System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name);
System.out.println("静态成员变量-name=" + this.name);
System.out.println("静态成员变量-name=" + name); // 构造方法中可以调用局部变量,局部变量名称访问
//System.out.println("局部变量-address="+FangFaGetBianLiang.address); //
//System.out.println("局部变量-address="+this.address);
System.out.println("局部变量-address=" + address);
}
// 实例方法中访问变量
public void testMethod() {
// 局部变量
String address = "西安";
// 实例方法中可以调用实例变量,默认this.实例变量,可以省略this
System.out.println("实例变量-number=" + this.number);
System.out.println("实例变量-number=" + number);
// 实例方法中可以调用静态成员变量,默认类名.静态成员变量,也可以this.静态成员变量,可以省略类名/this
System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name);
System.out.println("静态成员变量-name=" + this.name);
System.out.println("静态成员变量-name=" + name);
// 实例方法中可以调用局部变量,局部变量名称访问
// System.out.println("局部变量-address="+FangFaGetBianLiang.address);
// System.out.println("局部变量-address="+this.address);
System.out.println("局部变量-address=" + address);
}
// 静态方法方法中访问变量
public static void testStatic() {
// 局部变量
String address = "西安";
// 静态方法方法中不可以调用实例变量
//System.out.println("实例变量-number=" + this.number);
//System.out.println("实例变量-number=" + number);
// 静态方法中可以调用静态成员变量,默认类名.静态成员变量,可以省略类名
System.out.println("静态成员变量-name=" + FangFaGetBianLiang.name);
// 静态方法中不能出现this
//System.out.println("静态成员变量-name=" + this.name);
System.out.println("静态成员变量-name=" + name);
// 静态方法中可以调用局部变量,局部变量名称访问
// System.out.println("局部变量-address="+FangFaGetBianLiang.address);
// System.out.println("局部变量-address="+this.address);
System.out.println("局部变量-address=" + address);
}
}
package com.wangxing.zyb;
public class TestMain {
public static void main(String[] args) {
//测试构造方法访问变量
FangFaGetBianLiang ffgbl=new FangFaGetBianLiang();
ffgbl.testMethod();
FangFaGetBianLiang.testStatic();
}
}
2.方法里面调用方法
构造方法中可以访问其他的构造方法
构造方法中可以访问实例方法,默认this.实例方法,可以省略this ,构造方法中可以访问静态方法,默认类名.静态方法,也可以this.静态方法,可以省略类名/this
实例方法中可以访问构造方法,new+构造方法
实例方法中可以访问其他的实例方法,默认this.实例方法,可以省略this,实例方法中可以访问静态方法,默认类名.静态方法,可以this.静态方法,可以省略类名/this,静态方法中可以访问构造方法,new+构造方法();静态方法中不能访问实例方法,静态方法中不能出现this,静态方法中能访问其他的静态方法,默认类名.静态方法,可以省略类名
例如:
package com.wangxing.zyb;
public class FangFaGetFangFa {
//构造方法中访问其他方法
public FangFaGetFangFa(){
System.out.println("无参数构造方法");
//构造方法中可以访问其他的构造方法,new+构造方法
new FangFaGetFangFa("hello");
//构造方法中可以访问实例方法,默认this.实例方法,可以省略this
//this.testMethod1();
testMethod1();
//构造方法中可以访问静态方法,默认类名.静态方法,也可以this.静态方法,可以省略类名/this
FangFaGetFangFa.staticMethod1();
//this.staticMethod1();
staticMethod1();
}
public FangFaGetFangFa(String name){
System.out.println("有参数构造方法-参数name="+name);
}
public void testMethod1(){
//实例方法中可以访问构造方法,new+构造方法
new FangFaGetFangFa("hello");
//实例方法中可以访问其他的实例方法,默认this.实例方法,可以省略this
//this.testMethod2();
testMethod2();
//实例方法中可以访问静态方法,默认类名.静态方法,可以this.静态方法,可以省略类名/this
FangFaGetFangFa.staticMethod1();
//this.staticMethod1();
staticMethod1();
}
public void testMethod2(){
System.out.println("实例方法");
}
public static void staticMethod1(){
//静态方法中可以访问构造方法,new+构造方法();
new FangFaGetFangFa("hello");
//静态方法中不能访问实例方法
//testMethod2();
//静态方法中不能出现this
//this.testMethod2();
//静态方法中能访问其他的静态方法,默认类名.静态方法,可以省略类名
FangFaGetFangFa.staticMethod2();
staticMethod2();
}
public static void staticMethod2(){
System.out.println("静态方法");
}
}
package com.wangxing.zyb;
public class TestMain {
public static void main(String[] args) {
//测试构造方法访访问其他方法
FangFaGetFangFa ffgff=new FangFaGetFangFa();
//ffgff.testMethod1();
FangFaGetFangFa.staticMethod1();
}
}
总结:
1、有self的方法,只可以被实例对象调用,类本身无法调用。如普通方法和特性方法(@property)
2、没有self的方法,只可以被类本身调用。静态方法(@staticmethod)和类方法 (@classmethod),既可以被实例对象调用,也可以被类本身调用,但一般使用类本身调用。
3、类属性:既可以被实例对象调用,也可以被类本身调用
4、方法属性:定义在self函数下,属性没有加self。只能在函数内部使用。不能被实例对象调用,也不可以被类调用。定义在self函数下,属性加上self.属性可以被实例对象调用,
可以被类调用的有:类属性,静态方法,类方法,未加self的方法
可以被实例对象调用的有:实例属性、普通方法、特性方法、(类方法、静态方法也可以,但通常不这样用)
静态方法中不能访问实例元素【实例变量/实例方法】
静态方法中不能出现this
静态方法的内存分配时机早于实例元素的内存分配时机。
静态方法中不能访问实例元素
上一篇: 用Java实现Wi-Fi连接操作指南
下一篇: Java实践训练的目标与规定
推荐阅读
-
Java 8新特性探究(十三)JavaFX 8新特性以及开发2048游戏-JavaFX历史## 跟java在服务器端和web端成绩相比,桌面一直是java的软肋,于是Sun公司在2008年推出JavaFX,弥补桌面软件的缺陷,请看下图JavaFX一路走过来的改进 从上图看出,一开始推出时候,开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode,程序员可以使用Java代码代替。 JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。 JavaFX 2.0 包含非常丰富的 UI 控件、图形和多媒体特性用于简化可视化应用的开发,WebView可直接在应用中嵌入网页;另外 2.0 版本允许使用 FXML 进行 UI 定义,这是一个脚本化基于 XML 的标识语言。 从JDK 7u6开始,JavaFx就与JDK捆绑在一起了,JavaFX团队称,下一个版本将是8.0,目前所有的工作都已经围绕8.0库进行。这是因为JavaFX将捆绑在Java 8中,因此该团队决定跳过几个版本号,迎头赶上Java 8。 ##JavaFx8的新特性 ## ###全新现代主题:Modena 新的Modena主题来替换原来的Caspian主题。不过在Application的start方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)来继续使用Caspian主题。 参考http://fxexperience.com/2013/03/modena-theme-update/ ###JavaFX 3D 在JavaFX8中提供了3D图像处理API,包括Shape3D (Box, Cylinder, MeshView, Sphere子类),SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight子类),SceneAntialiasing等。Camera类也得到了更新。从JavaDoc中可以找到更多信息。 ###富文本 强化了富文本的支持 ###TreeTableView ###日期控件DatePicker 增加日期控件 ###用于 CSS 结构的公共 API
-
理解JSP中的九大内置对象和Servlet中的Java对象
-
在JSP中引入Java和Vue的实现方法
-
理解并掌握 Linq 中的 Select 和 where 方法
-
深入理解Java虚拟机的堆、栈和方法区
-
理解CentOS中物理和虚拟网卡的命名规则与信息获取方法
-
四种在Java中获取当前日期和时间的方法:利用java.util.Date类
-
Java中获取当前日期和时间的多种方法:详解New Date与java.util.Date的区别
-
理解Oracle中的wm_concat和listagg函数:使用方法与异同点
-
简单介绍Oracle中listagg和wmsys.wm_concat连接字符串函数的使用方法