Java学习笔记二十一(有关一些源码的函数和模糊点)

1、在String类的equals方法中,要求比较的是两个String类型的对象,而不能将一个String类型的对象和char数组类型的对象比较。

2、有关hashcode和equals。

     在Object类中,equals方法和==都是用来比较地址的,但是在不同的子类中,可能进行了不同的重写,就会导致某些类中,equals方法比较的是内容,==比较的是地址。

      在set集合中,由于元素不能重复,会涉及到hashcode和equals的问题。

      Hashcode不同,equals相同,可以存入

      Hashcode相同,equals相同,不可以存入

      Hashcode相同,equals不同,可以存入

      先判断hashcode再判断equals。

3、subString(int a,int b)方法包前不包后。

4、字符串的spilt()方法加入参数时指的是遇到该参数就拆分。例如字符串"a1b2c3",拆分命令String[] a = test.spilt("\\d");

指的是遇到整数就拆分,结果是abc。

5、栈和队列都属于线性表。

6、List<String> strings = new ArrayList<String>();

     String[] array1 = strings.toArray(); 

  此时的toArray没有参数,所以返回的是Object类型的数组,如果需要返回字符串型的,需要传入一个字符串换类型的对象strings.toArray(new String())。

7、

public class Test {
 public <T extends Comparable> T findLarger(T x, T y) {
  if (x.compareTo(y) > 0) {   
   return x;
  } else {
   return y;
  }
/*
     这里说明谁大返回谁的类型
*/
 }
 public static void main(String[] args) {
  Test t = new Test();
  <插入代码>
 }
}

下列选项放在<插入代码>处能编译通过的是:AC 
 A.Object x = t.findLarger(123, "456");     //使用object因为不确定返回的类型是integer还是string
 B.String x = t.findLarger("java",123); 
 C.int x = t.findLarger(123, new Integer(456)); 
 D.int x = (int) t.findLarger(new Double(123), new Double(456)); 

8、calendar的对象.getTime()返回的是Date的对象。

9、import使用 .* 时只能访问当前包下的类,不能访问子包下的类。如果import多个包,其中有相同的类名,则实例化有具体类的。如果都没有指明具体的类,则谁在前面用谁。

Import lianxi1.*;   //未指明具体类

Import lianxi.Student; //指明具体类

10、注解

(1)按照运行机制来分:运行时、源码、编译时

(2)按来源来分:JDK、第三方、自己定义的

11、Math类常用方法:

   ceil()  返回大于等于参数的最小整数

   floor() 返回小于等于参数的最小整数

   round() 返回四舍五入后的整数

12、数组是可以存不同类型的数据的,可以使用object数组。

    Object[] arr = {“123”,new Integer(“1”)};

       集合是不能存储基本数据类型的 长度不固定。

13、构造方法的作用:对象属性的初始化

        New的作用:类的实例化

14、成员变量对象的引用在堆里

        栈里放的是局部变量和参数

        值是地址

15、父类的方法抛出异常,子类可以不抛出异常,也可以抛出父类异常的子类异常,或是父类的部分异常。

16、this()和super()不可以同时出现在一个构造函数中,this.方法调用的是本类的方法,super.方法调用的是父类的方法。

17、final修饰的方法是可以重载的(不可以被重写哦,要分清这里面的概念)。

18、Java中的继承对构造方法是不继承的,只是调用,所以子类是没有继承父类的构造方法的。

19、final修饰的变量是不能二次赋值的,但是如果final修饰的变量没有赋初始值,且不是用static修饰的,则可以通过构造方法来赋值。

20、抽象类不必须提供抽象方法。

21、类的各种信息是在方法区里保存的(.class文件)

22、A是一个接口  public A doit()是可以的哦。
23、 ClassC、ClassB继承ClassA。

        ClassA p0 = new ClassA();
        ClassB p1 = new ClassB();
        ClassC p2 = new ClassC();
        ClassA p3 = new ClassB();
        ClassA p4 = new ClassC();

        <插入代码>
下列选项中放置在<插入代码>处,使程序编译正确的是:
A.p0 = p1;
B.p1 =p2;
C.p2 = p4;
D.p2 = (ClassC)p1;
正确答案:A

只有p0和p1不是同级关系。C来说是向下转型,需要强转。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值