Skip to main content

学习Java

关于,面向对象#

类用于客观世界里某一类对象的共同特征,而对象则是类的具体存在,Java程序使用类的构造器来创建该类的对象

构造器用于对类实例进行初始化操作,构造器支持重载。


对于一个类定义而言,可以包含三种最常见的成员:构造器、成员变量和方法。#

static修饰的成员不能访问没有static修饰的成员

成员变量用于定义该类或该类的实例所包含的状态数据,方法则用于定义该类或该类的实例的行为特征或者功能实现。构造器用于构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。

命名#

成员变量应该由一个或多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写。方法名的命名规则与成员变量的命名规则基本相同。


static修饰的成员表明它属于这个类本身,而不属于该类的单个实例。因为通常把static修饰的成员变量和方法也称为类变量、类方法。不使用static修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。通常把不使用static修饰的成员变量和方法也成为实例变量、实例方法。


构造器是一个特殊的方法,构造器名必须和类名相同。 构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但是java会把这个所谓的构造器当成方法来处理---它就不是构造器。 实际构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例 创建对象的根本途径是构造器


Person p;   //使用person类定义一个person类型的变量p = new Person();   //通过new关键字调用Person类的构造器,返回一个Person的实例,将Person
或者Person p = new Person();    //定义p变量的同时为p变量赋值

Person p = new Person(); 这行代码创建了一个Person实例,也被称为Person对象,这个Person对象被赋给p变量。 在这行代码实际产生了两个东西,一个是p变量,一个是Person对象。 程序中定义的Person类型的变量实际上是一个引用,它存放在栈内存中,指向实际的Person对象。而真正的Person对象则存放在堆(heap)内存中。


栈内存里的引用变量并未真正存储对象的成员变量,对象的成员变量数据实际存放在堆内存里;而引用变量只是指向该堆内存里的对象。从这个角度看,引用变量与C语言里的指针很像,他们都是存储一个地址值,通过这个地址来引用到实际对象。实际上,Java里的引用就是C里的指针。 p引用变量本事只存储了一个地址值,并未包含任何实际数据。但它指向实际的Person对象,当访问p引用变量的成员变量和方法时,实际上是访问p所引用对象的成员变量和方法。


如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,Java的垃圾回收机制将回收该对象,释放该对象所占的内存区。 因此,如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可。也就是把这些引用变量赋值为null。


this关键字总是指向调用该方法的对象 this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或实例变量。

没有使用static修饰的成员变量和方法都必须使用对象调用。

this可以代表任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的:它所代表的只能是当前类的实例,只有当这个方法被调用时,它所代表的对象才被确定下来:谁在调用这个方法,this就代表谁。

java允许对象的一个成员直接调用另一个成员,可以省略this前缀。

static修饰的方法属于类,而不属于对象。 Java编程时不要使用对象去调用static修饰的成员变量、方法,而是应该使用类去调用static修饰的成员变量、方法。


方法#

在结构化编程语言里,函数是一等公民,整个软件由一个个的函数组成;在面向对象编程语言里,类才是一等公民。整个系统由一个个的类组成。因此在Java语言里,方法不能独立村子,方法必须属于类或对象。

Java语言是静态的。一个类定义完成后,只要不再重新编译这个类文件,该类和该类的对象所拥有的方法是固定的,永远都不会改变。

同一个类的一个方法调用另外一个方法时,如果被调用方法是普通方法,则默认使用this作为调用者;如果被调方法是静态方法,则默认使用类作为调用者,表面上看起来某些方法可以被独立执行,但实际上还是使用this或者类作为调用者。

方法重载#

Java程序中确定一个方法需要三个要素: 调用者,也就是方法的所属者,既可以是类,也可以是对象。 方法名,方法的标识 形参列表,当调用方法时,系统将会根据传入的实参列表匹配。