在Java里,一切都被视为对象,但操纵的标识符实际是是对对象的一个引用。
例如: 下面的语句创建了一个引用,可以用来操纵句子或者词语。
String s;
这里创建的只是一个引用,并不是对象。
创建一个引用的同时便进行初始化:
String s = "adb";
一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现这一目的。new关键字的意思是“给我一个新的对象”。所以上面的语句可以写成:
String s = new String("abc");
通过提供一个初始字符串,给出了怎样产生这个String的信息。
java中,所有的数值类型都是带有正负号的,没有无符号的数值类型。
boolean类型所存储的空间没有明确指定,仅仅定义为能够取字面值true或者false。
基本类型具有的包装器类,使得可以在杜仲创建要给非基本对象,用来表示对应的基本类型。例如:
char c = 'x';
Character ch = new Character(c);
也可以写成
Character ch = new Character('x');
Java SE5引进的自动包装功能将自动地将基本类型转换为包装器类型:character ch = 'x';
并可以反向转换: char c = ch;
在Java中,创建一个数组对象,实际上就是创建了一个引用数组, 并为每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null,。在使用任何引用之前,必须为其指定一个对象;如果试图使用一个还是null的引用,在运行时将会报错。
作用域
作用域由花括号的位置决定。
在作用域里定义的变量只可用于作用域结束之前。
一旦定义了一个类,就可以在类中设置两种类型的元素:字段(数据成员)和方法(成员函数)。字段可以是任何类型的对象,可以通过其引用与其进行通信;也可以是基本类型中的一种。如果字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个实际的对象(使用new来实现)相关联。
Java的方法决定了一个对象能够接收什么样的信息。方法的基本组成部分包括:名称、参数、返回值和方法体。其形式如下;
ReturnType methodName(Argument lsit) {
method body
}
返回类型描述的是在调用方法之后从方法返回的值。参数列表给出了要传给方法的信息的类型和名称。方法名和参数列表(合称:方法签名)唯一地标识出某个方法。
java中的方法只能作用类的一部分来创建。方法只有通过对象才能被调用,且这个对象必须能执行这个方法调用。通过对象调用方法时,需要先列出对象名,紧接着是句点,然后是方法名和参数列表。例如:objectName.methodName(arg1, arg2, arg3);
有一个方法f(),不带任何参数,返回类型是int。
如果有个名为a的对象,可以通过它调用f()就可以这么写: int x = a.f();返回值的类型必须要与x的类型兼容。这种调用方法的行为通常被称为发送信息给对象。在本例中,消息是f(),对象是a。面向对象的程序设计通常简单地归纳为“向对象发送消息。”
return关键字的用法,它包括两个方面:首先,它代表“已经做完,离开此方法”。其次,如果此方法产生了一个值,这个值要放在return语句后面。
如果返回值类型是void,那么return关键字的作用只是用来退出方法。
为了尽可能的消除所有可能出现的混淆情况。可以使用import来准确的告诉编译器想要的类型是什么。import只是编译器导入一个包,也就是一个类库。
static关键字
存在的两种情况:
1.只想为特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。 |
2.希望某个方法不与包含它的类的任何对象关联在一块儿。也就是说,即使没有创建对象,也能够调用这个方法。 |
通过static关键字可以满足以上两个方面的需要。当声明一个事物是static时,就意味着这个域或者方法不会与包含它的那个类的任何对象实例关联在一起。所以即使从未创建某个类的任何对象,也可以调用其static方法或者访问其static域。
而一般情况下,你必须创建一个对象,并用它来访问数据或者方法。因为非static域和方法必须知道它们一起运作的具体对象。
只需要将static关键字放在定义之前,就可以将字段或者方法设定为static。
Class StaticTest {
static int I = 47;
}
现在,无论创建多少个StaticTest对象,StaticTest.i也只有一份存储空间,这两个对象共享同一个i。
引用static变量有两种方法。可以通过一个对象去定位它,如st.i;也可以通过其类名直接引用。使用类名是引用static变量的首选方式。
对于静态方法也类似于此。可以通过一个对象来引用某个静态方法,也可以通过特殊的语法形式ClassName.method()加以引用。定义静态方法的方式也与定义静态变量的方式相似:
class Incrementable {
static void increment() {
StaticTest.i++;
}
}
static方法的另一个重要作用就是在不创建任何对象的前提下就可以调用它。
static方法可以创建或者使用与其类型相同的被命名对象。
public static void main(String[] args)
public关键字是指这是一个可由外部调用的方法。main()方法的参数是一个String对象的数组。这里并没有用到args,但是java编译器要求必须这样做,因为args要用来存储命令行参数。