基础知识巩固二
关于继承方面,静态方法不能被覆盖,详细解释一下
我在A类中有两个方法一个是静态方法speak()一个是实例方法shout()
B类继承了A类,并且重写了这两个方法,我在两个类中的构造函数中分别调用这两个方法。
发现:静态方法speak()能正常输出A类中我写的代码,而shout实例方法却输出了子类B中我所写的代码,
意思也就是,B类中的实例方法覆盖了A类中的方法,而静态方法没有覆盖
总结:静态方法不能被覆盖。可以使用父类名.静态方法名的方式测试。
关于数组尺寸动态增加
平时我都是使用集合类ArrayList方法,前段时间看到里头的代码关于扩容的问题,也就是数组的默认容量是16
当添加数量超过这个值的时候,数组就需要扩容,思路是写个判断语句,然后新建一个容量是前者两倍的数组,
使用System.arraycopy()方法将原数组复制到新建的数组,注意这个方法没有大写。
代码:
1 public void push(int value){ 2 if(size>=elements.length){ 3 int[] temp = new int[elements.length*2]; 4 System.arraycopy(elements,0,temp,0,elements.length); 5 elements = temp; 6 } 7 }
第三关于js方面 , onkeyup = "method(event)"中的event
event: 事件对象。
当一个事件发生时,和当前这个对象发生的事件所有有关的信息都会临时保存在一个指定的地方-event对象,供我们需要时调用。就像是飞机的黑匣子。
事件对象必须在一个对象的事件调用函数中使用才有内容。
事件函数:事件调用的函数,一个函数是不是事件函数,不在定义时决定而是在调用的时候决定
注:IE/Chrome浏览器:event是一个内置的全局对象(可以直接使用)
笔记:
- 类中的常量是被该类的所有对象共享的,应申明final static
- 在局部变量上使用修饰符public 和private都会导致编译错误 注:防止用户创建类的实例,可以将构造方法设置成私有的。
- String.replace(oldChar,newChar)新字符替换
- String.replaceAll(oldString,newString)新子串替换
- "java".mathces("java") 通过正则表达式实现 "java".equals("java")通过哈希码实现
- 此外还有三个方法可以和正则表达式结合一起使用1、replaceAll() 2、replaceFirst() 3、split()
- 转换问题:字符串~字符数组 : toCharArray();
- 字符数组~字符串:1、valueOf(char[] c) 2、new String(char[] c)
- String.valueOf(5.44) :double~String
- Double.parseDouble("5.44"): String~double
- 十六进制转换为十进制:
- AB8C:10*16^3+11*16^2+8*16+12*1=43916
- 简化完后的表达式是:(...((h(n) * 16 + h(n-1))*16 + h(n-2)*16+...+h1)*16+h0)
- 判断一个字符是否是字母(isLetter(char))数字(isDigit(char))大些字母(isUpperCase(char))小写字母(isLowerCase(char))
- File类用来获取文件的属性和对文件进行操作(不包括创建文件以及向文件读写数据的方法)
- 要使一个类成为不可变的:1、所有数据域都是私有的2、没有修改器方法3、没有一个访问器方法,它会返回一个指向可变数据域的引用
- 类的抽象:将使用和实现分离
- 类的封装:实现的细节经过封装,对用户隐藏起来
- 重写方法:子类不可以重写父类的私有方法,静态方法不能被覆盖