每周总结[1] 20190918-0925
作者:互联网
1.通配符的上限,下限
首先引入泛型的使用:
public class A<T>
{private T t;
public A(T t)
{this.t=t;}
}
通配符"?"表示任意类型。可以指定泛型上限,如:
public class B<? extends Number>
{A a=new A(8);}
是会报错的,因为使用"extends"关键字,规定了泛型上限为Number,"?"表示的类型必须是Number的子类,而子类不可以接受父类类型的参数。
还可以指定泛型下限,如:
public class C<? super String>
{A a=new A("ohh");}
是可以的,因为使用"super"关键字,规定了泛型下限为"Sting",那么"?"表示的类型必须是String的父类,作为父类,是可以接受各种子类的数据的。
2. 所有数值类的父类:Number.
数值类:Integer,Byte,Long,Short,
数值类有个范围:-128~127,在这个范围以外的数值是会被重新开辟空间存储的。
Integer a=100;
Integer b=100;
Systrm.out.println(a==b);
//运行结果为true
Integer c=2999;
Integer d=2999;
Systrm.out.println(c==d);
//运行结果为false
数值类判断值相等时要用equals()方法而不是"=="。
3. 编译型/解释型语言:
写好的代码先被编译器编译,但不是被编译成机器语言,而是编译成字节码(*.class),运行时,由JVM(Java虚拟机)将字节码一行一行地解释成机器码。
对于不同的操作系统有不同的虚拟机,因此说是真正实现跨平台。
4.泛型
是不存在泛型数组的。
5.泛型接口的实现
interface <T> ITheGeneric
{}
有两种实现方式.
(1)
第一种,类实现接口时,仍沿用泛型,如:
class Realize<T> implements ITheGeneric
{private T t;
public Realize(T t)
{this.t=t;}}
在类实例化对象时才声明具体类型。
Realize<Integer> r=new Realize();
(2)
第二种,实现类种就声明具体类型。
class Realize<Integer> implements ITheGenric
{}
这样在类实例化对象时不需要再声明具体类型。
6. 非线程安全/线程安全
ArrayList /Vector
StringBuilder/StringBuffer
HashMap /HashTable
非线程安全指的是,在多个线程同时操作一个对象(共享数据)时出现问题。
7. 线程
Thread类和Runable接口,其中Thread类是实现了Runable接口的。
8.单元测试需要放在 public class中。
9. float与double
float都是转化为doule类型参与运算的。
10. 栈的实现
基于数组:需要Object类型的数组,Maxsize,CurrentSize。
基于链表:需要CurrientSize.
11.队列的实现
栈Stack是类,队列Queue是接口,一般用其实现类LinkedList.
栈的方法有:push(Object o);
pop()//返回栈顶值并出栈
IsEmpty();
peek();
getSize();
队列的方法有:
add(Object o) ;
remove() pull(Object o)
isEmpty();
getSize();
其中,add和remove方法在遇到队列满和空时会抛出异常,而pull和方法只返回false.
12. import包要放在package后面
13. 树的高度,深度
高度:从叶子往上算。
深度:从根往下算。
14.树的优势:方便查找。
15.完全二叉树的特点:除了最后一层以外都是满的。
16.循环语句中注意循环条件。
比如:
int size=stack.size();
for(int i=0;i<size;i++)
{stack.pop();}
和
for(int i=0;i<stack.size();i++)
{stack.pop();}
是不同的,易出错。
标签:每周,0925,Realize,class,线程,泛型,Integer,public,20190918 来源: https://blog.csdn.net/weixin_41750142/article/details/101473657