一、类

一、类的定义

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

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

二、类的编写

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. Docker PHP如何启用MySQL扩展

    我下载的镜像是PHP7版本:docker pull php:7.4.30-fpm,容器起名为php7 PHP镜像官方提供了帮助文档,其中提到了相关的命令,这里推荐一篇博客,该博客对于扩展的几个相关命令 ...

  2. C# .NET 常见DeepCopy 深度拷贝的性能对比

    先上结论 Method Mean Error StdDev Gen0 Gen1 Allocated JSONConvert 2,273.02 ns 43.758 ns 52.091 ns 0.6599 ...

  3. 【长文】带你搞明白Redis

    本文使用第一人称来介绍Redis 一.概述 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化 ...

  4. Kubernetes(五) Pod控制器详解

    Pod控制器详解 本章主要介绍Pod控制器的详细使用 1. Pod控制器介绍 在kubernetes中,按照pod的创建方式可以将其分为2类: 自主式pod:kubernetes直接创建出来的pod, ...

  5. adb连接安卓设备失败failed to start daemon

    adb连接安卓设备失败failed to start daemon Reference:https://blog.csdn.net/whshuo2010/article/details/5109449 ...

  6. power bi权限控制笔记

    power bi权限控制:power bi权限控制角色目前只能在desktop 客户端进行创建.报表进行权限控制后,用于行级别安全,需注意:a.对数据集做行级别安全性的角色分配 b.需要进行报表的共享 ...

  7. linux 清理 pyinstaller 打包程序运行留下的临时文件

    前言 pyinstaller 打包的 python 二进制可执行程序运行的时候,会在 /tmp 目录下生成 _MEI* (*指的是随机数字)文件夹, 如果程序没有正常退出或者终止了,_MEI* 文件夹 ...

  8. 洛谷P1004

    洛谷P1004方格取数 题目大意 本题简要意思就是一个人从一个数字矩阵的左上角走到右下角,只能向下和向右走,拿完的数对应位置变成0,并且这个人要走两次,需要计算两次所拿数的最大值 Train of t ...

  9. oeasy教您玩转vim - 9 - # 换行插入

    插入新行 回忆上节课内容 上上次是 i.I 在光标前面插入 又加了 a.A 可以在光标后面插入 a 是在光标后插入 A 是在当前行最后插入 关于插入,还有什么命令吗? 我们继续去查阅 help :h ...

  10. CF479C 题解

    洛谷链接&CF 链接 题目简述 一个人想要安排期末考试的时间. 有 \(n\) 场考试,每场考试有两个时间 \(x_i,y_i\),一个是老师规定的时间,另外一个是他与老师商量好的考试时间. ...