Java基础学习:4、类和对象及方法
类:事物的描述。是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。
对象:该类事物的实例。在Java中通过new进行创建。是一个真实世界中的实体。对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
1、类和对象内存分配机制:
栈:一般存放基本数据类型(局部变量)。
堆:存放对象(Cat cat,数组等)。
方法区:常量池(常量如字符串),类加载信息。
2、创建对象内存图:

3、方法
public class Test4 {
  public static void main(String[] args) {
    Person person = new Person();
    person.cal1();
    person.cal2(5);
    // 将方法返回值赋给returnRes
    int returnRes = person.cal3(10,20);
    System.out.println(returnRes);
  }
}
class Person{
  int age;
  String name;
  /*
  1、public表示方法是公开
  2、void表示方法没有返回值return
  * */
  public void cal1() {  // 无参方法
    int sum = 0;
    for (int i = 0; i < 10; i++) {
      sum+=i;
    }
    System.out.println(sum);
  }
  public void cal2(int n) {  // 有参方法
    int sum = 0;
    for (int i = 0; i < n; i++) {
      sum+=i;
    }
    System.out.println(sum);
  }
  /*
  1、int表示方法执行后,返回一个int值。
  2、return表示把结果返回方法调用者
  * */
  public int cal3(int n1, int n2) {
    return n1 + n2;
  }
}
方法调用机制:
1、程序执行到方法时,会开辟一个独立空间(栈空间)。
2、当方法执行完毕,或者执行到return语句时,就会返回。
3、返回到调用方法的地方。
4、返回之后,继续执行方法后面的代码。
5、当main方法执行完毕,整个程序退出。
方法注意事项和使用细节:
方法定义格式:访问修饰符 返回数据类型 方法名()
public int getsum(int n1, int n2)
1、访问修饰符:作用是控制方法的使用范围,四种(public、protected、默认、private)。
2、返回类型:可以为任意类型,包含基本类型以及引用类型(数组、对象)。
3、如果需要返回:则方法体最后的语句必须为 return 值,而且返回值类型和return值类型一致。
4、如果是 void,则方法体可以没有return,或者只写 return。
5、void方法:里面可以传入不同类型的参数:public void prints(int n, String name)
6、方法不允许嵌套方法。
方法调用注意事项:
1、同一个类中的方法可以直接调用,不用创建对象来调用。
2、跨类调用方法需要通过创建对象使用对象名来调用。
3、跨类调用方法和方法的访问修饰符有关。
成员方法传参机制:
1、基本数据类型的传参:
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参。
下面程序中,swap方法里面形参进行了数据交换,但是不会影响主方法中的实参。
  public static void main(String[] args) {
    Person person = new Person();
    int n1 = 10;
    int n2 = 20;
    person.Swap(n1,n2);
    System.out.println("n1为:" + n1 + "\t" + "n2为:" + n2); // n1 = 10; n2 = 20
  }
}
class Person{
  public void Swap(int n1, int n2) {
    int temp;
    temp = n1;
    n1 = n2;
    n2 = temp;
    System.out.println("n1为:" + n1 + "\t" + "n2为:" + n2); // n1=20; n2=10
  }
}
 
  
2、引用数据类型传参:
引用数据类型传递的是地址(传递的也是值,但是值是地址),可以通过形参影响实参。
  public static void main(String[] args) {
    Person person = new Person();
    person.age = 10;
    person.name = "张三";
    Persons persons = new Persons();
    persons.test(person);
    System.out.println(person.age);  // 1000
  }
}
class Person {
  int age;
  String name;
}
class Persons {
  public void test(Person p) {
    p.age = 1000;
  }
}

------------恢复内容结束------------
Java基础学习:4、类和对象及方法的更多相关文章
- Java基础学习笔记-类与对象
		对象 名称唯一 属性.数据区(值) 方法.功能 类 在软件中,类是一个模板,定义了一类事物的状态和行为 类是一种抽象的复合数据类型 类与对象的关系,这个跟JS也差不多 类和对象之间是抽象和具体的关系. ... 
- 零基础学习python_类和对象(36-40课)
		今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ... 
- Java基础 之二 类和对象
		1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ... 
- java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列
		1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ... 
- Java基础学习笔记-类的静态属性和静态方法--待继续补充
		程序运行时的内存占用 代码区(code area) 存放代码 数据区(data area) 存放全局数据.静态数据 堆区(heap area) 存放动态申请的数据 栈区(stack area) 存放局 ... 
- JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
		一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ... 
- Java基础_0302:类和对象
		定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ... 
- Java基础学习(二)——对象
		类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法): 对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象. 对象=实例 对象 ... 
- Java基础学习总结(1)——equals方法
		一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 package cn.galc.test; public class TestEquals { public static vo ... 
- java  基础知识九   类与对象
		java 基础知识九 类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ... 
随机推荐
- CesiumJS PrimitiveAPI 高级着色入门 - 从参数化几何与 Fabric 材质到着色器 - 上篇
			目录 0. 基础 0.1. 坐标系基础 0.2. 合并批次 1. 参数化几何 1.1. 几何类清单 1.2. 举例 1.3. 纯手搓几何 1.4. *子线程异步生成几何 2. 使用材质 2.1. 外观 ... 
- 【ccc】为了ds的ccc2
			作业: #include <stdio.h> #include<string.h> int main(){ char s[100]; gets(s); int len; len ... 
- 还不来了解ChatGPT?免费账号
			可以查看这里给大家提供了一些免费的账号供大家尝试 note.youdao.com/s/OvxaLZiF ChatGPT作为最近火遍互联网的AI项目,获得了大家空前的关注,短短两个多月注册人数破 ... 
- 聊一聊HTTPS双向认证的简单应用
			目录 背景 准备工作 ASP.NET Core nginx 反向代理 IIS 部署 总结 参考资料 背景 在三方接口对接中,偶尔会遇到需要传递证书的情况,这种方式其实是在SSL握手过程中会同时验证客户 ... 
- 【TS】函数重载--可选参数--默认参数
			可选参数--默认参数 在ts中定义的数据类型,某些情况下只需要传入定义数据类型的一部分参数,比如:id .name.age.address,此时需要修改用户的名称,那么只需要传入id.name就够了: ... 
- dvwa靶场搭建
			安装 root@kali:~# apt -y install apache2 mariadb-common mariadb-server php php-mysql php-gd root@kali: ... 
- JZOJ.4724 斐波那契
			\(\text{Problem}\) \(\text{Solution}\) \(\text{Fibonacci}\) 数列有一个性质:若 \(H_1=a,H_2=b,H_n=H_{n-2}+H_{n ... 
- 【CQOI2011】动态逆序对
			分析 近乎裸的 \(cdq\) 分治数点问题 我们考虑一个数被删去,它对删后区间逆序对个数的影响就是减去现存序列中前面比它大的个数再减去现存序列中后面比它小的个数 那么我们考虑如何处理时间限制 既然是 ... 
- [专题总结]Gridea快速免费搭建个人博客
			介绍 或许你很想把你所知道的问题写出来,或许你文思泉涌,想给大家分享.我相信,你一定能写好博客,只要坚持,就可以了. 或许大家会不理解,为什么不用大平台的博客呢?或许你稍微了解就会知道,现在的博客平台 ... 
- LeetCode算法训练-回溯总结
			欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-回溯总结 适用问题 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排列,有几种排列方式 切割问题:一个字符串按 ... 
