一、类

一、类的定义

具有同种属性的对象称为类。定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化。

类的三种常见成员:属性、方法、构造器

二、类的编写

1.类名的定义;

2.类属性(特性)的编写;属性 ( 成员变量 ) = 访问修饰符 + 数据类型 +变量名

//定义人类
public class Person{
public String name; //名字(属性)
public int age; //年龄(属性)
public String sex; //性别(属性)
}

3.类方法(行为)的编写。 方法 = 访问修饰符 + 返回值类型 +方法名 + 方法参数 + 方法体

public class Person{
public void study(){ //方法
System.out.println("Good good study, day day up!")
}
}

三、类的声明

类在使用前必须先声明然后才可以声明变量,创建对象

类声明语法如下:

[标识符] [修饰符] class 类名 {
//类的属性(特性)-名词(只定义和业务逻辑相关的代码)
//类的方法(行为)-动词(只定义和业务逻辑相关的代码)
}

四、实例

public class Person {
String name;
int age;
String sex; //定义一个学习方法
public void study(){
System.out.println("Good good study, day day up!");
} //显式编写一个空构造器
public Person() {
System.out.println("Person 空构造器");
} //编写一个带参数的构造器
public Person(String name, int age, String sex) {
this.name = name; //this.name代表Person中的属性name,= 后面的name代表构造器中的参数name
this.age = age;
this.sex = sex;
}
//方法重载
public Person(String name, int age) {
this.name = name;
this.age = age;
} public static void main(String[] args) {
Person p1 = new Person("二两客", 22, "Male");
System.out.println(p1.name + " " + p1.age + " " + p1.sex);
p1.study();
Person p2 = new Person("椰椰", 22);
System.out.println(p2.name + " " + p2.age);
p2.study();
}
}

二、对象

一、对象的定义

现实世界存在的任何事务都可以称之为对象。

二、对象的创建和使用

常见实例化对象的方式有四种:使用类创建对象(new)、cloae方法、反序列化、反射。

1.创建对象的格式:

类名 对象名 = new 类名([参数列表]);

Person person = new Person;

注:通过使用new运算符,一个类可以创建多个对象,每个对象被分配的不同的内存空间,改变一个对象的变量不会影响其它对象的变量。

   每个类都有一个不带参数的默认构造方法,当通过new运算符调用默认构造方法创建对象时,系统会自动初始化所分配的内存空间。对于数值变量,赋初值0,对于布尔变量,赋初值false,对于引用变量,赋予一个特殊的值null。

2.给对象的属性赋值:

对象名.属性名

person.name = "二两客";
person.age = 22;
person.sex = "男";

3.调用对象的方法:

[ 返回值类型 名字 = ] 对象名.方法名(参数列表)

注: [ ]内容可省略。

person.study();

三、实例

public class Person {
String name;
int age;
String sex; //定义一个学习方法
public void study(){
System.out.println("Good good study, day day up!");
}
}
public class Test {
public static void main(String[] args) {
// 创建对象
Person person = new Person();
// 设置属性
person.name = "二两客";
person.age = 22;
person.sex = "男";
//对属性进行提取
System.out.println(person.name);
System.out.println(person.age);
System.out.println(person.sex);
// 调用方法
person.study();
}
}

四、匿名对象

1.定义

匿名对象就是实例化没有名字的对象,指的是在创建一个对象时,只有创建的语句,却没有将其地址赋值给某个变量,

创建一个匿名对象:

//没有赋值给某个变量
new Person();

2.适应场景

1.只调用一次对象的方法时
new Person().study();
2.作为方法的实际参数或返回值时

3.特点

  • 匿名对象作为对象,也具有普通对象所有功能;

  • 每一次使用匿名对象,都是new出的新对象;

  • 匿名对象执行完毕后,由于没有其他引用,会被Java的垃圾回收机制判断为垃圾,进行自动回收。

五、对象的销毁

  1. 对象的销毁是指当对象使用完毕后,释放对象所占用的内存空间。

  2. Java对象的销毁是采用垃圾回收机制(Garbage Collection ------GC),自动回收不再访问的对象。

    • GC可以回收new 的对象,系统资源不能回收;
    • GC回收对象不是马上回收,而是在空闲时回收;
    • 调用System.GC(),不是立即回收程序员决定不了
  3. java 程序员不需要关注Java对象的销毁,只需要关注Java对象的创建(或实例化)——GC的作用

  4. Java对象被销毁后将不允许再访问该对象,这将导致运行时错误(或程序崩溃)。

Java类和对象 小白版的更多相关文章

  1. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  2. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

  3. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  4. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  5. java类和对象

    类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...

  6. JAVA——类与对象

    目录 类与对象 一.类 二.对象 2.1对象的内存布局形式 三.类与对象 3.1如何创建 3.2如何访问属性 3.2类与对象的分配机制 3.2.1Java内存的结构分析 注意事项和细节 类与对象 为什 ...

  7. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  8. JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  9. Java类与对象的基础学习

    1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); ...

  10. JAVA类与对象作业——动手动脑以及课后实验性问题

    一: 1.源代码 //MAO2015.10.6 //foo class Foo { int value; public Foo(int initValue) { value = initValue; ...

随机推荐

  1. 09-Python模块

    导入模块 通过import导入模块 import time #导入模块time time.sleep(50) #睡眠50s 导入模块并重命名 import time as t #导入模块time重命名 ...

  2. 处理 3d 视频的简单理论基础

    背景 公司产品需要满足一些带有3d功能的应用场景,需要需要懂得如何处理3d信号.之前在调试以前产品的时候,发现处理3d信号的时候,是由2个画面叠加起来的. 导言 3D视频(或3D信号)为什么是两个画面 ...

  3. openGauss集群主库出现流复制延迟告警

    问题描述:环境是openGauss 5.0集群,在一次意外重启数据库之后.收到了一个主库的主从延迟告警,只有从库才能出现延迟,主库怎么会出现了告警延迟 告警信息: Status: Resolved H ...

  4. test20230824总结

    A 怎么是重构树板子,放在图上都是水题. B 考场上只打了一个暴力,赛后发现似乎是很可做的 C 是一个考察状态设计的 dp 以后要多刷 D 是一道数据结构优化 dp 考场上写出来了却因为空间问题挂了 ...

  5. Nuxt框架中内置组件详解及使用指南(三)

    title: Nuxt框架中内置组件详解及使用指南(三) date: 2024/7/8 updated: 2024/7/8 author: cmdragon excerpt: 摘要:"Nux ...

  6. css 手稿

    CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...

  7. java 类的执行顺序

    java代码 package net.cybclass.sp; public class Test01 { public static void main(String[] args) { new c ...

  8. 推荐一枚宝藏Up主,顺便聊聊感想

    众所周知,B站是学习网站 最近发现一宝藏Up主,主要做科普,主题包括但不限于:大模型的底层算法.量子计算底层原理和硬件设计,以及其他物理或者自然科学主题,总体偏向于理工科. 值得推荐的理由:Up主对底 ...

  9. BigDecimal的精度与刻度

    BigDecimal是Java中用于高精度算术运算的类.当您需要精确地处理非常大或非常小的数字时,例如在金融计算中,它特别有用.由于众所周知得原因,Double这种类型在某些情况下会出现丢失精度的问题 ...

  10. oeasy教您玩转vim - 73 - # 映射map

    ​ 映射map 回忆上次缩写的细节 这次了解到了:abbrivate缩写 可以定义缩写 :ab o1z oeasy 这里面还可以包括方向键.回车键之类的东西 可以定义到指定的模式 iab cab 查看 ...