定义类

  1. class Book { // 定义一个新的类
  2. String title; // 书的名字
  3. double price; // 书的价格
  4. /**
  5. * 输出对象完整信息
  6. */
  7. public void getInfo() { // 此方法将由对象调用
  8. System.out.println("图书名称:" + title + ",价格:" + price);
  9. }
  10. }
对象定义格式
  1. 格式一:声明并实例化对象
  2. 类名称 对象名称 = new 类名称 () ;
  3. 格式二:分步完成
  4. 声明对象:类名称 对象名称 = null ;
  5. 实例化对象:对象名称 = new 类名称 () ;
  6. 操作类结构:
  7. 对象.属性:表示要操作类中的属性内容;
  8. 对象.方法():表示要调用类中的方法。
使用类 —— 在主类中使用Book类
  1. class Book { // 定义一个新的类
  2. String title; // 书的名字
  3. double price; // 书的价格
  4. public void getInfo() { // 此方法将由对象调用
  5. System.out.println("图书名称:" + title + ",价格:" + price);
  6. }
  7. }
  8. public class TestDemo {
  9. public static void main(String args[]) {
  10. Book bk = new Book() ; // 声明并实例化对象
  11. bk.title = "Java开发" ; // 操作属性内容
  12. bk.price = 89.9 ; // 操作属性内容
  13. bk.getInfo() ; // 调用类中的getInfo()方法
  14. }
  15. }
  16. 程序执行结果:
  17. 图书名称:Java开发,价格:89.9
对象内存分配

类本身属于引用数据类型,对于引用数据类型的执行分析就必须结合内存操作来看,首先给出读者两块内存空间的概念

  • 堆内存(heap):保存每一个对象的属性内容,堆内存需要用关键字new才可以开辟,如果一个对象没有对应的堆内存指向,那么将无法使用;
  • 栈内存(stack):保存的是一块堆内存的地址数值,可以把它想象成一个int型变量(每一个int型变量只能存放一个数值),所以每一块栈内存只能够保留一块堆内存地址;

内存分析图

声明两个对象
  1. public class TestDemo {
  2. public static void main(String args[]) {
  3. Book bookA = new Book() ; // 声明并实例化第一个对象
  4. Book bookB = new Book() ; // 声明并实例化第二个对象
  5. bookA.title = "Java开发" ; // 设置第一个对象的属性内容
  6. bookA.price = 89.8 ; // 设置第一个对象的属性内容
  7. bookB.title = "JSP开发" ; // 设置第二个对象的属性内容
  8. bookB.price = 69.8 ; // 设置第二个对象的属性内容
  9. bookA.getInfo() ; // 调用类中的方法输出信息
  10. bookB.getInfo() ; // 调用类中的方法输出信息
  11. }
  12. }
  13. 程序执行结果:
  14. 图书名称:Java开发,价格:89.8
  15. 图书名称:JSP开发,价格:69.8
分步的方式实例化对象
  1. public class TestDemo {
  2. public static void main(String args[]) {
  3. Book bk = null; // 声明对象
  4. bk = new Book(); // 实例化对象(开辟了堆内存)
  5. bk.title = "Java开发"; // 操作属性内容
  6. bk.price = 89.9; // 操作属性内容
  7. bk.getInfo(); // 调用类中的getInfo()方法
  8. }
  9. }
  10. 程序执行结果:
  11. 图书名称:Java开发,价格:89.9
分步实例化对象

对象引用传递
  1. public class TestDemo {
  2. public static void main(String args[]) {
  3. Book bookA = new Book() ; // 声明并实例化第一个对象
  4. Book bookB = null ; // 声明第二个对象
  5. bookA.title = "Java开发" ; // 设置第一个对象的属性内容
  6. bookA.price = 89.8 ; // 设置第一个对象的属性内容
  7. bookB = bookA ; // 引用传递
  8. bookB.price = 69.8 ; // 利用第二个对象设置属性内容
  9. bookA.getInfo() ; // 调用类中的方法输出信息
  10. }
  11. }
  12. 程序执行结果:
  13. 图书名称:Java开发,价格:69.8
深入观察引用传递
  1. public class TestDemo {
  2. public static void main(String args[]) {
  3. Book bookA = new Book() ; // 声明并实例化第一个对象
  4. Book bookB = new Book() ; // 声明并实例化第二个对象
  5. bookA.title = "Java开发" ; // 设置第一个对象的属性内容
  6. bookA.price = 89.8 ; // 设置第一个对象的属性内容
  7. bookB.title = "JSP开发" ; // 设置第二个对象的属性内容
  8. bookB.price = 69.8 ; // 设置第二个对象的属性内容
  9. bookB = bookA ; // 引用传递
  10. bookB.price = 100.1 ; // 利用第二个对象设置属性内容
  11. bookA.getInfo() ; // 调用类中的方法输出信息
  12. }
  13. }
  14. 程序执行结果: 图书名称:Java开发,价格:100.1
引用传递与垃圾产生

Java基础_0302:类和对象的更多相关文章

  1. java基础知识—类和对象

    1.对象的特征---类的属性 每个对象的每个属性都有特定的值 对象的操作---类的方法 2.封装 对象同时具有属性和方法两项属性. 对象的属性和方法同时被封装在一起,共同体现事物的特性,二者相辅相成, ...

  2. Java基础教程——类和对象

    视屏讲解:https://www.bilibili.com/video/av48272174 面向过程 VS 面向对象 面向过程:强调步骤. 面向对象:强调对象. 面向对象的特点就是:隐藏具体实现的细 ...

  3. Java基础-3类和对象声明与创建

    一).在1和2中有粗略介绍过类和对象的概念,在这里简单回顾一下: 对象与类:一个实际或者虚拟的物体,这个物体既是我们的对象,这个物体呢又是属于一个分类,如动物类,人类 二).创建对象: 在创建对象的时 ...

  4. Java基础IO类之对象流与序列化

    对象流的两个类: ObjectOutputStream:将Java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutputStrea ...

  5. 【BigData】Java基础_类和对象的基本使用

    1.需求描述 ①定义一个学生类,然后根据该类创建3个具体的学生对象 类中包含信息:学生姓名.学号.年龄.性别.所在地址 ②将这三个学生对象存入到数组中 ③然后将数组对象按照学生的年龄倒序排序 2.代码 ...

  6. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  7. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  8. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  9. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  10. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

随机推荐

  1. NPOI的一些基本操作

    1,创建一个Excel //创建一个工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); //创建一个页 ISheet sheet = workbook.Cr ...

  2. windows中用bat脚本更改环境变量

    机房同传了新的系统,不使用dev的话每次开机都要重新更改环境变量(其实也可以在编译命令里添加绝对路径).所以就去学习了一下用bat脚本更改path.以便每次开机可以一键更改添加环境变量 wmic en ...

  3. Summary of Java basics review data

    1.标识符      用于命名程序的对象,如方法名,变量名,规则是: a.大小写敏感 b.由英文字符,文字字符,美元符号,下划线和数字组成,但不能以数字开头 c.不能是关键字 2.%:求余运算符    ...

  4. linux:awk修改输出分隔符

    file1的内容如下: a b c d e f g h 现在想要修改成 a b c:d e f g:h 则需要用到如下命令: awk -F " " '{print $1,$2,$3 ...

  5. binutils安装

    mkdir /tools/binutils -p //新建一个安装目录 .configure prefix=/tools/binutils make make install binutils工具就安 ...

  6. Redis的主从复制的原理介绍

    redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或 ...

  7. linux ------ 使用 screen 后 SSH 断开后程序依旧能在后台运行

    为什么ssh断开后你运行的进程会退出呢? 因为所有进程都得有个父进程.当你ssh到一个服务器上时,打开的shell就是你所有执行命令的父进程. 当你断开ssh连接时,你的命令的父进程就没了.如果处理不 ...

  8. Lucene的其他搜索(三)

    生成索引: package com.wp.search; import java.nio.file.Paths; import org.apache.lucene.analysis.Analyzer; ...

  9. SQL语法基础之CREATE语句

    SQL语法基础之CREATE语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.使用“?”来查看MySQL命令的帮助信息 mysql> ? CR ...

  10. Python基础01

    Python基础 1.Python介绍 2.安装 3.Hello World程序 4.变量 5.用户输入 6.表达式if ...else语句 7.表达式for 循环 8.表达式while 循环 9.数 ...