首页 > 编程语言 >java学习日记20230310-类与对象

java学习日记20230310-类与对象

时间:2023-03-11 23:22:25浏览次数:39  
标签:20230310 java 对象 数据类型 调用 参数 类型 方法 日记

类与对象

  • 类:自定义的数据类型:类是抽象的,概念的,代表一类事务,即是数据类型;
  • 对象(属性,行为:具体的实例):具体的,实际的,代表一个具体事物,即是实例;
  • 类是对象的模版,对象是类的一个个个体,对应一个实例;

java设计者引入类与对象OPP

 

  

 

从概念上或者叫法上来看,成员变量 = 属性 = 字段

属性是类的一个组成部分,一般是基础数据类型,也可以是引用类型(对象,数组)

  • 属性的定义语法同变量,示例: 访问修饰符,属性名称,属性名:
    • 访问修饰符:控制属性的访问范围:
      • public
      • protected
      • 默认
      • private
  • 属性的定义类型可以是任意类型,基本数据类型和引用类型
  • 属性如果不赋值,有默认值,规则和数组一致
  • 真正的对象在堆和方法空间中,栈中是引用

创建对象的形式

  • 先声明在创建 :Cat cat;cat = new Cat();
  • 直接创建:Cat cat = new Cat();
  • 访问对象属性:对象.属性。 cat.name;

类与对象的内存分配机制

引用传递/地址拷贝

类和对象的内存分配机制

 

  • 栈:一般存放基本数据类型和局部变量
  • 堆:存放对象(数组等)
  • 方法区:常量池(常量,比如字符串),类加载信息

  java创建对象简单流程分析:

  1. 先加载类信息(只会加载一次);
  2. 分类堆空间,进行默认初始化;
  3. 把堆的地址赋给对象;
  4. 进行指定初始化;

  对象=null;会把栈指向堆的连接断掉;

成员方法:简称方法:

  • public 表示方法是公开的;
  • void 表示方法没有返回值;
  • ()表示形参列表,可以接收调用的输入
  • {}表示方法体
  • 方法写好后不去调用是不会执行的
  • public int getSum(){ return res} //public 表示方法访问范围,int表示方法返回值  return表示返回值 

 方法的调用机制:

   1.当程序执行到方法时,就会开启一个独立的空间(栈空间);

   2.当一个方法执行完毕/执行return语句时,就会返回;

   3. 返回到调用方法的地方;

   4.返回后,继续执行后面的代码;

   5.当main方法执行完毕后,整个程序退出;

   

 

  可以将实现的细节封装起。

 

     成员方法的定义:

  1.访问的范围;

  2.返回值类型;

  3.方法名;

  4.参数列表;

  5.方法主体;

  6.方法返回值;

 

注意事项:

  • 一个方法最多有一个返回值;(可以返回数组)
  • 返回类型可以是任意类型,包括基础数据类型和引用数据类型(数组和对象)
  • 如果方法要求有返回值,则方法体中必须有return + 值,而且返回值类型和return后的值必须兼容或相同
  • 如果方法是void,则可以没有return或者return结束;
  • 在实际工作过程中,方法是为了完成某个功能,所以方法名一定要有含义,最好是见名知意,遵循驼峰命名法;
  • 参数列表:
    • 一个方法可以有0个参数,也可以多个参数,用英文逗号间隔;
    • 参数类型可以是任意类型,基本类型,引用类型;
    • 调用带参数的方法时,一定对应着参数列表传入相同的参数或兼容类型的参数;
    • 方法定义时的参数称为形式参数,简称形参;方法调用时的参数为实际参数,简称实参;形参和实参的类型要一致或兼容,顺序和个数保持一致;
  • 方法体:里面写完成具体功能的语句,可以为输入,输出,变量,运算,分支,循环,调用方法,但里面不能再定义方法,即方法不能嵌套定义;
  • 方法调用:
    • 同一个类中的方法调用,可以直接调用;
    • 跨类中的方法调用,需要通过对象名调用,比如 对象名.方法名(参数)
    • 跨类的方法调用和方法的访问修饰符相关
  • 方法的传参机制
    • 基于基本的数据类型,传递的是值拷贝,形参的改变不会影响实参;
    • 引用类型:引用类型传递的是地址,可以通过形参影响实参;

      标签:20230310,java,对象,数据类型,调用,参数,类型,方法,日记
      From: https://www.cnblogs.com/DragonJack/p/17205386.html

相关文章

  • java 枚举类
    1.枚举概念:一个类中对象是可数的就是枚举2.枚举关键字:enum枚举类名3.枚举的常用方法:获取枚举值 3.1枚举类名称.对象名称3.2枚举类名称.values......
  • Java ConcurrentModificationException异常原因和解决方法
    场景对ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。出现异常的代码://删除非此退货单对应的货位f......
  • java的数据和表达式
    一、基本语法元素1.空白和注释及语句(1)空白:换行符、回车符、空格键、水平定位键(Tab)编译器会忽略掉多余的空白作用:增加程序的易读性(2)注释:主要作用是将代码解释其功......
  • Java 基础 - 线程的全部方法,线程池的使用
    1.线程的全部方法静态方法:staticThreadcurrentThread():返回当前线程staticvoidyield():把当前线程的执行权让给优先级更高或相对的线程staticvoidsleep(longmill......
  • 03-java下载
    #java版本javase标准版javaME嵌入式。手机,小家电。————没人学javaEE企业级开发![](https://img2023.cnblogs.com/blog/1552841/202303/1552841-202303......
  • java SE 八股2
    1.hashmaphashmap不是线程安全,若要线程安全使用concurrenthashmap.hashtable是为了和老代码兼容。(1)HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到......
  • 【java基础】java的强引用、弱引用、软引用、虚引用
    前言Java执行GC(垃圾回收)判断对象是否存活有两种方式,分别是引用计数法和引用链法(可达性分析法)。引用计数:Java堆中给每个对象都有一个引用计数器,每当某个对象在其它地......
  • java生态下的后端开发都有哪些技术栈?
    前言    我08年毕业,大学跟着老师培训学习的C#,那时(2003-2010)它很是较时髦,毕业后就从事了winform窗体应用程序开发。慢慢的web网站兴起,就转到aps.net开发,再到后来就上......
  • nacos实现Java和.NetCore的服务注册和调用
    用nacos作为服务注册中心,如何注册.NetCore服务,如何在Java中调用.NetCore服务呢?可以分为下面几个步骤: 0.运行nacos 1.开发.netcore服务,然后调用nacos提供的.netcore......
  • 2023-03-11 Java中的动态数组
    类似C++中的vector,动态数组需要满足以下功能增(insert)删(remove)改(set)查(get和contain)支持泛型自动扩容和缩容上面的实现实际相当于JDK标准库中的java.util......