java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样。而

一个源文件中只能有一个public的类,类名的首字母通常为大写。

使用public修饰的类可以被外部程序使用,而不使用public修饰的类则不能被外部程序使用。

类中定义的变量,可以称为类的‘’属性property‘’,或‘’成员变量member variable'。

通过类可以自定义新的变量类型。这种新的自定义类型与数组类似,只是其成员的类型可以是各种不同的

基本或非基本类型,而不必像数组所有成员的类型都一致。

例如定义新类型book。

public class Book {

String bookName ;//书名

String firstAuthor;//书的第一作者

String authors;//书的其他作者

int bookNumber;//书的页数

int bookSize;//书是多大的,例如32开,16开等

String language;//书的语言

}

定义完了就可以在其他的程序中使用Book这种类型。

可先声明一个Book变量:Book math1;  再创建一个Book对象赋值给Book变量:math1=new Book()。

然后就可以使用math1这个Book变量了:math1.bookName="飞屋环球记";math1.bookNumber=56;

对于在另一个类中调用Book类时,默认情况下,类和类中使用的其他类的源文件要放在同一个目录下。若在其他文件夹中

也可在代码中注明路径。

java编译器会在找不到     .class文件但可以找到源文件的情况下,会自动对源文件(.java文件)进行编译并使用

产生出来的.class文件。

引用外部的类,创建类对象object赋值给一个已声名的引用reference,reference只是指向某个具体的object

的索引而已。所以一个object可以有多个reference,reference的性质同数组名,object的性质同数组元素。

如下创建的类BookShelf中science1和position都是引用,java会为每一个创建的对象赋初值。

package BookShelf;

import Book.Book;

public class BookShelf {

Book science1;

String position;

int floors;

}

当创建一个BookShelf对象时,引用的初始值为null,整型默认值为0.

public class library1 {

public static void main(String[] args){

BookShelf geography;

geography = new BookShelf();

System.out.println(geography.science1);

System.out.println(geography.position);

System.out.println(geography.floors);

}

上述输出结果为:

null

null

0

当引用的值为null时,表示该引用目前不指向任何的对象,当使用值为null的引用时,就是在访问一个不存在

的东西,这时会出现错误.

定义类时,可以为其赋初值

public class BookShelf {

Book science1=new Book();

String position="block 2";

int floors=4;

}

如上对BookShelf的属性science1、position、floors都进行了赋初值,这样在其他程序里定义BoolShelf对象时

其各属性的初始值如下:

public static void main(String[] args){

BookShelf geography;

geography = new BookShelf();

System.out.println(geography.science1);

System.out.println(geography.position);

System.out.println(geography.floors);

System.out.println(geography.science1);

geography.science1=new Book();

System.out.println(geography.science1.bookName);

}

输出结果为:

Book.Book@15db9742

block 2

4

Book.Book@15db9742  //这应该表示对象中属性Book.Book的地址

道德经

在定义类时,可以自己引用自己,例:

public class Book {

String bookName="道德经" ;//书名

String firstAuthor="";//书的第一作者

String authors="朱熹";//书的其他作者

int bookNumber=5;//书的页数

int bookSize=16;//书是多大的,例如32开,16开等

String language="chinese";//书的语言

Book firstPublication;

但是,在类Book中若为firstPublication附初值new Book(),则会造成死循环,出现错误:StackOverflowError.

java的类class 和对象object的更多相关文章

  1. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  2. java synchronized类锁,对象锁详解(转载)

    觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...

  3. Java面试之基础题---对象Object

    参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...

  4. 【python系统学习13】类(class)与对象(object)

    目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ...

  5. Java的类锁、对象锁和方法锁

    在Java中,对于synchronized关键字,大家看到的第一反应就是这个关键字是进行同步操作的,即得名"同步锁". 当用它来修饰方法和代码块时,默认当前的对象为锁的对象,即对象 ...

  6. java匿名类和匿名对象及this的其他用法

    /* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, ...

  7. Java工具类 通过ResultSet对象返回对应的实体List集合

    自从学了JDBC用多了像一下这种代码: List<xxx> list = new Array<xxx>(); if(rs.next()){ xxx x = new xxx(); ...

  8. 第六章 类(Class) 和对象(Object)

    一.笔记导图 二.实例代码: public class PrintCarStatus{ public static void main(String[] args){ int speed; Strin ...

  9. Java自学-类和对象 类属性

    Java的类属性和对象属性 当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性 当一个属性被声明成类属性,那么所有的对象,都共享一个值 与对象属性对比: 不同对象的 对象属性 的值都可能 ...

随机推荐

  1. SVN-版本控制工具安装与使用

    什么是版本控制? 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新. 版本控制透过文档控制(documentation con ...

  2. Memcached遇到的问题及解决办法

    1. memcached make: *** No targets specified and no makefile found. Stop. 其实是因为在安装libevent时增加了版本号导致的, ...

  3. centos 安装npm node

    最近那vue全套造了个管理系统的轮子,发现node简直太好用了. elment-UI的出现就是不懂ui设计的后台工程师的福音~ 正好自己买的两个云服务器空闲着没用,就拿来试试看了 首先软件都安装在/u ...

  4. 昂达 v891 v1 终于 删除 windows 分区 并且恢复了容量。

    参考了很多文章(最后列出重要的),却始终失败. 途中因为乱改分区表,竟然fastboot 都进不去了,当时真是欲哭无泪. 总结关键点: 1) partition.tbl不能把硬盘剩余空间全给data分 ...

  5. 数据结构(C语言版)-C语言和C++相关补充

    引用类型作形参的三点说明 (1)传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化.(2)引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作:而一般变量作参数,形参与实参就占用 ...

  6. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  7. canvas学习之粒子动画

    项目地址:http://pan.baidu.com/s/1ccTptc 粒子动画意思就是把一个图片粒子画,然后使用粒子作出动画效果,主要两个问题:一个图片如何粒子化,这里面我们使用canvas的get ...

  8. 抽离amazeUI里面的弹出框

    花了一些时间读了amazeUI的源码 把他的弹出框给单独抽离出来了,具体可以见源码:http://pan.baidu.com/s/1mibQ9T2

  9. Could not find method google() for arguments [] on repository container.

    出这个问题主要是你Gradle版本太低的原因,一般要使用4.0+的版本 所以你需要更新你的Gradle版本至4.0+呦 tips:注意你的AndroidStudio版本应该是3.0以上,因为Gradl ...

  10. ubuntu下安装CAJ阅读器

    目录 1.ubuntu下wine的基本介绍 (1)wine的介绍 (2)wine的安装 (3)exe文件的安装 (4)exe程序的卸载 (6)wine的基本使用 2.CAJ阅读器的安装 (1)首先放上 ...