牛客网刷题笔记 1

来源:互联网 发布:云计算 缩写 编辑:程序博客网 时间:2024/06/05 22:36

刷题

  1. 实验室锁门了,因为清明节,剑指Offer在教室,大话数据结构在教室,所有书都在教室。。。。除了电脑,所以刷刷题吧;记一下笔记;

1 多态是对于什么的? (未完成)

下面函数到底输出什么呢?

public class Base{    private String baseName = "base";    public Base()    {        callName();    }    public void callName()    {        System. out. println(baseName);    }    static class Sub extends Base    {        private String baseName = "sub";        public void callName()        {            System. out. println (baseName) ;        }    }    public static void main(String[] args)    {        Base b = new Sub();    }}

我依稀记得一个道理,b是父类的引用,所以虽然用子类初始化,但是能用的也只有父类有的;也就是说引用b可以使用父类有的一切;但是不能调用子类里特殊的部分;但是,他可以调用子类重写的函数;这就是多态;

挺厉害的是吧,我们来模拟一下过程,由于继承,所以构造函数先调用父类的,实例函数,先去找父类的,然后父类一看,诶,你是儿子,扔回儿子的函数中;这就形成了多态;但有一个问题,就是变量;变量这个货是没有多态性的;也就是说直接b.baseName 肯定是父类的,想得到子类的必须要使用get方法;就像上面callName想使用自己家的baseName发现啥也没有;所以自然是null;

2 浮点型的比较

不可将浮点变量用“==”或“!=”与任何数字比较。
千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将 if (x == 0.0) 转化为 if ((x>=-EPSINON) && (x<=EPSINON))
或者 if ( fabs(x) <=EPSINON) // fabs(x)取x的绝对值
其中EPSINON是允许的误差(即精度)。
一个实例
System.out.println(Math.pow(64, 1.0 / 3)); 输出为3.9999999999,不是4!!!!!

3 后台线程

将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。

4 静态方法的调用 与静态变量

简单来说,即便对象是null,也可以调用类的静态方法
静态变量只能在类主体中定义,不能在方法中定义

5 变量放在那里

用new创建的对象在堆区
函数中的临时变量在栈去
java中的字符串在字符串常量区

6 垃圾回收

参考
这里写图片描述

7 赋值

byte 最大是127;
boolean 不能是null

8 interface

只能用public+默认修饰词;什么private呀,protected呀,static都不能用

9 数据类型

  1. 基本数据类型(或叫做原生类、内置类型)8种:
    整数:byte,short,int,long(默认是int类型)
    浮点类型: float,double(默认是double类型)
    字符类型:char
    布尔类型:boolean
  2. 引用数据类型
    数组,类,接口;
    ps: string,数组都是对象啊,都已经有new关键字了!
    扩展:
    • 行为:
      基本类型只是一个值,没有任何行为
      对象类型有自己的行为
    • 内存分配:
      基本类型在栈内分配
      对象在堆内分配
      对象引用保存在栈内
    • 引用与值:
      基本类型是值类型,仅表示一个值,保存在栈内
      引用类型分两部分,对象引用保存在栈内,对象保存在堆内,
      访问变量,是使用的引用找对象

10 知识点

  1. final类的方法都不能是abstract,因为final类不能有子类
  2. throw用于抛出异常。
    throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。
  3. web会话跟踪:cookie,session,地址重写,隐藏域
  4. 优先选用接口,尽量少用抽象类,抽象类和接口都不能被实例化。
0 0
原创粉丝点击