美文网首页
002 一切皆对象

002 一切皆对象

作者: 猿笔记 | 来源:发表于2018-09-26 23:18 被阅读9次
    • 引用来操纵对象
      String a = "123";
    • 推荐做法:创建一个引用的同时便进行初始化
    • new关键词:创建一个新对象
      String s = new String("asdf");
      • 创建一个字符串对象,存储asdf
      • 创建一个引用对象s
      • 将引用对象s与字符串对象关联
    • 数据的存储管理
      • 寄存器:最快的存储区,根据需求进行分配,不能直接控制
      • 堆栈:位于RAM(随机访问存储器),通过堆栈指针来管理,明确生命周期;比如:对象引用
      • 堆:位于RAM,不知道生命周期;比如:对象
      • 常量存储:直接存放在代码内部,可选择放在ROM(只读存储器)
      • 非RAM存储:磁盘或其他机器
    • 基本数据类型
      • 不用new来创建变量
      • 变量是非引用的
      • 变量直接存储值,并置于堆栈
      • 每种基本类型都有固定大小的存储空间
      • 所有的数值类型都有正负号
      • boolean所占存储空间大小没有明确指定,仅可以取字面值true或false
      • 基本类型都有相应的包装类,且具备自动包装功能
    Character ch = 'x';
    char c = ch;
    
    • 高精度数字
      • BigInteger支持任意精度的整数
      • BigDecimal支持任意精度的定点数;特别是货币计算要使用,而不要用double、float
    • 数组
      • Java确保数组会被初始化,而且不能在范围之外被访问《=内存开销+下标检查
      • 使用任何引用前,必须指定一个对象,否则会报错
      • 创建数组对象,默认将引用赋值为null;数组对象实际上就是一个引用数组
      • 创建基本类型的数组,默认赋值为0
    • 作用域
      • 决定了在其内定义的变量名的可见性生命周期
      • 花括号的位置决定
    {
      int x = 12;
      // Only x available
      {
        int q = 96;
        //Both x & q available
      }
      //Only x available
      //q is out of scope
    }
    
      • 在作用域里定义的变量,只可用于作用域结束之前
      • //到行末的文字都是注释
      • 缩排格式便于阅读,且空格、制表符、换行不会影响程序的执行结果
    {
      int x = 12;
      {
        int x = 96;//非法,Java不允许隐藏
      }
    }
    
    • 对象的作用域
      • Java对象不具备和基本类型一样的生命周期
      • new创建的对象,可以存活于作用域之外
    {
      String s = new String("a string");
    }
    //引用s作用域结束
    //s执行的对象仍占据内存空间,由垃圾回收器来处理
    
      • 关键字class来定义类
    class ATypeName {
      /* Class body goes here */
    }
    
      • 通过new来创建对象
    ATypeName a = new ATypeName();
    
      • 字段和方法
        • 字段:数据成员
        • 方法:成员函数
        • 每个对象都有独立的存储其字段的空间
        • 普通字段不能在对象间共享
      class DataOnly {
        int i;
        double d;
        boolean b;
      }
      
      DataOnly data = new DataOnly();
      
        • 引用对象成员的方法:objectReference.member
      data.i = 46;
      myPlane.leftTank.capacity = 100;//级联模式
      
        • 基本成员默认值
      • 基本成员默认会被初始化,而局部变量不会
      • 方法、参数和返回值
        • 方法:决定了一个对象能够接收什么样的消息
        • 组成部分:名称、参数、返回值和方法体
      ReturnType methodName(/* Argument list */) {
        /* Method body */
      }
      
        • 方法名参数列表一起唯一地标识出某个方法
        • 方法只有通过对象才能被调用,且该对象必须能执行这个方法的调用
        • 调用方法:objectName.methodName(arg1,arg2,arg3); =>发送消息给对象
        • 参数列表:指定传递给方法什么信息;必须指定每个所传递对象的类型及名字
        • return关键字的含义:(1)方法完成(2)返回函数结果
        • void表示不想返回任何值
     void nothing() { 
       return;
      }
    
      • 通过来解决命名冲突,且都使用小写
      • import可以导入想要的类
    import java.util.ArrayList;
    或
    import java.util.*;//*是通配符
    

    注意:
    (1)向前引用:就是在定义类、接口、方法、变量之前使用它们

    class MyClass
    {
        void method()
        {
            System.out.println(myvar);
        }
        String myvar = "var value";
    }
    

    (2)Java允许向前引用

    • static关键字
      • 使用场景:(1)只想为特定域分配单一存储空间,而不去考虑要创建多少对象(2)希望某个方法不与包含它的类的任何对象关联在一起
    class StaticTest {
      static int i = 46;//所有StaticTest的对象共享i字段
    }
    
      • 静态字段的访问方法:(1)对象.字段(2)类.字段(推荐)
    class Incrementable {
      static void increment(){
        StaticTest.i++;
      }
    }
    
      • 静态方法的访问方法:(1)对象.方法(2)类.方法(推荐)
    • 小知识
      • 类名称必须和文件名相同
      • javac Hello.java //编译代码为class文件
      • java Hello //执行class文件
      • 注释的两种风格:
        (1)/* ... */ 多行注释
        (2)// 单行注释
      • 注释文档
        • /** ... */
        • javadoc是用于提取注释的工具
        • 类型:类注释、域注释、方法注释
        • javadoc只能为public和protected成员进行文档注释
        • 常见标签:@version @see @author @param @return @deprecated
      • 采用驼峰风格编写代码

    相关文章

      网友评论

          本文标题:002 一切皆对象

          本文链接:https://www.haomeiwen.com/subject/dhswwftx.html