4.对象与类

1.java.time.LocalDate

//构造一个表示当前日期的对象
static LocalDate now()
//构造一个表示给定日期的对象
static LocalDate of(int year, int month, int day)

int getYear()
int getMonthValue()
int getDayOfMonth()

//得到当前日期是星期几,作为一个DayOfWeek类对象返回
DayOfWeek getDayOfWeek()
//例如
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();

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

2. var

Java 10中,如果可以从变量的初始值推导出他们的类型,那么可以用关键字声明局部变量,而不需要制定起类型。
注意,var关键字只能用于方法中的局部变量。参数或是字段的类型必须声明。

3.关于参数null引用的问题

  • 当不希望参数为null引用时,宽容型处理方法为将其转换为一个合理的非null值,例如
if(n == null) name = "unknown"; else name = n;
//或是
name = Objects.requireNonNullElse(n,"unknown");
  • 严格性方法,直接拒绝null参数
Objects.requiewNonNull(n,"The name can not be null");
name = n;
//若n为null,会产生一个NullPointerException异常

4. inline问题

1.在c++中,通常在类外定义方法,例如

void Employee::raiseSalary(double byPercent){
}

如果在类内部定义方法,会被自动转换为内联(inline)方法。

2.在Java中,方法必须在类内部定义,是否转换为内联方法取决于java虚拟机,java虚拟机会将简短并且经常调用的方法转换为内联方法。

5.注意不要编写返回可变对象引用的访问器方法

例如

class Employee{
    private Date hireDay;
    public Date getHireDay(){
        return hireDay;
    }
}

Date对象是可变的,这就破坏了封装性。

应该改为

    public Date getHireDay(){
        return (Date) hireDay.clone();
    }

6.final实例字段

1.final字段必须在构造对象时初始化。
2.final对于类型为基本类型或是String这种不可变类的字段尤其有用
3.对于可变的类,使用final修饰符可能会造成混乱。
final关键字只是表示该字段不会在引用另外一个不同的对象,但是该对象本身可以改变。

7.Java是按值传递的

  1. 方法不能修改基本数据类型的参数(即数值型或者布尔类型)
  2. 方法可以改变对象参数的状态
  3. 方法不能让一个对象参数引用一个新的对象

8.对象的初始化

1.按照在类声明中出现的顺序,执行所有字段的初始化方法和初始化块
2.执行构造器主体代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值