Java的一些基本概念和它们之间的关系

在CSDN中有个帖子问到下面四个问题,我估计帖子的斑竹是一个学生,他存在的问题其实困扰着很多初学java的人。这是因为,很多书上把概念都没有讲清楚。下面我把该斑竹的问题图贴出来,然后针对这位斑竹的4个问题给大家解释一下困扰java初学者的一些基本问题。


1、为什么要创建BubbleSort类的对象,不创建会怎样?
因为BubbleSort类里的方法都是实例方法(也就是没有用static修饰符修饰的方法),不是静态方法,而要是程序正真能够展示其功能,必须调用类的方法,实例方法只能通过对象调用,所以必须创建BubbleSort类的对象,例如:BubbleSort类里的sort方法只能用BubbleSort类的对象调用。当然如果不想创建对象就能调用类的方法,那么这些方法就必须是静态方法(也称为类方法),那么你在定义静态方法时必须在方法声明的方法类型前面用static修饰符修饰,这样就可以不用创建对象,直接用 类名.方法名 就可以调用静态方法了。
补充知识点:其实这个问题引出了两个基本概念和一个基本关系:

2、 什么是类?
类就是对客观事物抽象编码化后形成的面向对象编程语言的基本程序单位。就比如:设计汽车的图纸。类包含两大组成部分:
a. 属性(成员变量):通常是描述事物状态的。
b. 方法:通常是描述如何改变事物状态(属性)和事物行为方式的。

3、 什么是对象?
对象是指某个类的对象,按照类创建的实体,就比如:我们按照汽车设计图中生产出来的汽车。对象是某个类的个体,通常要用
new 类的构造方法();
创建类对象。

4、 类与对象有什么关系?
类与对象的关系有点类似我上面举的例子:设计图纸与实体的关系,类是对象的模板,对象是按照模板生成出来的实体;也可以理解为:类是集合,对象是个体。

5、sorter是什么意思?
准确的说:sorter是声明的一个BubbleSort类的变量,也被称为对象名,它也是一个BubbleSort类对象的引用(指向BubbleSort类对象的地址),同时在这一句里:BubbleSort sorter = new BubbleSort();也用 new BubbleSort()创建了一个ubbleSort类对象,并通过赋值符号“=”让ubbleSort类对象的引用sorter指向了该对象。
补充知识点:其实这个问题引出了三个基本概念和一个基本关系:
6、 什么是对象?
什么是对象请参看上一题的回答。

7、什么是实例变量?
实例变量是属于对象的,是在对象创建的时候在堆中按照类里定义的实例成员变量模板生成的变量,会随着对象生命周期的结束而消失(生命周期结束),一个类的每个对象的实例成员变量都是不同的变量,它们在堆内存中要分配不同的内存空间。实例成员变量在声明的时候不能用static修饰符修饰。实例变量使用【对象名】引用。

8、什么是类变量?
类变量是与实例变量相对的,类变量是在类被调入方法区的时候产生,它的生命周期伴随着程序结束而结束,它不会为每个对象生成不同的变量,因此,不会在创建对象时在堆中为其分配内存。类变量必须在声明的时候用static修饰符修饰。类变量使用【类名】引用,也可以用【对象名】引用。

9、类变量与对象有什么关系?
类变量与对象没关系,不会因为对象的创建而产生,所以类变量对于所有对象其值都是一样的。

10、第一个for语句为什么从下标1开始?不应该从0开始吗?
这时排序算法的独特地方,因为1个元素不需要排序,我们就认为其是有序的,所以从第二个元素进行冒泡。

11、showArray是什么意思?
showArray是一个实例方法,它是用于把传入的实际参数数组输出到显示器上的实例方法。

5、什么是实例方法?
类中没有被static修饰的方法,只能由【对象】引用。

6、什么是类方法?
类方法是由static修饰的方法,可以由【类名】引用,也可以由【对象】引用。

7、类方法与实例方法有什么区别?
请参看类方法与实例方法的区别

Java的一些基本概念和它们之间的关系相关推荐

  1. 计算机时钟周期的概念,时钟周期、机器周期、指令周期的概念及三者之间的关系...

    时钟周期.机器周期.指令周期的概念及三者之间的关系 帖子创建时间:  2012年12月31日 16:49 评论:0 时钟周期.机器周期.指令周期的概念及三者之间的关系 时钟周期 时钟周期也称为振荡周期 ...

  2. 一次性掌握JDK、JRE、JVM的概念以及三者之间的关系【2021整理】

    一.JDK.JRE.JVM概念解析 JDK(Java Development Kit):Java开发工具包,开发人员用来构建Java应用程序的软件包. JRE(Java Runtime Environ ...

  3. 【linux】图形界面基础知识(X、X11、GNOME、Xorg、KDE的概念和它们之间的关系)

    转载自:https://blog.csdn.net/zhangxinrun/article/details/7332049 简介 LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间 ...

  4. spring boot 菜鸟教程学习:spring是一个超级大工厂能够管理java对象(bean)和他们之间的关系(依赖注入)

    springboot的java对象叫做bean 用一个叫依赖注入的方法来管理bean的依赖关系 说白了 就是bean是节点 依赖注入能够构建节点之间的关系 创建bean的三种方式 如何依赖注入?

  5. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  6. 离散数学(4)——集合的概念和集合之间的关系、集合的运算、基本的集合恒等式

    一.集合的表示 列举法:列出集合中的全体元素,元素之间用逗号分开,然后用花括号括起来 描述法:用谓词P(x)表示x具有性质P,用{x|P(x)}表示具有性质P的集合 注意事项:集合中的元素是各不相同的 ...

  7. Java多线程2.3.生产者与消费者之间的关系2

    生产者与消费者之间的关系 1.线程间通信问题描述图 2.线程的状态转换图及常见执行情况 3.等待唤醒机制思路图解 4.线程的生命周期

  8. 指令周期、机器周期、时钟周期的概念及三者之间的关系

    指令周期: CPU每 取出 一条指令并 执行 这条指令,都要完成一系列的操作,这一系列操作所需要的时间通常叫做一个指令周期.换言之指令周期是取出一条指令并执行这条指令的时间.由于各条指令的操作功能不同 ...

  9. java 正方形_java-确定正方形和矩形之间的关系的算法

    我需要找到一种确定正方形和矩形之间关系的算法.它必须能够确定是否: >正方形完全在矩形内 >正方形部分位于矩形内(重叠) >正方形的角仅接触矩形的角 >正方形的边缘在矩形的边缘 ...

最新文章

  1. NUnit2.0详细使用方法
  2. subversion commit 报错A checksum mismatch occurred
  3. 每个用户做独立的线程同步
  4. Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
  5. leetcode513. 找树左下角的值(dfs)
  6. (三)Neo4j自带northwind案例--Cypher语言应用
  7. ZeroC ICE源代码中的那些事 - 嵌套类和局部类
  8. springboot+Druid+mybatis整合
  9. 如何在rul中添加图片
  10. 如何在Shell脚本中使用if-else?
  11. JS base64 加密和 后台 base64解密(防止中文乱码)
  12. jq 判断手机端还是PC端
  13. Softing dataFEED系列--将现场设备集成到西门子工业物联网解决方案
  14. 如何将chm格式转换成HTML网页格式
  15. 虚拟机的安装以及红帽子企业版5安装
  16. ios 系统状态栏样式修改_iOS_状态栏字体颜色修改(完美解决)
  17. ceph cluster client(RBD)
  18. HMS-广告服务(Banner广告)
  19. 现代信号处理笔计 4 线性估计
  20. Dropbox一款很实用的个人文件同步利器

热门文章

  1. html5手指测速,网速html5网速测试进度条代码
  2. truncate表后恢复方法总结
  3. 基于QT的串口调试助手
  4. 不同类型的电机的工作原理和控制方法汇总
  5. Atari 游戏训练 -- 2. 基于jupyter,图片处理 + state更新 + 经验回放数据初始化
  6. 基因表达分析(上)- 差异表达分析
  7. 瑞芯微rk356x板子快速上手
  8. 【Axure】使用中继器实现登陆注册功能
  9. 通过QQ号获取QQ昵称、头像等信息
  10. 前端HTML学习总结