将包含main方法的类称为主类。


  变量的作用域是指变量可以在程序中引用的范围。

  实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的。

  局部变量的声明和使用都在一个方法的内部。

  一个类的实例变量和静态变量称为类变量或数据域。在方法内部定义的变量成为局部变量。

  局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。(Java没有给局部变量赋默认值)

  无论在何处声明,类变量的作用域都是整个类。类的变量和方法可以在类中以任意顺序出现。但当一个数据域是基于对另一个数据域的引用来进行初始化时则不是这样。在这种情况下,必须首先声明另一个数据域。

  类变量只能声明一次,但是在同一个方法内不同的非嵌套块中,可以多次声明相同的变量名。

  可以在一个方法的不同块里声明同名的局部变量,但是,不能在嵌套块中或同一个块中两次声明同一个局部变量。

  如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,而同名的类变量将被隐藏。


  可以把两个类放在同一个文件中,但是文件中只能有一个类是公共(public)类。此外,公共类必须与文件同名。源代码中的每个类编译成.class文件。


  构造方法在使用new操作符创建对象的时候调用,它是一种特殊的方法,有以下三个特殊性: 

  (1)构造方法必须具备和所在类相同的名字。

  (2)构造方法没有返回值类型,甚至连void也没有。

  (3)构造方法是在创建一个对象使用new操作符时调用的。构造方法的作用是初始化对象。

  构造方法具有和定义它的类完全相同的名字。和所有其他方法一样,构造方法也可以重载,这样更易于用不同的初始数据值来构造对象。


  通常一个类会提供一个没有参数的构造方法。这样的构造方法称为无参构造方法。


  一个类可以不定义构造方法。在这种情况下,类中隐含定义一个方法体为空的无参构造方法。这个方法称为默认构造方法,当且仅当类中没有明确定义任何构造方法时才会自动提供它。


  对象是通过对象引用变量来访问的,该变量包含对对象的引。

  本质上来说,一个类是一个程序员定义的类型。类是一种引用类型,这意味着该类类型的变量都可以引用该类的一个实例。

  从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是包含了对该对象的引用。严格地讲,对象引用变量和对象时不同的,但是大多数情况下这种差异是可以忽略的。

  Java中,数组被看做是对象。数组使用new操作符创建的。一个数组变量实际上是一个包含数组引用的变量。


  通常,我们创建一个对象,然后将它赋值给一个变量,之后就可以使用这个变量来引用对象。有时候,一个对象在创建之后并不需要引用。在这种情况下,可以创建一个对象,而并不将它明确地赋值给一个变量。这种方式创建的对象称为匿名对象。


  如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的Java值null。null同true和false一样都是一个直接量。true和false是boolean类型直接量,而null是引用类型直接量。

  引用类型数据域的默认值是null,数值类型数据域默认值是0,boolean类型数据域的默认值是false,而char类型数据域的默认值是'\u0000'。但是Java没有给方法中的局部变量赋默认值。


  每个变量都代表一个存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。对基本类型变量来说,对应内存所存储的值是基本类型值。对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。

  将一个变量赋值给另一个变量时,另一个变量就被赋予同样的值。对基本类型变量而言,就是将一个变量的实际值赋给另一个变量。对引用类型变量而言,就是将一个变量的引用赋给另一个变量。


  Java运行系统会检测垃圾并自动回收它所占用的空间,这个过程称为垃圾回收。

  如果你认为不再需要某个对象时,可以显示地将该对象的引用变量赋null值。如果该对象没有被任何引用变量所引用,Java虚拟机将自动回收它所占的空间。


  静态变量被类中的所有对象所共享。静态方法不能访问类中的实例成员。

  实例变量是绑定到类的某个特定实例的,它是不能被同一个类的不同对象所共享的。如果想让一个类的所有实例共享数据,就要使用静态变量,也称为类变量。

  静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受到影响。

  Java支持静态方法和静态变量,无须创建类的实例就可以调用静态方法。

  要声明一个静态变量或定义一个静态方法,就要在这个变量或方法的声明中加上修饰符static。

  类中的常量是被该类的所有对象所共享的。因此,常量应该声明为final static。


  实例方法和实例数据都是属于实例的,所以它们在实例创建之后才能使用。它们是通过引用变量来访问的。静态方法和静态数据可以通过引用变量或它们的类名来调用。

  静态变量和方法可以在不创建对象的情况下访问。

  使用“类名.方法名”的方式调用静态方法,使用“类名.静态变量”的方式访问静态变量。这会提高可读性,因为可以很容易地识别出类中的静态方法和数据。


  实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。

  静态方法可以调用静态方法以及访问静态数据域。

  然而,静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象。

  在Math类中没有一个方法是依赖于一个特定实例的,例如:random、pow、sin和cos。因此,这些方法都是静态方法。main方法也是静态方法,可以从类中直接调用。


  可见性修饰符可以用于确定一个类以及它的成员的可见性。

  可以在类、方法和数据域前使用public修饰符,表示它们可以被任何其他的类访问。如果没有使用可见性修饰符,那么则默认类、方法和数据域是可以被同一个包中的任何一个类访问的。这称作包私有或包内访问。

  private修饰符限定方法和数据域只能在它自己的类中被访问。

  如果一个类没有被定义为共有类,那么它只能在同一个包内被访问。

  可见性修饰符指明类中的数据域和方法是否能在该类之外被访问。在该类之内,对数据域和方法的访问是没有任何限制的。

  修饰符private只能应用在类的成员上。修饰符public可以应用在类或类的成员上。在局部变量上使用修饰符public和private都会导致编译错误。

  大多数情况下,构造方法应该是共有的。但是,如果想防止用户创建类的实例,就该使用私有构造方法。


  数据域封装:将数据设为私有保护数据,并且使类易于维护。


  给方法传递一个对象,是将对象的引用传递给方法。

  Java只有一种参数传递模式:值传递。

  当传递基本数据类型参数时,传递的是实参的值。传递引用类型的参数时,传递的是对象的引用。


  数据既可以存储基本类型值,也可以存储对象。

  对象的数组实际上是引用变量的数组。

  当使用new操作符创建对象数组后,这个数组中的每个元素都是默认值为null的引用变量。


  可以定义不可变类来产生不可变对象。不可变对象的内容不能被改变。

  如果一个类是不可变的,那么它的所有数据域必须都是私有的,而且没有对任何一个数据域提供set方法。一个类的所有数据都是私有的且没有修改器方法并不意味着它一定是不可变类。

  要使一个类成为不可变的,它必须满足下面的要求:

  (1)所有数据域都是私有的。

  (2)没有修改器方法。

  (3)没有一个返回指向可变数据域的引用的访问器方法。


  关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法去。

  关键字this是指向调用对象本身的引用名。可以用this关键字引用对象的实例成员。

  this关键字可以用于引用类的隐藏数据域。例如,在数据域的set方法中,经常将数据域名用作参数名。在这种情况下,这个数据域在set方法中被隐藏。为了给它设置新值,需要在方法中引用隐藏的数据域名。隐藏的静态变量可以简单通过“类名.静态变量”的方式引用。隐藏的实例变量就需要使用关键字this来引用。

  关键字this可以用于调用同一个类的另一个构造方法。

  Java要求在构造方法中,语句this(参数列表)应在任何其他可执行语句之前出现。

  如果一个类有多个构造方法,最好尽可能使用this(参数列表)实现他们。通常,无参数或者参数少的构造方法可以用this(参数列表)调用参数多的构造方法。这样做通常可以简化代码,使类易于阅读和维护。


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

  1. Java基础-对象与类

    面向对象程序设计概述 面向对象的程序设计(简称OOP)时当今主流的程序设计范型,已经取代了"结构化"过程化程序设计开发技术,Java是完全面向对象的. 类 类设计构造对象的模板或蓝 ...

  2. 一天一个Java基础——对象和类

    1.在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象 2.可以在类中设置两种类型的元素:字段(也被称作数据成员)和方法(也被称作成员函数) 3.字段可以是任何类型的对象 ...

  3. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  4. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  5. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  6. 快乐编程大本营【java语言训练班】 6课:用java的对象和类编程

    快乐编程大本营[java语言训练班] 6课:用java的对象和类编程 第1节. 什么是对象和类 第2节. 对象的属性和方法 第3节. 类的继承 第4节. 使用举例:创建类,定义方法,定义属性 第5节. ...

  7. Java的对象与类,继承

    Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...

  8. 《java基础——对象的拷贝》

    java基础--对象的拷贝 一.浅拷贝: 规则: 1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化. 2. 浅拷贝相当于两个对象共用一套实例. 格式: 类名 对象 ...

  9. 你真的了解JAVA中对象和类、this、super和static关键字吗

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...

随机推荐

  1. Row_number() OVER(PARTITION BY xxx ORDER BY XXX)分组排序

    --//创建一个信息表 ,) ,),st_name ),class ),score ,)) --//插入测试数据============start=================== insert ...

  2. 前端怎样学习react

    这是一个很长的话题.....慢慢写

  3. SQL Server 2008数据备份与还原的原理是什么?

    为什么SqlServer有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的SqlServer数据 ...

  4. leetcode: 字符串

    1. palindrome-partitioning Given a string s, partition s such that every substring of the partition ...

  5. EF写INNER JOIN 链接

    面对多表的查询,一般都是多表连接后下面再写条件,但是有一种写法可以提升一下EF生成的语句的效率 首先先去查询每一个表,把每一个表对应的条件附加上去,注意:过滤数据最多的条件放在首先位置 var lt ...

  6. Python实现接口测试中的常见四种Post请求数据

    前情: 在日常的接口测试工作中,模拟接口请求通常有两种方法, 利用工具来模拟,比如fiddler,postman,poster,soapUI等 利用代码来模拟,使用到一些网络模块,比如HttpClie ...

  7. 2018.8.19 mybatis 环境搭建---配置mysql 。(Windows环境下面)

    安装mysql Install/Remove of the Service Denied!错误的解决办法 在windos 的cmd下安装mysql 在mysql的bin目录下面执行: mysqld - ...

  8. c#中的 MessageBox 弹出提示框的用法

    MessageBox.Show(<字符串str> Text, <字符串str> Title, <整型int> nType,MessageBoxIcon); 例:Me ...

  9. 在matlab中查看变量的数据类型

    >> x = x = >> class(x) ans = double

  10. Media所有参数汇总

    Media所有参数汇总 我们最常需要用到的媒体查询器的三个特性,大于,等于,小于的写法.媒体查询器的全部功能肯定不止这三个功能,下面是我总结的它的一些参数用法解释: width:浏览器可视宽度. he ...