美文网首页
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