【Java】对象与类

LocalData类

java.time.LocalDate;

static LocalTime now();
构造一个表示当前日期的对象。

static LocalTime of(int year,int month,int day);
构造一个表示给定日期的对象。

int getYear();
int getMonthValue();
int getDayOfMonth();
得到当前日期的年、月和日。

DayofWeek getDayOfWeek
得到当前日期是星期几,作为DayOfWeek类的一个实例返回。
调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期一,7表示星期日。

LocalDate plusDays(int n)
LocalDate minusDays(int n)
生成当前日期之后或之前n天的日期。

构造函数

在构造函数上C++与Java最大的区别是,Java所有的构造必须使用new在堆上构造。

值得注意的是,不要再构造函数里声明与实例域同名的局部变量。

在C++中,一般把方法定义在类的外面,把方法定义在类的里面就成立内联函数。但是在Java中没这个说法,是否是内联函数,将有虚拟机自行决定。


更改器和访问器

更改器其实就是set方法。通过set方法对成员变量进行更改。

访问器就是get方法。通过get方法获取成员变量的值。

要注意的是,对于get方法不要返回可变对象。可变对象的意思就是不用更改器就能该改变的值,毕竟想要改变值需要用set方法。


final

添加有关键字final的成员变量,说明在构造对象的时候必须初始化。并且之后的操作不能再对其修改


static

静态成员变量代表,所有的对象同时拥有着一个变量。

静态成员方法也只能访问静态成员变量。静态成员通过类名调用。(虽然对象也可以,但是不建议)


传参(重要)

在Java中,所有的传参都是按照值传递的方式。

传普通变量,是按值传递。

传类对象,也是按值传递。但是类对象使用new在堆上构造的,所以类对象其实保存的是一个地址,该地址对应堆上的对象。所以如果参数传的的是类对象,其实传的也就是那个地址的值的拷贝。

再强调一下:

  • 对于基本数据类型来说 “=”赋值操作是直接改变内存地址(存储单元)上的值。
  • 对于引用类型来说 “=” 赋值操作是改变引用变量所指向的内存地址。

对象构造

Java支持在类中写了成员变量后直接给一个初始值。甚至可以这样:

class Employee
{    
    private static int nextId;
    private int id = assignl();
    ...
    private static int assignl()
    {
        int r = nextId; 
        nextId++; 
        return r;
    }
}

注:

  1. 在Java的构造方法中如果第一句是this(..);那么这句话可以调用该类的另一个构造方法。
  2. 在Java的构造方法中还存在初始化块的概念。例子:
class Employee
{    
    private static int nextId;
    private int id;
    ...
    //初始化块
    {
        id = 1;
    }
    //静态初始化块
    static
    {
        nextId = 1;
    }
}

这些初始化块会在调用构造函数时在构造函数函数体之前执行。

先执行静态初始化块,再执行初始化块,最后执行构造函数。

并且如果静态初始化在主类中,那么会在main方法之前执行。


Java使用包(package)将类组织起来。包的作用就是防止名命冲突。

从编译的角度看,嵌套包之间没有任何关系。例如:java.util包和java.util.jar包

导包:使用import语句。该语句类似于C++中的namespace和using。

打包:package语句。

类的路径必须与包名匹配。


文档注释

JDK包含一个工具叫javadoc,它可以由源文件生成一个HTML文档。在源代码中添加/**开始的注释,可以将代码和注释保存在一个地方。

类注释

方法注释

  1. @param 变量描述
  • 这个标记将对当前方法的“param”(参数)部分添加一个条目。一个方法的所有@param标记必须放在一起。
  1. @return 描述
  • 这个标记将对当前方法添加“return”(返回)部分。
  1. @throws类描述
  • 这个标记将添加一个注释,用于表示这个方法有可能抛出异常。

类的设计技巧

  1. 保证数据私有
  2. 保证数据初始化
  3. 不要再类中使用过多的基本类型
  4. 将职责过多的类分解
  5. 类名方法名要能体现出其职责
  6. 优先使用不可变类
posted @ 2020-01-21 21:23  LampsAsarum  阅读(273)  评论(0编辑  收藏  举报