1.一切都是对象

1.一切都是对象-四曲博客
1.一切都是对象
此内容为免费阅读,请登录后查看
0
免费阅读

用引用操纵对象

操作的标识符实际上是对象的一个“引用”,没有一个对象与之相关联,引用也可存在

String s;

在这里,只是创建了一个引用,但是没有创建一个与之相关联的对象,因此,不能直接使用,正确的做法是在创建一个引用的同时便进行初始化

String s="abcd";

必须由你创建所有对象

  • 对象存储的位置
  1. 寄存器,寄存器位于处理器内部,是速度最快的存储区域,但是容量较小,寄存器是根据需求进行分配,你不能直接控制
  2. 堆栈,位于通用RAM中,在进行内存控制时,会控制指针的上下移动来分配内存,但是在创建程序时,java系统必须知道存储在堆栈内所有项目的确切周期,以便于上下移动堆栈指针,限制了程序的灵活性
  3. 堆,一种通用的内存池,编译器不需要知道存储的数据在堆里存活了多长时间,因此,在堆里分配存储有很大的灵活性,只需要new一个对象即可
  4. 常量存储,常量值通常直接存放在程序代码内部,因为它们永远不会被改变
  5. 非RAM存储,数据独立于或程序之外,可以不受程序的任何控制,在程序没有运行时也可以存在
  • 特例:基本类型
基本类型 大小 最小值 最大值 包装器类型
boolean Boolean
char 16-bit Unicode o Unicode 2**16-1 Character
byte 8-bit -128 +127 Byte
short 16-bit -2**15 +2**15-1 Short
int 32-bit -2**31 +2**31-1 Integer
long 64-bit -2**63 +2**64-1 Long
float 32-bit IEEE754 IEEE754 Float
double 64-bit IEEE754 IEEE754 Double
void Void
  1. 基本类型,不使用new来创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,因此更加高效
  • 数组

Java会确保数组被初始化,而且不能在它的范围之外被访问,当创建一个数组时,实际上就是创建了一个引用数组,并被设置为null,表示还没有被指定一个对象,如果直接运行,会报错,如果创建一个基本类型的数组,则编译器会将该数组所占用的内存全部清零

永远不要销毁对象

  • 对象的作用域
{
    String s=new String("a string");
}

在以上代码中,在作用域结束之后,对象依然存在,但是引用s却在作用域结束之后消失了,因此我们无法在作用域之外来访问这个对象,Java有一个垃圾回收器,会自动释放这些已经无法访问的对象,避免内存泄露的问题

创建新的数据类型:类

  • 基本默认值

在类的成员变量之后,即是没有进行初始化,Java也会确保它获得一个默认值,但是这个初始化的方法不适用于“局部变量”(非某个类的字段),因为,在不初始化情况下,你可以并不知道它会是什么

基本类型 默认值
boolean false
char ‘\uoooo’(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
  • 方法、参数和返回值
  1. 方法的定义如下:
returnType methodName(/*argument list*/){
    /*Method body*/
}
  1. 参数列表

参数列表指定要传递给方法什么样的信息,这些信息采用的都是对象形式,因此,在参数列表中必须指定每个所传递对象的类型以及名字,这里的传递实际上也是引用,并且引用的类型必须正确

  1. return可以用来让方法返回一个值,也可以作为退出方法来使用

构建第一个Java程序

  • 名称可见性

为了避免名称的重复,java设计者希望程序员反过来使用自己的internet域名,这样,可以给一个类库生成不会与其他名称混淆的名字,比如:cn.siqulab.utility.foibles,用句点来表示目录的划分

  • 运用其他构件

如果想在程序当中使用预定义好的类,可以使用import语句来导入一个类库,大多数时候,我们使用与编译器附在一起的java标准类库力的构件。有了这些构件,就不用写一长串的反转域名

import java.util.ArrayList;

如果想要导入util中的几个,但是又不想一个个声明,那么可以使用通配符

import java.util.*;
  • static关键字

如果有时只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少个对象,甚至根本就不创建任何对象。另一种情形是,想要没有创建对象,也可以调用这个方法,就可以使用static关键字

class StaticTest{
    static int i=47;
}
StaticTest st1=new StaticTest();
StaticTest st2=new StaticTest();

虽然创建了两个对象,但是st1.i与st2.i都指向同一个存储空间

引用static变量有两种方法,创建对象之后进行访问与利用类直接访问

你的第一个java程序

import java util.*;
public class hello{
    public static void main(String[] args){
        System.out.println("hello");
        System.out.println(new Date());
    }
}
  1. 使用import导入额外的类,java.lang这个类会被默认导入java的所有类当中,因此所有,它的类都可以直接使用
  2. System类有许多属性,out是一个PrintStream对象,因为是静态的,所以不需要创建任何东西,out对象便已经存在了
© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
四曲的头像-四曲博客

昵称

取消
昵称表情代码图片