首页 > 编程语言 >【学懂Java】(四)面向对象编程-2

【学懂Java】(四)面向对象编程-2

时间:2023-01-19 15:32:22浏览次数:50  
标签:Java 定义 构造方法 Point int 学懂 面向对象编程 方法 public

一.局部变量和成员变量

局部变量

成员变量(全局变量)

定义在方法中

定义在方法外,类之内的变量

栈内存中

堆内存中

局部变量没有默认值

成员变量有默认值

当前方法

当前类的方法

不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同(因为是值传递,和c语言的函数传值类似)

二.引用类型

Java 语言中除基本类型之外的变量类型都称为引用类型。

Java中的对象和数组是通过引用对其操作的.

  • 引用可以理解为一种受限的指针
  • 指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,只能进行赋值运算。
  • 引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)

三.内存分析

栈satck:

  • 存放:局部变量
  • 先进后出,自下而上存储(ABCD的可能弹出顺序:DCBA,ABCD,BACD...)但是CABD不可以。
  • 方法执行完毕,自动释放空间

堆heap:

  • 存放new出来的对象
  • 需要垃圾回收器来回收:System.gc()

方法区method area:

  • 存放:类的信息(代码)、 static变量、字符串常量等

四.构造方法

【学懂Java】(四)面向对象编程-2_成员变量

定义:

创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化工作。

构造方法的语法:

  • 方法名称:构造方法的方法名称必须更类的名称保持一致
  • 访问修饰符:
  • 形参:用户可以自定义添加,跟方法的普通参数一样。
  • 方法体:完成对象的初始化功能
  • 返回值:没有返回值

注意

  1. 创建完类之后,如果没有手动调用构造方法,会有一个默认的无参的构造方法调用
  2. 用户自定义构造方法之后,默认的无参构造方法就不能够使用了,必须要手动定义无参构造方法
  3. 同一个类中可以包含多个同名的构造方法
  4. 构造器的方法名必须和类名一致!
  5. 构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。
  6. 通过new关键字调用!
  7. 如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会添加无参数构造方法!
  8. 与普通方法一样,构造方法也可以重载

五.构造方法重载

定义

在一个类中可以包含多个重名的方法,但是参数列表(int a, String b)不能相同

  • 参数个数
  • 参数类型
  • 参数顺序

注意

一般构造方法都会进行重载(一个类中可能包含多个属性值,当只需要给部分属性初始化的时候不需要调用不同的构造方法)



【学懂Java】(四)面向对象编程-2_局部变量_02

六.案例

一定要细细琢磨
public class Point {
int x;
int y;

//设置二维的坐标点
public void set(int xx,int yy){
x = xx;
y = yy;
}

public double calcDistance(Point p){
return Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
}

public void changePoint(Point p){
int a = p.x;
p.x = x;
x = a;
int b = p.y;
p.y = y;
y = b;
}

public void show(){
System.out.println("["+x+","+y+"]");
}

public static void main(String[] args) {
Point p1 = new Point();
p1.set(3,5);
Point p2 = new Point();
p2.set(2,4);
System.out.println(p1.calcDistance(p2));
p1.changePoint(p2);
p1.show();
p2.show();

}
}



















标签:Java,定义,构造方法,Point,int,学懂,面向对象编程,方法,public
From: https://blog.51cto.com/u_15796276/6020100

相关文章

  • java学习之生成CSV文件
    1.pom.xml文件 2.代码  ......
  • kettle 创建资源库 Java api DatabaseRepository
    创建资源库前置mysql数据库test核心代码KettleEnvironment.init();DatabaseMetadatabaseMeta=newDatabaseMeta("test-db","MYSQL","Native",......
  • 【学懂Java】(四)面向对象编程-1
    一.OOP:ObjectOrientedProgramming1.面向过程和面向对象面向过程面向对象区别事物比较简单,可以用线性的思维去解决事物比较复杂,使用简单的线性思维无法解决共同点1.面向......
  • java.lang.UnsupportedClassVersionError
    一般是版本不兼容Exceptioninthread"main"java.lang.UnsupportedClassVersionError:org/eclipse/swt/events/ShellListenerhasbeencompiledbyamorerecentver......
  • Java零基础09篇:while循环和案例
    文章目录​​一、while结构(掌握)​​​​while循环完整格式:​​​​while循环执行流程:​​​​示例代码:​​​​二、while循环练习-珠穆朗玛峰(应用)​​​​需求:世界最高山峰......
  • Java零基础07篇:switch语句以及案例
    文章目录​​一、switch语句结构(本阶段需要掌握)​​​​格式:​​​​执行流程:​​​​二、小练习-春夏秋冬​​​​需求:一年12个月分属于春夏秋冬4个季节,键盘录入一个月份,用......
  • Java零基础06篇:流程控制语句应用篇
    文章目录​​前言​​​​一、流程控制语句分类​​​​二、顺序结构​​​​三、分支结构之if语句​​​​if语句格式1:​​​​if语句格式2:​​​​if语句案例:奇偶数​​​......
  • mac M2 卸载java
    如果是brew安装卸载brewuninstalljava手动安装卸载sudorm-fr/Library/Internet\Plug-Ins/JavaAppletPlugin.pluginsudorm-fr/Library/PreferencesPanes/Ja......
  • java学习 javaz-001 Helloworld 第一个demo
    java学习javaz-001Helloworld第一个demo学习目标搞一个java的小demo,最后开发完成,双击bat文件可以执行,发给别人也可以执行。前期准备我的当前环境是win11所以我下的......
  • Java零基础08篇:for循环和案例
    文章目录​​一、for循环和案例​​​​循环:​​​​for循环格式:​​​​二、for循环练习-输出数据(应用)​​​​需求:在控制台输出1-5和5-1的数据​​​​三、for循环练习-求......