一切都是对象
1、用引用操纵对象
在java中几乎一切都被看做对象,我们操作的标识符实际上只是对象的引用,类似于与电视与遥控器的关系,我们通过遥控器(对象)来操作电视(对象),同时应用可以独立存在;即一个应用,并不比需要一个对象与其相关联;
比如:
public class Main {
public static void main(String[] args) {
Tv tv;
// 此处创建的仅仅使应用,而没有将其赋予对象
System.out.println(tv);
// 会报错,tv 没有初始化
}
}
class Tv{
private float price;
public void changeTV(){
System.out.println("change the TV show");
}
}
因此最好的方法为,一旦创建了应用,即刻为其提供操作的对象---初始化;
2、对象由自己创建
创建对象一般采用new 关键字
应此有:
Tv tv=new Tv();
System.out.println(tv.getClass());
2.1、对象的存储位置
可存储位置有5种
1.寄存器:速度最快的存储区
2.堆栈:位于RAM中,存放的是对象的引用,同时,堆栈遵循先进后出的原则,指针向上则为释放内存,向下则为分配新的内存;
3.堆:一种通用的内存池,用于存放java的所有对象;
4.常量储存:直接存储在程序内部;
5.非RAM存储:流对象和持久化对象,将对象转化为可以存放在
其他媒介的事物,如Serilizable 接口 和字节流;
2.2、基本类型
java 共有八大基础数据类型,由它们创建的变量,直接存储值,保存在堆栈中;(创建的时候,创建的是非应用的自动变量)
每种基本变量都有已经确定了自己的存储空间大小,其大小不会改变;
每个基本类型都有默认的包装类;
2.3、java中的数组
java创建数组时实际上创建的是引用数组,并且每个数组会被自动初始化,null
,java编译此关键字,表示该引用未创建任何对象;
3、对象的自动清理
3.1、作用域
{
int a=9;
{
int c=12;
System.out.println(a);
System.out.println(c);
}
System.out.println(a);
//System.out.println(c); out of scope
}
{
int a=9;
{
int a=12; // Illegal
a=12; // 重新赋值
}
}
3.2、对象的作用域
java的对象和基本类型具备不同的生命周期,它可以存活在作用域之外;
{
String s=new String("hello");
//end of scope
}
引用s
的作用域已经消失,但是其指向的对象还继续占据内存空间;
而后靠垃圾回收期
对闲置对象进行清理;
4、类的创建
class
关键字:表示将要创建一个类;
类拥有两种类型的元素,方法以及字段;
即成员变量和成员函数
成员变量可以是任意类型的对象,也可以是基本对象;
class Tv{
float price;
float width;
double height;
...
}
Tv tv=new Tv();
想要修改和获得成员变量:
{
Tv tv=new Tv();
System.out.println(tv.price);
tv.price=12.0f;
System.out.println(tv.price);
}
0.0 //默认值
12.0 //所附值
每个基本数据的成员变量可以不进行初始化,因为已经存在默认值了,
基本成员变量默认值:(局部变量不符合...)
5、方法、参数与返回值
java子程序(函数),使用方法来命名,其基本组成部分包括:
名称、参数、返回值和方法体;
ReturnType methodName(/* Argument list */){
method body
}
java的方法只能作为类的一部分来创建和调用;
若无返回值,则采用void
作返回类型(可以采用 return
关键字结束);