(1)类:蓝图和模板。Java中所有的类都源于Onject类

(2)类与类之间的关系

依赖(use-a):类A方法中使用了另外一个类B对象b,则类A依赖于类B

聚合(has-a):类A的对象包含类B的的对象

继承(is-a):承上,扩展

(3)注意对象与对象变量之间的区别

Date bir = new Date();

bir 是对象变量,而newDate()实在jvm堆中创建一个Date对象。当对象变量没有指向任何对象引用 时候(或者对象指向null的时候),不能调用调用方法。如下例子:

Date deadline;//deadlinedoesn't refer to any object

String s = deadline.toString();//error

编译器将会报错,因为deadline没有指向任何对象。一个对象变量并没有实际包含一个对象,而是仅仅 引用一个对象。在Java中任何对象变量的值都是对存储在另外一个地方的一个对象的引用。New操作 符的返回值也是一个引用。

局部变量不会自动地初始化为null,必须通过调用new(创建对象)或者设置为null进行初始化(在 Java中,null值表示引用不指向任何对象)

(4)在Java中源文件名必须和public类名的名字相匹配。在一个源文件中只有一个public类,任意多个 非public类。

(5)可以这么认为Java编译器内置了Unix的make功能

(6)不要编写返回可变对象引用的方法。这会破坏封装行,使得外部有机会更改内部对象

class Emloyee{

private Date hireDate;

public Date getHireDay(){

return hireDate;

}

}

上面这个类破坏了封装性,使得外部类可以获得内部对象hireDate的引用,从而改变其值。

Emloyee harry = ....;

Date d = harry. GetHireDay();

d.setTime(**^*^*(*^);

此时d和harry引用了同一个对象,外部的类可以更改其值,破坏了封装性。

如果需要返回一个可变对象(mutable)的引用,应该首先对它进行克隆(colone)。对象克隆是指存 放在另外一个位置上的副本

(7)如果一个对象的实例域为final,构建对象时必须初始化这样的实例域。即final的实例域必须在构造方 法执行后被初始化,并且初始化之后不能被修改。final大多应用于基本类型域和不可变(immutable)类 的域(如String类)

(8)静态域和静态方法

静态域:如果在类中的域定义为static,则该域属于整个类的,所有该类的实例共享该域

静态常量:由final和static共同修饰的域,静态常量用的还是比较多的,比如如下例子

public class Math{

….

public static final doublePI=3.1415926;

}

静态方法:可以认为静态方法是没有this参数的方法,因为静态方法不能操作对象,所以不能在静态方 法中访问实例域,因为实例域属于对象/实例,静态方法可以访问自身类中的静态域。静态方法可以两 种方法调用:类名.方法名和对象名.方法名,但是建议用前者。静态方法一种常见的用途:用于工厂方 法(例子相见参考书籍p118页)。main方法就是个static方法,该方法不对任何对象进行操作,事实 上在程序启动时还没有任何对象,静态的main方法将执行并创建程序所需要的对象

(9)

Java中的方法参数总是按值调用,方法得到的总是参数数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容

(10)

重载解析(overloadingresolution):编译器匹配函数参数类型和个数的过程。

(11)

类中的域如果没有在构造函数中显示的赋予初值,那么类会赋予域默认初值:数值型为0,布尔型为false,对象引用变量为null(局部变量不会,只有类域有默认的初值)

如果不管调用什么构造函数,都想要执行相同的赋值操作,则可以在类中这样设计(这是一个好的设计习惯)。如下两种方式

class A{

private String name=”I Love You”;

…..

}

class B{

private String name=getName();

…..

}

一个类中,有多个构造器,而且构造器之间可以相互调用,调用形式为this(...).

Class C{

public C(){

….

String s =”swenskfgv”;

this(s);

}

public C(String s){

}

}

初始化数据域还有第三种方法:初始化快(initializationblock)

class D{

private int x;

private string str;

private Date date;

//object inialization block

{

x=100;

str=””;

date=null;

}

}

(12)调用构造器的处理步骤

所有数据都初始化为默认值

按照类声明中出现的次序,一次执行所有域初始化语句和初始化块

如果构造器第一行调用了第二个构造器,则先执行第二个构造器主体

再执行本构造器主题

(13)对于静态域可以采用两种方式初始话

private static int nextId = 1

static {

Random generator = new Random();

nextId = generator.nextInt(10000);

}

所有静态初始化语句以及静态初始化快都将依照类定义的顺序执行

(14)package的作用:一、方便组织管理自己的代码,二、确保类名的唯一性。

一个类可以使用同一包中的所有类。在包中定位类是编译器(compiler)的工作。类文件中的字节码使用完整的报名来引用其他类

如果没有在源文件中放置package语句,这个源文件中的类就被放置在一个默认的包中(defaultpackage)。默认包是一个没有名字的包

参考文献

《Java核心技术》卷一Cay S.Horstmann Gary Cornell等著机械工业出版社

http://blog.sina.com.cn/s/blog_5ceb10ad0100y39u.html

Java 类对象基础知识--科普相关推荐

  1. java面相对象基础知识1

    什么是面相对象 用人的世界观去改变计算机的世界观(人的想法,让计算机按照人的思维去实现出来) 1.1 对象 (万物皆对象) 静态:说明是什么 动态:说明做什么 1.2. 类 具有相同属性(静态)和行为 ...

  2. Java基于对象基础 基于对象和面向对象的区别(转)

    Java基于对象基础 基于对象和面向对象的区别 JavaScript设计者想把javascript语言设计成基于对象(object-based)的语言,他想把这个与面向对象(object-orient ...

  3. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  4. 第76节:Java中的基础知识

    第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...

  5. Java核心技术卷一基础知识第10版demo实例

    Java核心技术卷一基础知识第10版demo实例 第三章 JAVA的基本程序设计结构 3.7输入与输出 3.7.1读取输入 3.8控制流程 3.8.3循环 3.10数组 3.10.6多维数组 第四章 ...

  6. java的一些基础知识(引用BlogJava 落花飞雪)

     java的一些基础知识(引用BlogJava 落花飞雪) <Practical Java>笔记 1. 声明是什么? String s = "Hello world!" ...

  7. java to go 基础知识与区别入土指南

    java to go 基础知识与区别入土指南 文章目录 java to go 基础知识与区别入土指南 @[toc] 基础篇 关于基础类型 关于复合数据类型 关于切片 关于Map 关于sync.map ...

  8. 【Java】【基础知识】【Java的基本使用】

    [Java][基础知识][Java的基本使用] 基于jdk8 仅个人理解,或有疏漏 基于 java疯狂讲义 第三版和第四版 java核心技术卷一 第十版和第十一版 廖雪峰java课程 一.基本数据与结 ...

  9. Java 网络编程基础知识

    Java 网络编程基础知识 基础概念 计算机网络的基本概念 ​ 网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络. ​ 网络设备:集线器(HUB),路由器,交 ...

  10. 计算机单招基础知识试题,高职单招《计算机类专业基础知识》正式试卷

    高职单招<计算机类专业基础知识>正式试卷 20XX年高考<计算机类专业基础知识>试卷 一. 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确回答的序号填在题干的 ...

最新文章

  1. 寻找人机之间的中间地带-评述3本人机协作的书
  2. tomcat 5.5 jdbc myeclipse8.0
  3. linux实时信号与sigqueue函数编程实例
  4. 导出Excel神器最终版
  5. 女人跳槽:最重要的是你的独立,你的快乐
  6. 唤醒计算机运行此任务_如何停止Windows 8唤醒计算机以运行维护
  7. 如何设置MySQL的环境变量
  8. 《开源硬件创客——15个酷应用玩转树莓派》——第1章 初识树莓派
  9. 02-windows下elasticsearch安装elasticsearch-head
  10. react-native viewpager用法
  11. cenyos7安装 yum不可用_小区阳台隐形网横管不可用扁管,要改再去安装,还有问题...
  12. realme怎么互传_分享照片和视频 手机互传如何轻松搞定?
  13. 游戏本地化翻译有哪些内容需要注意
  14. MGTV提取Ticket-保姆级教程
  15. MTK6737 WCN省晶体问题
  16. python转cython_说说cython的缺点
  17. Unity开发--进入游戏大厅时游戏中常用的弹窗管理
  18. 和利时PLC主从站通讯
  19. 塔式、刀片和机架:三种类型的服务器介绍
  20. dhu 2.3 阿姆斯特朗数

热门文章

  1. SILKY MIRACLE宣布奚梦瑶为品牌代言人
  2. [c++]数组的逆输出
  3. Matlab2019b中配置最小均方误差滤波器(dsp.LMSFilter)详细设置
  4. 只有一个文件的开源富文本编辑器,麻雀虽小五脏俱全就是它了
  5. sentinel实现秒杀活动
  6. R的可视化以及ggplot2
  7. PSNR、SSIM、BD-rate和BD-PSNR
  8. 【RDMA】RDMA SEND/WRITE编程实例(IBV Verbs )
  9. matlab光斑中心,Matlab学习手记——二维高斯曲面拟合法定位光斑中心
  10. 基于MATLAB的激光光斑图像处理算法