极客java08

0.final修饰符(上)

  • final修饰类:不可被继承

  • final修饰方法:不可被子类覆盖

  • final修饰变量:不可被赋值

  • 构造方法不能用final修饰

  • 用来修饰成员变量

    • 可以在构造方法中赋值,或者直接在定义的时候赋值
  • 用来修饰静态变量

    • 可以在初始的时候赋值,或者在static块中赋值
  • final修饰方法

    • 方法不可以被子类覆盖
  • final修饰形参

    • 形参变量就不能被赋值了
  • final修饰局部变量

    • 也是只能声明的时候就赋值,不能赋值两次

总结:final修饰变量必须要赋值,且只能赋值一次

1.final修饰符(下)

  • 当我们时用final修饰引用的时候
  • 引用指向对象不可以改变
  • 但是对象的内容时可以改变的

2.继承里的静态方法

  • 如果子类静态方法签名与父类相同的话,返回值必须相同

3.for语句的另一种写法

1
2
3
4
5
6
7
8
9
10
public double getBig() {
double max = -1;
for (MerchandiseV2 m:merchandise) {
if (m.getpPrice() > max) {
max = m.getpPrice();
}
}
return max;

}

4.万类之祖:Object类

所有的类,都直接或者间接继承自Object类

  • 常见的方法

    • toString()
    • getClass()
    • hashCode()
  • native代表会调用当前平台的方法

5.hashCode和equals方法(上)

  • hashCode可以翻译为哈希码,或者散列码,应该是表示对象的特征值的int整数
  • equals方法应该用来判断两个对象从 逻辑上是否相等

6.hashCode和equals方法(下)

  • 对于String类来说,编译器会对其进行特殊的优化
  • 如果两个String比较短,且 内容相同则java会使用同一个对象
  • 如果内容很+
  • 长就会打破限制

7.toString方法

  • 可以使用ide的功能自动生成toString的方法
  • 人一个java对象都可以调用toString方法

8.初探Class类

  • Class是代表类的类,每个Class类的实例,都代表了一个类

  • 通过一个类的Class实例,可以获取一个类所有的信息包括成员变量方法等

  • 动态参数
    • (String… args)
    • 必须放在最后一个参数的位置
  • 常见的方法

    • clazz.getField(“count”); 可以获得这个类中的一个成员变量
    • clazz.getMethod(“equals”,Object.class); 可以获这个类中的一个方法

9.初探反射

  • 使用反射可以访问属性

    1
    2
    Field countField = clazz.getField("count");
    System.out.println(countField.get(merchandise));
  • 使用反射可可以访问方法

    1
    2
    Method decMethod = clazz.getMethod("des");
    decMethod.invoke(merchandise);
  • 使用反射可以访问静态方法和属性

    1
    2
    Field staticField = clazz.getField("Static_Merber");
    System.out.println(staticField.get(null));

    静态的方法也是类似,在对象的位置写null即可

  • 使用反射可以访问private方法和属性

1
2
3
4
5
Field countField = clazz.getDeclaredField("count");
countField.setAccessible(true);
System.out.println(countField.get(merchandise));
countField.set(merchandise,999);
System.out.println(countField.get(merchandise));
你的支持是我最大的动力!
0%