关键字this
在Java中,this可以完成三件事情:调用本类属性,调用本类方法,表示当前对象。
-
在访问属性的时候,需要在变量前加上this。
-
关于this调用构造的限制 :使用 this() 调用构造方法形式的代码只能放在构造方法的首行;进行构造方法进行调用时,一定要保留调用的出口。
引用传递
在之前面向对象1的时候已经提过一次引用传递了。再次说明,引用传递的核心意义是:同一块堆内存空间可以被不同的栈内存所指向,不同栈可以对同一堆内存进行内容的修改。
关于的此处的理解 : 这个地方理解起来有点稍稍的绕
-
第一个理解点是 普通数据类型的传递。 普通数据类型在进行参数传递时使用的是值传递。 如果你想改变其中一个变量的值,那么可以通过函数里面使用set方法将其在堆内存里保存的数据做出改变。 但是!但是!如果只是在函数中进行了简单的数值修改,那么这个值是不会被改变的。
-
第二个就是String类型数据的的引用改变。 此刻有几个点要进行强调,它的两种修改结果和上面的普通数据类型是一样的,但是原理却是不同的。字符串的内容是不可改变的,都是通过引用变化实现对象内容的变化。
数据表和简单Java类映射
此处应注意示例代码的体会和一对多多对多映射。
static关键字
-
static定义属性 : 一个类的组成就是属性和方法(包括构造方法和普通方法),而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在不同的堆内存中),如果类中的某个属性希望定义为公共属性(所有的对象都可以使用的属性),则可以在声明属性前加上static关键字。所以如果用一个对象修改static定义的公共属性的时候,所有的对象的该属性都会发生变化。所以简单的用一个对象去修改公共属性的做法是很不合适的。最好的做法是由所有的对象的公共代表来进行访问,这个公共的代表就是类。所以利用static定义的属性是可以直接由类名称直接调用的。还有一个最大的区别就是 所有的非static属性必须产生实例化对象才可以进行访问,但是static属性不受实例化对象的控制,也就是说,在没有实例化对象产生的情况下,依然可以使用static属性。
【提示:常用内存区域 在Java中主要存在四块内存空间 One.栈内存空间:保存引用的堆内存空间的地址。 Two. 堆内存空间:保存每个对象的具体属性内容。 Three. 全局数据区:保存static类型的属性。 Third. 全局代码区: 保存所有的方法定义】
-
static方法不能直接访问非static属性或方法,只能调用static方法或属性。而非static方法可以访问static的属性或方法,不受任何限制。所以所以所以由于主方法存在static声明,所以主方法是一个static方法。而static方法只能调用static声明的方法,这样当在定义主类中其他方法的时候就必须使用关键字static。 如果此时方法取消了static,就变成了一个非static方法,所有的static方法必须由对象调用,也就是说此时的static方法如果想要使用非static操作,就必须产生对象才可以调用。
-
主方法 1.实现类实例化对象个数的统计 2.实现属性的自动设置
代码块
-
普通的代码块:如果一个代码块写在方法里就称它为普通代码块。 全局变量和局部变量的区别 : 全局变量和局部变量只是一种相对性的概念。
-
构造块:如果将一个代码写在一个类里,这个代码块就称为构造块。构造块在每一次的实例化类对象时都会被调用,而且优于构造方法执行。
-
静态块:如果一个代码块使用static定义,就称其为静态块。静态块有时需要分为两种情况。当有多个实例化对象产生时,静态块会优先调用,而且只调用一次。静态块的主要作用一般可以为static属性初始化。静态块还可以在主类中定义,静态块会优先于主方法执行。
内部类
所谓内部类指的就是在一个类的内部继续定义其他内部结构类的情况。
内部类最大的缺点就是破坏了类的结构性,但是它的牺牲也是由帮助的,它最大的帮助就是可以轻松的访问外部类的私有属性。