成员变量:在方法体外,类体内声明的变量称为成员变量;不以static修饰的是实例变量,以static修饰的为类变量
局部变量:在方法体内部声明的变量称为局部变量
成员变量局部变量声明的位置直接声明在类中方法形参或内部、代码块内、构造器内等修饰符四种权限修饰符、final等不能用权限修饰符修饰、可以用final修饰初始化有默认初始化没有默认初始化,必须显式赋值内存加载位置堆空间或静态域内栈空间二、初始化赋值当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用数据类型。 |成员变量类型|初始值 | |--|--| |byte |0 | |short|0| |int|0| |long|0| |float|0.0| |double|0.0| |char|0或写为'\u0000'(表现为空)| |boolean|false| |引用数据类型|null|
三、对象的内存解析先看一下如下代码:
publicclassPerson{publicstaticvoidmain(String[]args){Personp1=newPerson();p1.age=20;p1.name="cabbage";Personp2=newPerson();p2.age=12;}privateStringname;privateintage;}内存解析图:
简单解析一下:以p1对象引用为例,当我们创建该对象时,成员变量就会放在堆空间中,先是默认初始化值null、0,之后通过对象.属性的赋值方式把属性值分别改为:cabbage、20。
四、对象数组的内存解析先看如下代码:
publicclassPerson{publicstaticvoidmain(String[]args){Person[]people=newPerson[2];people[0]=newPerson();people[0].name="cabbage";people[0].age=20;System.out.println(people[0].toString());System.out.println(people[1]);}privateStringname;privateintage;@OverridepublicStringtoString(){return"Person{"+"name='"+name+'\''+",age="+age+'}';}}内存解析图:
简单解析一下:因为是对象数组,所有初始值每个默认值都是null,当给people[0]创建对象时,会在堆空间中开辟一个空间用来储存成员变量name、age;对象赋值的过程与对象内存解析的方式一样。
运行结果:
五、方法使用介绍1、方法的声明:
权限修饰符 返回值类型 方法名(形参列表){ 方法体 }
2、返回值类型:有返回值 vs 没有返回值
如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”
如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不需要使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思
3、return关键字的使用:
使用在方法体中,方法中不可以定义方法
作用:结束方法、针对于有返回值类型的方法,使用"return 数据"方法返回所要的数据
注意点:return关键字后面不可以声明执行语句
方法的使用中,可以调用当前类的属性或方法
特殊的:方法A中又调用了方法A:递归方法
六、方法重载含义:同一个类、方法名一样、形参列表(个数、类型、顺序)不同
下列方法都构成了重载:
publicclassPerson{privateStringname;privateIntegerage;publicvoidone(){}publicvoidone(Integerage){}publicvoidone(Stringname){}publicvoidone(Stringname,Integerage){}publicvoidone(Integerage,Stringname){}}我们再来看看可变个数的形参:
publicclassPerson{publicstaticvoidmain(String[]args){Personperson=newPerson();person.one("one","two","three");}publicvoidone(){}publicvoidone(String...names){}}可变个数形参的格式:数据类型 ... 变量名
可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
可变个数形参的方法与本类中方法名相同,换句话说,二者不能共存。
可变个数形参在方法的形参中,必须声明在末尾且最多只能声明一个可变形参。
最后来看看方法形参的传递机制:值传递
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的数据
值传递机制:
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
七、构造器构造器说明:
如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
一个类中定义的多个构造器,彼此构成重载
一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
一个类中,至少会有一个构造器。
publicclassPerson{publicstaticvoidmain(String[]args){Personperson=newPerson();}publicPerson(){System.out.println("我是构造器");}}运行结果:
八、this关键字this说明:
this可以用来修饰、调用:属性、方法、构造器
在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。
在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
构造器中不能通过"this(形参列表)"方式调用自己
规定:"this(形参列表)"必须声明在当前构造器的首行
构造器内部,最多只能声明一个"this(形参列表)",用来调用其他的构造器
写个代码验证一下:
publicclassPerson{publicstaticvoidmain(String[]args){Personperson=newPerson("cabbae",20);}privateStringname;privateIntegerage;publicPerson(Stringname,Integerage){this(name);this.name=name;this.age=age;}publicPerson(Stringname){System.out.println("我的名字是:"+name);}}运行结果:
谢谢阅读,一起进步,嘻嘻~
logo设计
创造品牌价值
¥500元起
APP开发
量身定制,源码交付
¥2000元起
商标注册
一个好品牌从商标开始
¥1480元起
公司注册
注册公司全程代办
¥0元起
查
看
更
多
JAVA中的属性、方法、构造器,你真的弄懂了吗?
this可以用来修饰、调用:属性、方法、构造器 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器 构造器中不能通过"this(形参列表)"方式调用自己 规定:"this(形参列表)"必须声明在...
java里构造器和方法有什么区别吗?
构造器也是方法,叫构造方法。不同的是,构造器是用来初始化的,普通方法是无法初始化对象的,这点你要清楚
我是一个JAVA新手,不明白什么叫类,什么叫方法,什么叫构造器,甚至看代码...
构造器(也叫“构造方法”,“构造函数”),其实它就是一个方法,但这个方法比较特殊,必须要和类名相同,刚才我在电脑中声明了人类(class Human{})那么在这个类中,我们可以声明一个名为人类(Human(){})的方法,这个方法需要做什么就仁者见仁,智者见智了,一般是对值的初始化操作,或者是调用...
java类是什么
1. 属性:用于存储对象的状态信息。2. 方法:定义了对象可以执行的操作或行为。3. 构造器:用于创建类的新实例。4. 内部类和接口:有时类内还可以包含内部类或接口。此外,类中还可能包含一些特殊的方法如访问器等。类的使用 通过定义类,我们可以抽象出现实世界中的实体,例如一个汽车、一个人或者...
java中构造器和方法的区别
1、功能和作用的不同 构造器是为了创建一个类的实例。2、修饰符,返回值和命名的不同 构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有...
构造器构造器和方法的区别
在Java的世界里,构造器就如同鸭嘴兽在哺乳动物中的地位,它是一种特殊的方法。要深入理解构造器,我们需要先明白它与常规方法的区别。对于所有Java学习者,特别是那些准备进行认证考试的人来说,构造器的知识至关重要。首先,构造器的主要作用是初始化新创建的对象,而普通方法则是用于执行特定任务或操作。
javabean四种属性(javabean的特性)
1:属性 2:getter方法、setter方法 3:构造方法、序列化(Serializable)、比较(Comparable)、输出(toString)等相关的方法的重写。 刚接触javabean可以先忽略第三条,上面你写的就是一个最普通的javabean,包涵1、旅源2两部分内容。 通常属性都定义为私有,防止外部的直接访问,而是对外提供public的getter和setter方法来控制外...
求大神指教在java程序中构造器和构建器有区别吗?
在Java程序中,构造函数(Constructor)和构建器(Builder)确实有区别,尽管它们在用途上有一定的相似性。构造函数是一种特殊的成员方法,用于在创建对象时初始化对象。它的名称必须与类名完全相同,并且没有返回类型,连void都没有。构造函数的主要目的是在对象创建时分配内存并初始化对象的状态。每个类...
北大青鸟设计培训:Java构造器和方法的区别?
1、功能和作用的不同构造器是为了创建一个类的实例。用来创建一个对象,同时可以给属性做初始化。这个过程也可以在创建一个对象的时候用到:Platypusp1=newPlatypus();相反,方法的作用是仅仅是功能函数,为了执行java代码。2、修饰符,返回值和命名的不同构造器和方法在下面三个方便的区别:...
java里面的构造器和方法的区别是什么?
构造器没有返回值,方法名与类名相同,主要用于对象的初始化。每个类至少要有一个构造器,否则默认会提供一个无参构造器。构造器会在对象创建时自动调用。普通方法则没有以上这些限制。详细对比图如下:参考资料:知乎社区